PHP执行casperjs/phantomjs脚本

PHP执行casperjs/phantomjs脚本,php,node.js,macos,phantomjs,casperjs,Php,Node.js,Macos,Phantomjs,Casperjs,我在使用PHP执行casperjs脚本时遇到问题: <?php putenv("PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs"); var_dump(exec("echo \$PATH")); exec("/usr/local/bin/casperjs hello.js website.com 2>&1",$output); var_dump($output); 我能找到的唯一stackoverflow帖子暗示我的路径有问题,可

我在使用PHP执行casperjs脚本时遇到问题:

<?php
putenv("PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs");
var_dump(exec("echo \$PATH"));
exec("/usr/local/bin/casperjs hello.js website.com 2>&1",$output);
var_dump($output);
我能找到的唯一stackoverflow帖子暗示我的路径有问题,可能PHP用户无法访问它需要的内容

我还尝试了以下方法:
sudo ln-s/usr/bin/nodejs/usr/bin/node

有人知道我需要做什么或做什么更改才能解决此错误吗


谢谢

我猜您在某处发现了一个假设节点已安装的东西

首先,您是否从命令行运行php?例如,在bashshell中作为
php test.php
。如果是这样,您可以按原样运行下面的命令。如果通过web服务器,环境可能会有所不同。我先做一个,然后通过
shell\u exec()
命令运行故障排除命令。但是,由于这是一个痛苦,我会让它首先从命令行开始工作,并且只有在运行web服务器时行为不同时才处理好这个问题。(顺便说一句,如果您是从cron作业运行的,那么环境可能会略有不同。但是,只有当它从命令行工作,但不从cron工作时,才需要担心这一点。)

hello.js疑难解答

简单的一个。确保脚本未在任何位置引用
节点
。还要记住,不能使用节点模块。因此,请查找不应该存在的
require()
命令

对bash shell进行故障排除

运行
printenv | grep-i节点
查看是否有任何内容。但是当PHP运行shell命令时,其他一些文件也会运行。因此,请检查
/etc/profile
~/.bash\u profile
中的内容。同时检查
/etc/profile.d/
/etc/bashrc
~/.bashrc
。您基本上是在寻找任何提到
节点的内容

对幻影JS/casperjs进行故障排除

您是如何安装phantomjs和casperjs的?是/usr/local/bin下的实际二进制文件,还是符号链接,或者它们是指向的bash脚本。例如,在我的机器上:

给出:

lrwxrwxrwx 1 darren darren 2014年4月29日36 casperjs->/usr/local/src/casperjs/bin/casperjs
lrwxrwxrwx 1 darren darren 57 2014年4月29日phantomjs->/usr/local/src/phantomjs-1.9.7-linux-x86_64/bin/phantomjs
然后检查每个文件:


第一个告诉我casper实际上是一个python脚本
#/usr/bin/env python
,而第二个则用垃圾填充屏幕,告诉我它是一个二进制可执行文件。

您是否有机会将
#/usr/bin/env node
定义为hello.js的第一行?CasperJS在PhantomJS执行环境中运行,而不是在节点上运行。通常情况下,没有对节点的引用。谢谢@ArtjomB。我不熟悉你提供的线路。我应该把它粘贴到casper脚本的顶部吗?不,你不应该。我不知道节点引用来自何处。我会删除该符号链接,然后确定节点被调用的位置,并在此处通知我们。Casper是否在节点上运行?@halfer否,CasperJS在PhantomJS上运行,PhantomJS本身具有与节点不同的执行环境。一般来说,他们不能共享模块。CasperJS和PhantomJS仅通过npm安装以方便使用。
string(43) "/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:."
array(1) {
  [0]=>
  string(36) "env: node: No such file or directory"
}
cd /usr/local/bin
ls -l casperjs phantomjs
head /usr/local/src/casperjs/bin/casperjs
head /usr/local/src/phantomjs-1.9.7-linux-x86_64/bin/phantomjs