我在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