【发布时间】:2013-01-21 17:07:30
【问题描述】:
我想在我的 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 用户并且我正在从 www-data 的 PHP 运行的问题。如果这是问题,我该如何为 www-data 创建配置文件。
帮我看看我做错了什么。
谢谢
编辑 我正在使用 S3cmd。在我的 cron 脚本中运行命令。 cron 脚本是一个 PHP 脚本。运行cron的用户是web11,s3cmd是用root用户配置的。
所以当我在 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 脚本中无效。
我更改了 php 脚本的权限 777 并使 root 成为该用户的所有者。但还是不行。
如何从 PHP 脚本运行 s3cmd。 ?我在亚马逊 Ec2 实例上。
【问题讨论】: