1

我试图在我的 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");'
4

3 回答 3

2

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

a) 用这一行开始文件

#!/path/to/php

b) 运行为:

php report.php

如果这可行,则可能是由于权限问题,因为您的 Web 服务器在与您不同的用户下运行。

于 2012-09-02T05:22:56.637 回答
1

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

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

于 2012-09-02T06:35:55.367 回答
0

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

于 2013-07-19T11:19:56.543 回答