使用exec()运行PhantomJS时返回错误代码127

时间:2014-07-15 19:05:12

标签: php

在我的Vagrant环境中(尚未在服务器上测试)我在尝试使用我的网站控制器中的exec()运行PhantomJS时出现错误。

这是我用来调试的代码:

exec('/usr/local/node/node-default/bin/node --version', $output, $code);
var_dump($code);
exec('ls -la /usr/local/node/node-default/bin/phantomjs', $output, $code);
var_dump($code);
exec('/usr/local/node/node-default/bin/phantomjs --version', $output, $code);
var_dump($code);
exec('/usr/local/node/node-default/lib/node_modules/phantomjs/bin/phantomjs --version', $output, $code);
var_dump($code, $output);

及其输出:

int 0
int 0
int 127
int 127
array (size=2)
  0 => string 'v0.10.29' (length=8)
  1 => string 'lrwxrwxrwx 1 root root 43 Jul 15 18:00 /usr/local/node/node-default/bin/phantomjs -> ../lib/node_modules/phantomjs/bin/phantomjs' (length=128)

我可以从我的终端运行命令,并从PHP的交互式shell(php -a)运行上面的代码输出所有0返回代码和以下内容用于最终输出:

array(4) {
  [0] =>
  string(8) "v0.10.29"
  [1] =>
  string(128) "lrwxrwxrwx 1 root root 43 Jul 15 18:00 /usr/local/node/node-default/bin/phantomjs -> ../lib/node_modules/phantomjs/bin/phantomjs"
  [2] =>
  string(5) "1.9.7"
  [3] =>
  string(5) "1.9.7"
}

由于目标可执行文件的权限是777,因此导致php -a执行PhantomJS的这些环境可能会有所不同,而我的网站的控制器却不能?

2 个答案:

答案 0 :(得分:2)

我知道这有点晚了但我只是花了很多时间调查这个确切的问题。对我来说问题是,当通过apache执行时,环境略有不同,因此找不到node。我必须将/usr/local/bin/node放入exec来电,然后才有效。

答案 1 :(得分:1)

我不确定这只是一个权限错误或者是什么,但在与@Athafoud进一步讨论之后我决定不使用npm来安装幻像而只是从他们的网站下载二进制文件。无论出于何种原因,这都可行。