2014年9月4日 星期四

[PHP] 將圖片上傳到Google Cloud Storage



透過terminal用gsutil上傳圖片並不是難事,只要透過網頁取得OAuth2 Key後,就可以上傳了。
不過當我想在Apache+PHP 的環境下使用 gsutil ,就會遇到權限問題。

譬如在PHP下想要上傳檔案
<?php
    exec("gsutil cp /tmp/test.txt    gs://bucket/");
?>

會得到底下的錯誤
 **OSError: [Errno 13] Permission denied: '/var/www/.config'**

如果用暴力法修改權限(chmod 777 /var/www/),還是會遇到gsutil報錯
 **AccessDeniedException: 403 Insufficient Permission
 **CommandException: 1 files/objects could not be transferred.

比較好的方式還是用google提供的Google API Client Library for PHP
可惜目前還是beta版,範例很少,
這邊附上我試出的結果
1. 先申請Server Account


接著按"Generate new P12 key"

2. 把這個檔案放到Server

3. 接著修改下面的sample code
   這個範例在上傳同時,順便會把檔案權限設為Public Read

Sample Code:
https://github.com/Brandon-Lin/google-cloud-storage/blob/master/upload_file_using_service_account.php




沒有留言:

張貼留言