Amazon s3 从PHP脚本运行S3cmd不起作用
我想使用PHP脚本中的Amazon s3 从PHP脚本运行S3cmd不起作用,amazon-s3,s3cmd,Amazon S3,S3cmd,我想使用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被配置为
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被配置为根用户,而我是从PHP运行的,PHP是www数据。如果这是问题所在,我如何为www数据创建配置文件
帮帮我,我做错了什么
谢谢
编辑
我正在使用S3cmd。在我的cron脚本中运行命令。cron脚本是一个PHP脚本。运行cron的用户是web11,使用root用户配置s3cmd
因此,当我在PHP脚本中使用shell_exec()运行s3cmd时,它会失败。但当我在shell中运行时,它运行良好
s3cmd ls
这个很好用。因为我是使用root用户登录的
我尝试使用runuser命令运行它
runuser-l root-c“s3cmd ls”
这可以正常工作,并显示存储桶列表。但是当我使用
runuser-l root-c“s3cmd ls”
这是行不通的。我试图给出s3cmd的完整路径
/usr/bin/s3cmd ls
这在shell中有效,但在我的PHP脚本中不起作用
shell_exec('s3cmd --config=/root/s3cmd.conf ls');
我更改了php脚本的权限777,并使root成为该用户的所有者。但仍然不起作用
如何从PHP脚本运行s3cmd?我使用的是amazon Ec2实例。为什么不使用?您可以使用该方法获得相同的功能为什么不使用?您可以使用该方法具有相同的功能
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”
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”。实际上我想在cronjob中执行任务,比如获取所有对象的大小和删除对象。实际上我想在cronjob中执行任务,比如获取所有对象的大小和删除对象。