PHP运行Shell脚本

7
我将为您翻译以下内容:“我试图从php前端运行一个shell脚本。”
以下是shell文件内容(run.sh已被更改为777权限):
#!/bin/bash
wget -O index.html http://markets.usatoday.com/custom/usatoday-com/html-mktscreener.asp
python hw7-9.py index.html 
echo "done";

这是PHP前端。
<?php
   $output = shell_exec("run.sh");
   echo "<pre>$output</pre>";
?>

但是这个PHP页面除了空白之外没有返回任何内容。
<pre></pre>

1
在你的shell命令末尾添加2>&1,例如:"run.sh 2>&1"。这将把任何错误重定向到标准输出,以便您可以进一步调试。 - WilHall
3个回答

1

你尝试过在你的PHP脚本顶部加入error_reporting(-1);吗?很可能你的服务器禁用了shell_exec


执行 shell_exec("ls") 没问题。但是一些像 python file.py 或 run.sh 这样的东西不起作用,我无法弄清原因。 - Kamran224

1
你会尝试使用以下代码吗? $output = shell_exec("sh run.sh");

这会输出“done”,但文件没有被下载,Python也没有被调用(wget似乎没有运行)。可能是因为它在不同的目录中运行? - Kamran224
你检查了运行脚本的目录权限了吗? - Nitesh
是的,我将所有文件设置为777,目录也设置成了相同的权限。 - Kamran224
首先在bash shell中通过sh run.sh运行shell脚本。看看它是否能正常工作。如果提供的php脚本和该脚本位于同一目录下,那么你的代码就没有理由不能工作。 - Nitesh
我已经测试过了,它可以正常工作。由于我在一个afs系统中,所以有些限制,但系统管理员说shell_exec已经解除了阻止。 - Kamran224

0
检查php/web服务器实际运行的用户 - 例如,“www-user”可能没有执行脚本正在尝试执行的操作的任何权限(这是有道理的)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接