我在EC2實例上,並且希望將我的PHP網站與我的Amazon S3存儲桶連接起來,我已經在這裏看到了PHP的API:http://aws.amazon.com/sdkforphp/,但目前還不清楚。如何將上傳的圖像存儲到AWS上的PHP S3
這是代碼行,我需要在我的控制器編輯:
thisFu['original_img']='/uploads/fufu/'.$_POST['cat'].'/original_'.uniqid('fu_').'.jpg';
我需要連接到Amazon S3和能夠改變這樣的代碼:
$thisFu['original_img']='my_s3_bucket/uploads/fufu/'.$_POST['cat'].'/original_'.uniqid('fu_').'.jpg';
我已經爲此目的配置了一個IAM用戶,但我不知道完成這項工作所需的所有步驟。
如何連接並與Amazon S3進行交互以上載和檢索公共圖像?
UPDATE
我決定用所建議的s3fs嘗試,所以我安裝了它描述here(我的操作系統是Ubuntu的14.04)
我從控制檯運行:
sudo apt-get install build-essential git libfuse-dev libcurl4-openssl-dev libxml2-dev mime-support automake libtool
sudo apt-get install pkg-config libssl-dev
git clone https://github.com/s3fs-fuse/s3fs-fuse
cd s3fs-fuse/
./autogen.sh
./configure --prefix=/usr --with-openssl
make
sudo make install
一切正常安裝,但接下來是什麼?我應該在哪裏聲明證書,以及如何在項目中使用此集成?
月2日更新
我創建了一個與我的IAM憑據accessKeyId:secretAccessKey
單一的代碼行稱爲.passwd-s3fs
文件。
我把它放到我的home/ubuntu
目錄,並把它與控制檯chmod 600 ~/.passwd-s3fs
下一個600允許我跑/usr/bin/s3fs My_S3bucket /uploads/fufu
的/uploads/fufu
裏面有我現在的所有鬥文件夾。然而,當我試試這個命令:
s3fs -o nonempty allow_other My_S3bucket /uploads/fufu
我收到此錯誤信息:
s3fs: unable to access MOUNTPOINT My_S3bucket : No such file or directory
3 UPDATE
至於建議我運行此fusermount -u /uploads/fufu
,在那之後我檢查了福福文件夾如預期的那樣是空的。 之後,我再次嘗試此命令(多一個-O):
s3fs -o nonempty -o allow_other My_S3bucket /uploads/fufu
,並得到該錯誤消息:
fusermount: failed to open /etc/fuse.conf: Permission denied
fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf
任何其他建議?
第四UPDATE 18/04/15
在建議從控制檯I運行sudo usermod -a -G fuse ubuntu
和sudo vim /etc/fuse.conf
其中I未註釋mount_max = 1000和user_allow_other
比我跑s3fs -o非空-o allow_other My_S3bucket /上傳/ fufu
乍一看沒有錯誤,所以我認爲一切都很好,但它恰恰相反。
現在我有點沮喪,因爲我不知道發生了什麼,但我的文件夾/uploads/fufu
被隱藏,使用ls -Al
我只看到這個
d????????? ? ? ? ? ? fufu
我不能sudo rm -r
或-rf
或mv -r
它說, /uploads/fufu is a directory
我試圖reboot exit and mount -a
,但沒有。
我試着用fusermount
卸載和錯誤消息是fusermount: entry for /uploads/fufu not found in /etc/mtab
但是我還是須藤的vim的/ etc/mtab中,我發現這條線:s3fs /uploads/fufu fuse.s3fs rw,nosuid,nodev,allow_other 0 0
有人能告訴我我該怎麼卸載最後刪除此文件夾/uploads/fufu
?
感謝您的建議...我喜歡使用PHP SDK但不知道如何,你是否說我不需要包括工廠方法來聲明我的IAM憑證?是否有可能爲桶url創建一個變量並使用它:'my_s3_bucket ='http:// link/to/my/s3'然後'$ thisFu ['original_img'] ='my_s3_bucket/uploads/fufu/'。$ _ POST ['cat']。'/ original _'。uniqid('fu _')。'。jpg';'? – NineCattoRules 2015-04-18 09:08:35
對不起,但我沒有收到有關新更新的通知。哇,謝謝你的詳細的解釋,這似乎很容易...相反,幾天前我用s3fs嘗試過,現在我的上傳文件夾被隱藏,無法以任何方式訪問(你可以閱讀我上面的第4次更新)。我想嘗試這種方法,但直到我有我的上傳文件夾的問題,我甚至不能嘗試。 – NineCattoRules 2015-04-19 10:07:48
我想如果我只是編輯帖子然後通知不會來......我很高興這個信息對你有用:)關於你的問題在更新4:我有點失去了什麼你的問題?禁用s3fs?爲什麼你不能只是來源文件夾,並使:「sudo使卸載」?順便說一句我看到你提到了一些權限問題,你是否從根或sudo命令? – 2015-04-19 10:28:44