Edited at

Google Cloud Storage を PHPで。

メモ

・自分の場合はGCP用に複数アカウント作っているので、projcectIdに注意


はじめに

・コンテナ作成、公開は管理画面から

・PHPではアップロードのみ

・アップロードしたものは一般公開

・バケットとは、フォルダみたいなもの

・asia-northeast が東京リージョン

GCPトップ

https://console.cloud.google.com/home/dashboard


アップロード先のバケットを作成


バケット作成まで

ストレージを選択

1.png

バケットを作成

2.png

バケットをみんな見れるように

3.png

メンバーに allUsers と入力し、 ストレージオブジェクト閲覧者を クリック

4.png

ここまでで、公開用バケットの用意完了


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/your_bucket/your_upload_file.jpg

になる。

また nginx のリバースプロキシを使えば独自ドメインみたいに表示可能。


default.conf


server {

listen 443 ssl http2;
listen [::]:443 ssl http2;

//略

location ^~/gcp_storage/ {
proxy_pass https://storage.googleapis.com/your_bucket/;
}

}


設定したら service nginx restart 忘れずに。

以上で完了