Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 从PHP脚本运行S3cmd不起作用_Amazon S3_S3cmd - Fatal编程技术网

Amazon s3 从PHP脚本运行S3cmd不起作用

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被配置为

我想使用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被配置为根用户,而我是从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中执行任务,比如获取所有对象的大小和删除对象。