【发布时间】:2015-11-08 00:52:43
【问题描述】:
我正在尝试在 CentOS 7 和 Windows 8 下将 php-phantomjs 与 Laravel 5 一起使用。
我按照 PHP Phantom installation 的说明进行操作(安装成功),然后在尝试执行 基本用法 代码时收到此错误:
执行 PhantomJs 过程“默认”时出错 - 文件不存在或不可执行:bin/phantomjs(查看:PATH_TO_PROJECT\resources\views\welcome.blade.php)
基本使用代码
use JonnyW\PhantomJs\Client;
$client = Client::getInstance();
/**
* @see JonnyW\PhantomJs\Message\Request
**/
$request = $client->getMessageFactory()->createRequest('http://google.com', 'GET');
/**
* @see JonnyW\PhantomJs\Message\Response
**/
$response = $client->getMessageFactory()->createResponse();
// Send the request
$client->send($request, $response);
if($response->getStatus() === 200) {
// Dump the requested page content
echo $response->getContent();
}
我在 Google 上搜索了很多,找到并尝试了几种解决方案,但都没有成功。在 Stackoverflow 上,我发现了一个问题 Anyone successfully used jonnyw's “php phantomjs” with laravel, in a ubuntu envirement?。我可以在最后一条评论中看到这家伙解决了这个问题:
$client->setBinDir('absolute_path/bin');
$client->setPhantomJs('phantomjs.exe');
我也试过了,它返回另一个错误:
文件不存在或不可执行:phantomjs.exe(查看:PATH_TO_PROJECT\resources\views\welcome.blade.php)
但是当我尝试时:
echo file_exists('absolute_path/bin/phantomjs.exe');
它返回 1 表示 PHP 可以找到带有 absolute_path 的文件。
我不知道我做错了什么。任何已经成功使用 laravel 的“php phantomjs”的人可以帮助我吗?
注意:包含的代码是 Windows 版本代码,但我在两个操作系统中都收到相同的错误。
更新 1
在将absolute_path 更改为relative path 之后,它现在似乎知道phantomjs.exe,但是steel 与phantomloader 引发了同样的错误:
文件不存在或不可执行:../bin/phantomloader(查看:PATH_TO_PROJECT\resources\views\welcome.blade.php)
尝试了这个解决方案,但同样的错误:
$client->setPhantomLoader('../bin/phantomloader');
【问题讨论】:
-
你已经放弃了自动加载
composer dump-autoload吗? -
只是现在,不幸的是没有变化,同样的问题:(
-
你使用的是什么操作系统?
-
您确定您使用的是 Linux 二进制文件吗?因为
phantomjs.exe(很可能)是 Windows 可执行文件。 -
感谢您抽出宝贵时间@user3584460,是的,我确定。我使用 CentOS 7 和 Windows 8,并且在更新我的答案的两个操作系统中都收到相同的错误(有问题的代码是 windows 版本)。
标签: php laravel centos laravel-5.1 php-phantomjs