问题标签 [php-phantomjs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
43297 浏览

javascript - 如何从 PHP 执行 PhantomJS

我想在本地主机上从 PHP 执行 PhantomJS。

任何人都可以解释如何从 PHP 执行 PhantomJS 以及我应该从 phantomjs.org 下载什么包?

0 投票
4 回答
10893 浏览

php - 带有 Laravel 的 Php-phantomjs(文件不存在或不可执行:bin/phantomjs)

我正在尝试在CentOS 7Windows 8下将php-phantomjs与 Laravel 5一起使用。

我按照PHP Phantom 安装(安装成功)中的说明进行操作,之后在尝试执行基本用法代码时收到此错误:

执行 PhantomJs 过程“默认”时出错 - 文件不存在或不可执行:bin/phantomjs(查看:PATH_TO_PROJECT\resources\views\welcome.blade.php)


基本使用代码

我用谷歌搜索了很多,找到并尝试了几种解决方案,但没有成功。在 Stackoverflow 上,我发现了一个问题有人在 ubuntu 环境中成功使用了 jonnyw 的“php phantomjs”和 laravel 吗?. 我可以在最后一条评论中看到这个人解决了这个问题:

我也试过了,它返回另一个错误:

文件不存在或不可执行:phantomjs.exe(查看:PATH_TO_PROJECT\resources\views\welcome.blade.php)

但是当我尝试时:

它返回 1,这意味着 PHP 可以找到带有absolute_path.


我不知道我做错了什么。任何已经在 laravel 中成功使用“php phantomjs”的人可以帮助我吗?

注意:有问题的代码是 Windows 版本代码,但我在两个操作系统中都收到相同的错误。


更新 1

更改absolute_pathrelative path它似乎现在知道phantomjs.exe了,但是钢提出了同样的错误phantomloader

文件不存在或不可执行:../bin/phantomloader(查看:PATH_TO_PROJECT\resources\views\welcome.blade.php)

尝试了这个解决方案,但同样的错误:

0 投票
1 回答
1217 浏览

php - 无法使用 PHP-Phantomjs

我正在尝试使用PhantomJS,这是我的代码:

但它给了我这个错误:

所以它在这条线上崩溃了:

我尝试 chmod 777 所有的 \vendor 目录和子目录,但没有改变任何东西,你有什么想法吗?

0 投票
1 回答
426 浏览

php - PHP-PhantomJS 在不同的服务器上以不同的方式呈现屏幕截图

今天,我一直致力于为我的一个项目生成网站截图的解决方案。在深入研究了网上的各种主题后,我得出结论,使用 PhantomJS 可能是我的最佳选择。

由于我运行的是 vagrant (Homestead) 本地服务器,因此我需要将jonnyw/php-phantomjs( https://packagist.org/packages/jonnyw/php-phantomjs ) 中的包放入现有项目中,并使用基本脚本启动:

在代码停止抛出警告之前我花了一点时间,但最终代码正常工作!然后我继续将代码迁移到它应该在的项目中,该项目是用过程 php 代码编写的。我需要这个包,包括自动加载器,它执行的命令与我的 Vagrant 环境中的命令完全相同。

结果有点不同:没有显示标题,也没有显示背景图像。我可能需要补充一点,标题附加了一个自定义字体。

几周前,我为需要 Laravel 的客户端设置了一个服务器,我还需要该服务器上的包并执行相同的代码。起初我得到一些随机的白页,但最终我得到了我期望的截图。我可以忍受截图变成白色的事实,只要它们最终正确出现。

然后我回到这个脚本的目标代码并给它更多的镜头。但结果一直是白色或缺少一些元素(自定义字体标题+​​背景图像)。我最后一次尝试是更改capture.proc文件,我在渲染图像之前添加了一个 setTimeout 函数。那确实解决了一个问题:从那以后我没有任何白色图像,但没有解决最重要的问题:缺少标题和背景。

我已经仔细检查了所有 bin 文件,它们都使用 1.9.7 版的 PhantomJS,所以我怀疑那里有问题。但是服务器配置(或 PHP 版本)是否存在差异,会阻止脚本给出正确的结果?

只是为了提供尽可能多的信息,问题服务器位于最低的 PHP 版本上:

  • 问题服务器在 PHP 5.5.18 上
  • 工作服务器在 PHP 5.5.27 上
  • Homestead 服务器在 PHP 5.6.11 上
0 投票
0 回答
190 浏览

c# - Phantomjs 在桌面控制台应用程序上运行 40 秒时给出结果,而在运行 asp.net Visual Studio Express 时它在 150 秒后给出结果

从过去两个月开始,我一直在研究我的项目,一切正常,但我在这里遇到了问题。我一直在 C# 中运行我的脚本:

在控制台应用程序中用于桌面的 Visual Studio Express 上。我在 40 秒内得到了很好的结果。两者都给出了 40 秒,而第一个给出了不到 12 秒的结果。

问题出在这里,在Visual Studio for Web的asp.net项目中运行基于上述的脚本时,

Visual Studio的asp.net项目中的脚本是:

我从上面的 asp.net 项目代码中得到的结果超过 150 秒,这对我的业务来说不合适。我一直在努力将其分解为最小 < 50 秒。

注意:如果我能在 php 脚本中获得最终输出,我会非常高兴,我不知道虚拟主机服务器上的 phantomjs,因此这个项目首选 asp.net。

删除该implicitlywait功能后,我得到了相同的结果!

提前致谢!

0 投票
1 回答
2094 浏览

php - 在 PhantomJS 中使用代理和 PHP PhantomJS 库

PhantomJS的文档确实展示了如何使用代理。但是,当使用PHP PhantomJS的库时,如何在 PHP 中使用?

就此而言,如何使用任何 PhantomJS 插件?

我目前正在使用 CURL 执行此操作以使用代理:

我想用 PhantomJS 做同样的事情。我已经正确安装和配置了它,这个例子有效(PHP PantomJS 自己的例子)。

代理信息在哪里?

谢谢。我对 PhantomJS 很陌生。

0 投票
0 回答
184 浏览

javascript - 设置php phantomjs

我正在尝试在我的服务器上设置 Phantomjs,并且我的主机已将二进制文件安装在“/usr/bin/phantomjs”

从http://jonnnnyw.github.io/php-phantomjs/阅读文档我尝试了以下

但我得到错误:调用非对象上的成员函数getEngine()

任何人都可以协助设置?

0 投票
2 回答
757 浏览

php - PHP PhantomJS 在 Web 服务器上不起作用

有下一个问题:在 MAMP 上安装了 php phantomjs。从这里制作所有使用说明:在此处输入链接描述

一切正常...然后我将所有站点文件复制到我的网络托管站点文件夹中,但没有任何效果。做了一个 var_dump 的响应并看到:

object(JonnyW\PhantomJs\Http\Response)#156 (8) { ["headers"]=> NULL ["status"]=> NULL ["content"]=> NULL ["contentType"]=> NULL [" url"]=> NULL ["redirectURL"]=> NULL ["time"]=> NULL ["console"]=> NULL }

为什么它不起作用,为什么一切都是NULL?我的代码是:

0 投票
1 回答
525 浏览

php - [PHP-]PhantomJS - 自动检测给定高度的页面高度

我正在使用PHP-PhantomJS来截取一组 URL。我似乎无法弄清楚如何不硬编码正在拍摄的屏幕截图的高度。

我很想设置一个宽度并相应地自动检测每个页面的高度。由于我使用的是一组 URL,因此每个页面的高度都是动态的。

有没有人有这个运气?我当前的版本如下所示:

0 投票
0 回答
344 浏览

javascript - 设置自己的内容并在 PhantomJS 中执行它的脚本

我想手动设置我的“页面”的内容。我不想从 url 加载它。我设置的 html 包含一个创建链接的脚本文件。现在我想执行这个脚本,并获取动态生成的链接。

如果我从 url 加载页面,那没问题。但是,如果我想手动设置内容,我认为不会执行脚本文件!

输出是:

但我希望我能得到这样的东西:

如何告诉 phantomJS 执行脚本文件?

编辑: 如果我将 var 内容行更改为:

脚本成功执行。