php exec()函数不适用于ubuntu + nginx + fpm上的所有命令

时间:2013-01-31 18:01:32

标签: shell php

我可以看到结果:

echo exec("whoami"); // will output "www-data"

然而,如果我尝试运行一个真实世界的命令:

echo exec("casperjs myscript.js /foo/bar");
然后没有任何反应:

  • 无输出(casperjs脚本应输出一些stdout日志消息)
  • 没有动作(脚本应该创建一个图像,使用绝对路径,但它没有)
  • PHP没有错误
  • 没有shell命令的输出

我在StackOverflow上搜索过,然后去尝试其他方法(首先在shell中测试,以确保它们正常工作):

echo exec("casperjs /absolute/path/to/myscript.js");
echo exec("/usr/local/bin/casperjs /absolute/path/to/myscript.js");

我使用system()shell_exec()甚至passthru()测试了其他组合 但它总是一样的:没有错误,没有输出,甚至在php日志文件中,所以很难理解这个问题:(

1 个答案:

答案 0 :(得分:2)

尝试echo exec("casperjs myscript.js /foo/bar 2>&1");将stderr重定向到stdout,否则将无法显示。

你的cmdline中可能是一个错误,或者你的$ PATH中没有casperjs等。