PHP执行casperjs/phantomjs脚本
我在使用PHP执行casperjs脚本时遇到问题: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
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