- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在使用 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);
结果如下:
string(43) "/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:."
array(1) {
[0]=>
string(36) "env: node: No such file or directory"
}
我能找到的唯一 stackoverflow 帖子暗示我的路径有问题,并且 PHP 用户可能无法访问它需要的东西。
我还尝试了以下操作:sudo ln -s/usr/bin/nodejs/usr/bin/node
有谁知道我需要做什么或更改才能解决此错误?
谢谢
最佳答案
我的猜测是你在某个地方有一些假设安装了 Node 的东西。
首先,您是否从命令行运行 php? IE。作为 bash shell 中的 php test.php
。如果是这样,您可以按原样运行下面的命令。如果通过网络服务器,环境会有所不同。我将从制作 phpinfo();
script 开始,然后通过 shell_exec()
命令运行故障排除命令。但是,因为这很痛苦,所以我会先从命令行让它工作,并且只有在通过 Web 服务器运行时行为不同时才会弄乱它。 (顺便说一句,如果您从 cron 作业运行,那么环境可能会略有不同。但只有在命令行运行但不能从 cron 运行时才担心这一点。)
hello.js 疑难解答
简单的。确保您的脚本没有在任何地方引用 node
。还要记住你不能使用 Node 模块。因此,寻找不应该存在的 require()
命令。
对您的 bash shell 进行故障排除
运行 printenv | grep -i node
查看是否有任何内容。但是当 PHP 运行 shell 命令时,其他一些文件也会运行。因此,请检查 /etc/profile
和 ~/.bash_profile
中的内容。还要检查 /etc/profile.d/
、/etc/bashrc
和 ~/.bashrc
。您基本上是在寻找任何提及 node
的内容。
phantomjs/casperjs 疑难解答
你是怎么安装phantomjs和casperjs的?/usr/local/bin 下的实际二进制文件或符号链接(symbolic link),或者它们是 .例如。在我的机器上:
cd /usr/local/bin
ls -l casperjs phantomjs
给出:
lrwxrwxrwx 1 darren darren 36 Apr 29 2014 casperjs -> /usr/local/src/casperjs/bin/casperjs
lrwxrwxrwx 1 darren darren 57 Apr 29 2014 phantomjs -> /usr/local/src/phantomjs-1.9.7-linux-x86_64/bin/phantomjs
然后检查每个文件:
head /usr/local/src/casperjs/bin/casperjs
head /usr/local/src/phantomjs-1.9.7-linux-x86_64/bin/phantomjs
第一个告诉我 casper 实际上是一个 python 脚本 #!/usr/bin/env python
,而第二个用垃圾填满屏幕,告诉我它是一个二进制可执行文件。
关于PHP 执行 casperjs/phantomjs 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28015507/
运行测试时获取。 FAIL 35 tests executed in 16.806s, 35 passed, 0 failed, 2 dubious, 0 skipped. “可疑”意味着什么?如何查
是否有人已经使用 casperjs 实现了著名的“页面对象模式”,从长远来看,它对于测试的可维护性非常有用? 当您必须将测试的机制和目的分开时,使用它非常非常酷。以这种方式编写测试会变得更加愉快。 有
所以,我试图在我的服务器上运行 casperJS 作为 cron 作业,这是 crontab: * * * * * /usr/local/bin/casperjs /var/www/javascrip
我知道如何禁用图像和插件,但似乎没有明显的选项来禁用 CasperJS 中的 css。 有谁知道这是如何工作的? 最佳答案 假设您想抑制所有外部样式表的加载,您可以通过中止加载 css 文件的请求来实
我在删除网站时从创建的 URL 下载文件时遇到问题。目前我发现了一个文件的月份和年份,然后替换了 url 中的值并尝试从该位置下载。我了解到您无法使用评估范围内的下载功能。 this.evaluate
在 CasperJS 中,如何在使用 casper.thenOpen() 时保持 session 例如: var casper = require('casper').create(); casper
我希望我的 casper 在 session 期间登录并保持登录状态。有可能吗?如果是这样,如何? 最佳答案 如果你想在 CasperJS 中存储 cookie,你可以使用 PhantomJS coo
我用 casperjs 编写了一些测试。他们与 phantomjs 一起运行得很好。但是,当我尝试通过以下命令使用 slimerjs 时: casperjs --verbose --engine=sl
我用 casperjs 编写了一些测试。他们与 phantomjs 一起运行得很好。但是,当我尝试通过以下命令使用 slimerjs 时: casperjs --verbose --engine=sl
我想单击“提交”按钮,等待下一页加载,然后在第二页上获取html。。我先做然后再运行,但然后一步仍在首页上运行。有任何想法吗? var casper = require('casper').creat
在我的页面自动化脚本中,当我单击标签链接时,将打开一个新窗口。链接的 url 是由复杂的 javascript 生成的。 办理任务 触发后 url 变为: https://oa.phicomm.co
CasperJS(带有 phantomJS)可以直接在浏览器中运行而不是通过命令行运行吗? 我想从浏览器运行交互式测试,我从用户那里获取输入并相应地进行。我想将 casperJS 作为在浏览器中执行的
我正在尝试使用 CasperJS 将图像上传到网络表单。 我的表格看起来像这样: ... Campaign Banner
错误: casper.test property is only available using the `casperjs test` command 在我的整个代码库中搜索了“casper.tes
假设我有一组网址。我不想使用 thenOpen 函数。因为它等待每个以前的 url 被加载并且它减少了加载时间。 casper.each(hrefs,function(self,href){
我正在尝试导航到从脚本本身创建的 url。 此示例代码不像(我曾)预期的那样工作。不知道为什么:( var casper = require('casper').create({ viewpo
我有一个链接列表,我必须模拟这些链接才能使用CasperJS进行点击。他们都共享同一个类(class)。 但是,使用this.click('.click-me')仅单击第一个链接。 单击所有链接的正确
casper.then(function(){ phone_number = '7wqeqwe6'; phone_password = 'Teqweqweqw34'; }); casper.t
我如何告诉 casper 不要加载图像、css、js 视频等。所以我只对 DOM 元素感兴趣。 最佳答案 看看 CasperJS API . var casper = require('casper'
在Phantom中生成PDF时,我可以这样设置纸张大小: page.paperSize = { height: '8.5in', width: '11in', orientation: '
我是一名优秀的程序员,十分优秀!