我想在localhost上从PHP执行PhantomJS.
任何机构都可以解释如何从PHP执行PhantomJS以及我应该从phantomjs.org下载什么软件包?
我正在尝试在CentOS 7和Windows 8下使用laravel 5的php-phantomjs.
我按照PHP Phantom安装的说明(安装成功完成),之后我在尝试执行基本使用代码时收到此错误:
执行PhantomJs过程时出错"default" - 文件不存在或不可执行: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();
}
Run Code Online (Sandbox Code Playgroud)
我搜索了很多,找到并尝试了几种解决方案,但没有成功.在Stackoverflow上,我发现一个问题任何人在ubuntu环境中成功地使用jonnyw的"php phantomjs"和laravel?.我可以在最后一条评论中看到这家伙解决了这个问题:
$client->setBinDir('absolute_path/bin');
$client->setPhantomJs('phantomjs.exe');
Run Code Online (Sandbox Code Playgroud)
我也试着去了,它又回来了另一个错误:
文件不存在或不可执行:phantomjs.exe(查看:PATH_TO_PROJECT\resources\views\welcome.blade.php)
但是当我尝试:
echo file_exists('absolute_path/bin/phantomjs.exe');
Run Code Online (Sandbox Code Playgroud)
它返回1表示PHP可以找到该文件absolute_path.
我不知道我做错了什么.任何人都已成功使用"php phantomjs"和laravel谁可以帮助我?
注意:问题中包含的代码是Windows版本代码,但我在两个操作系统中都收到相同的错误.
更新1 …
使用1and1 linux共享主机,
我安装了:
PHP版本7.0.27 PHP PhantomJS 2.1.1
PHP PhantomJS的所有值都为null
每当我提出请求时:
$client = Client::getInstance();
$client->getEngine()->setPath($main_path.'core/composer/bin/phantomjs');
$client->getEngine()->addOption('--ssl-protocol=any');
$client->getEngine()->addOption('--ignore-ssl-errors=true');
$client->getEngine()->addOption('--web-security=false');
$client->getEngine()->addOption('--debug=true');
$client->getEngine()->addOption('--local-to-remote-url-access=true');
$request = $client->getMessageFactory()->createRequest("http://luclaverdure.com");
$response = $client->getMessageFactory()->createResponse();
$client->send($request, $response);
var_dump($request);
var_dump($response);
if($response->getStatus() === 200) {
$resp = $response->getContent();
var_dump($resp);
}
Run Code Online (Sandbox Code Playgroud)
我有一堆空值,并且phantomJS无法处理URL ...
请求:
object(JonnyW\PhantomJs\Http\Request)#113 (12) {
["type":protected]=> NULL
["headers":protected]=> array(0) {}
["settings":protected]=>
array(1) {
["resourceTimeout"]=>
int(5000)
}
["cookies":protected]=>
array(2) {
["add"]=>
array(0) {
}
["delete"]=>
array(0) {
}
}
["data":protected]=>
array(0) {
}
["url":protected]=>
string(59) "http://luclaverdure.com"
["method":protected]=>
string(3) "GET"
["timeout":protected]=>
NULL
["delay":protected]=> …Run Code Online (Sandbox Code Playgroud) 我正在使用PHP-phantomjs并按照我可以输出pdf和img的文档.http://jonnnnyw.github.io/php-phantomjs/
但我有分页问题.当一个图表在页面的末尾,但溢出时,它将被拆分在另一个页面中,如下面的捕获:

我找到了一些建议:
<div id="main" style="page-break-inside: avoid;"></div>
Run Code Online (Sandbox Code Playgroud)
但它不起作用,或者说我弄错了.如果它是解决方案,那意味着我必须在html的每个元素中写这个?听起来不太好.