从PHP脚本运行linux命令?

时间:2012-01-14 06:52:24

标签: php command-line cgi

我知道这是一个简单的问题,但我不能为我的生活让它发挥作用。如果我通过SSH(linux)登录我的服务器并输入:/home/username/public_html/x/foo.cgi f=subscribe l=list e=abcd@gmail.com,脚本运行完美。但是,如果我试图通过PHP运行脚本:shell_exec("/home/username/public_html/x/foo.cgi f=subscribe l=list e=abcd@gmail.com");没有任何反应。

有人能指出我正确的方向吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

"什么都没发生"不是一个非常具有描述性的错误消息。然而,我想到了三种可能性:

  1. 服务器托管环境与shell环境之间的差异。
  2. 您的服务器或托管站点可能已禁用shell_exec或其他功能。
  3. 您可能需要以与SSH相同的用户身份运行PHP(或以其他方式获得正确的权限)。
  4. 由于配置错误或误用,其他一些堆栈处于混乱状态。
  5. 接受你的选择。检查您的日志。确保你没有留下任何可供攻击者进入的漏洞。

答案 1 :(得分:0)

如果您正在管理服务器,则很可能是权限问题。您的网络服务器正在以www-data或某个类似用户身份运行。它需要脚本文件的执行权限才能运行它。尝试使用chmod命令更改脚本的所有者,或者使用chown命令为您尝试运行更自由的访问权限。

另一件需要考虑的事情是,PHP is running in safe mode可能会禁用shell_exec。