我想从PHP脚本中使用s3cmd
。一切都是从shell开始工作但同样不能用我的PHP脚本工作。
shell_exec('s3cmd --config=/root/s3cmd.conf ls');
这不起作用,然后我给了我的s3cmd安装的完整路径
shell_exec('/usr/sbin/s3cmd --config=/root/s3cmd.conf ls');
在PHP脚本中不起作用,但在命令中也是如此,
调用shell_exec的PHP文件位于webroot中。
可能是s3cmd配置为root用户的问题,我从PHP运行,这是www-data。如果这是问题,我该如何为www-data创建配置文件。
帮助我做错了什么。
由于
修改 我正在使用S3cmd。在我的cron脚本中运行命令。 cron Script是一个PHP脚本。运行cron的用户是web11,使用root用户配置s3cmd。
因此,当我在PHP脚本中使用shell_exec()运行s3cmd时,它会失败。但是当我在shell中运行时,它运行正常。
这很好用。因为我使用root用户登录。
我尝试使用runuser命令运行它
这很好用并显示存储桶列表。但是当我使用
运行时这不起作用。我试着通过提供s3cmd
的完整路径这适用于shell,但不适用于我的PHP脚本。
我更改了php脚本的权限777,并使root用户成为该用户的所有者。但仍然无效。
如何从PHP脚本运行s3cmd。 ?我在亚马逊Ec2 Instance。
答案 0 :(得分:1)
为什么不使用AWS SDK for PHP?您可以使用S3Client.listObjects()方法
使用相同的功能答案 1 :(得分:0)
shell_exec(' s3cmd --config = / root / s3cmd.conf ls');
这里可能缺少的是S3命令的目标" ls" ?!
它在PHP脚本中运行良好,如下所示:
exec("/usr/bin/s3cmd --config=.s3cfg info s3://YOUR-BUCKET/YOUR-FILE 2> /dev/null", $s3output, $s3return);
// switch due to return code (of shell !)
if($s3return == "0"){
echo "my file exists";
}
else {
echo "Error Code : " . $s3return;
}
这个,你跑了" s3cmd --configure"成功。