PHP shell_exec不能正常工作

时间:2012-09-02 05:00:45

标签: php shell sweave

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

<?php

shell_exec("./report.sh");
echo "Hello 123";

?>

它在我的浏览器上打印'Hello 123',但是report.sh没有做它的工作。 为什么会这样?这是report.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");'

3 个答案:

答案 0 :(得分:2)

如果要通过命令行运行脚本,则必须:

a)用这一行

启动文件
#!/path/to/php

b)运行:

php report.php

如果可行,可能是由于权限,因为您的网络服务器在与您不同的用户下运行。

答案 1 :(得分:1)

感谢大家的评论,这是一个权限问题。 我通过更改服务器的“Documents”文件夹的权限来解决它(我确定这不是最安全的方式,但我只是在测试)。

只需添加rw访问权限,成为所有者并应用于随附的项目 - 就是这样!

答案 2 :(得分:0)

php -q report.php无法使用shebang(#!/path/to/php