メモ
・自分の場合はGCP用に複数アカウント作っているので、projcectIdに注意
#はじめに
・コンテナ作成、公開は管理画面から
・PHPではアップロードのみ
・アップロードしたものは一般公開
・バケットとは、フォルダみたいなもの
・asia-northeast が東京リージョン
GCPトップ
https://console.cloud.google.com/home/dashboard
#アップロード先のバケットを作成
バケット作成まで
メンバーに allUsers と入力し、 ストレージオブジェクト閲覧者を クリック
ここまでで、公開用バケットの用意完了
#APIキーを取得
https://qiita.com/ngyuki/items/6c0782737ba327150c97
秘密鍵を作成してサーバーにアップロード(JSONファイルを取得するまでを参考に)
APIキーの準備OK
#composer で ライブラリをインストール
適当にパスは変えてね。
php /var/www/html/composer.phar require google/cloud-storage
そして、PHPで。
プロジェクトIDはこのぺーじの一番上の画像に乗ってるよ。
<?php
use Google\Cloud\Storage\StorageClient;
class HogesController extends AppController
{
public function test()
{
#
$projectId = 'project-id123456';
# Instantiates a client
$storage = new StorageClient([
'projectId' => $projectId,
'keyFile' => json_decode(file_get_contents('/hoge/your_secret_key.json'), true)
]);
$bucketName = 'your_bucket';
$bucket = $storage->bucket($bucketName);
$object = $bucket->upload(
fopen('/img/your_upload_file.jpg', 'r')
);
pr($object);
die;
$this->autoRender = false;
}
}
追記
以下をやると、画像の表示速度が遅くなるので、
https://storage.googleapis.com/...
って感じで直接リンクを貼った方が良い。
ファイルのアップロード先は
https://storage.googleapis.com/your_bucket/your_upload_file.jpg
になる。
また nginx のリバースプロキシを使えば独自ドメインみたいに表示可能。
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
//略
location ^~/gcp_storage/ {
proxy_pass https://storage.googleapis.com/your_bucket/;
}
}
設定したら service nginx restart 忘れずに。
以上で完了