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

标签 php

在我的 Vagrant 环境中(尚未在服务器上测试),当我尝试从我的网站 Controller 之一使用 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,而我的网站 Controller 却不能?

最佳答案

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

关于php - 使用 exec() 运行 PhantomJS 时返回错误代码 127,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24766165/

相关文章:

php - 拒绝直接访问 PHP 文件

作为枚举/常量的 php 方法参数

php - 将特殊字符插入 Postgresql 数据库

php - 仅在特定位置使用 limit 和 offset

php - 从 php 对象访问@attribute

javascript - Codeigniter + $http.post() 的 Angular 问题。 Codeigniter收不到数据

php - AngularJS HTTP 发布到 PHP 和未定义

php - 在 PHP 页面中包含许多 javascript 函数(其中包含 PHP)的最有效方法是什么?

php - 列出 sql 的最后 10 行并将其打印在字幕中

php - 将多页 PDF 转换为单页 PDF 并提取图像