PHP shell_exec not working


PHP shell_exec not working

我正试图在我的MacOSX上运行一个shell脚本,但它不起作用。我的report.sh文件调用另一个存储在/usr/local/bin中的.sh文件(Sweave.sh)。

<?php
shell_exec("./report.sh");
echo "Hello 123";
?>

它在我的浏览器上打印的是"你好123",但report.sh没有完成它的工作。为什么会发生这种情况?这是报告.sh:

# !/bin/bash
Sweave.sh -ld test_sweave.Rnw

如果调用/来自终端的report.sh,工作正常…感谢您的帮助!

编辑:如果我打电话/report.php,上面写着:

./report.php: line 2: ?php: No such file or directory
./report.php: line 4: syntax error near unexpected token `"./report.sh"'
./report.php: line 4: `shell_exec("./report.sh");'

如果您想通过命令行运行脚本,您必须:

a) 用这行启动文件

#!/path/to/php

b) 运行方式:

php report.php

如果这样做有效,可能是由于权限的原因,因为您的web服务器在与您不同的用户下运行。

感谢大家的评论,这是权限问题。我通过更改服务器"Documents"文件夹的权限解决了这个问题(我确信这不是最安全的方法,但我只是在测试)。

只需添加rw访问权限,成为所有者并应用于所附项目即可!

php -q report.php将在没有shebang(#!/path/to/php)的情况下工作