在服务器上安装PhantomJS

时间:2014-11-12 21:20:19

标签: php apache phantomjs

我在Windows上使用 PhantomJS 并通过命令行访问文件。现在我想在我正在本地主机上工作的服务器上安装它,所以我希望它安装在Apache上,这样我就可以将Phantom与我的html和PHP集成在网页中使用。我正在使用Windows 8.1和Apache Server for localhost。

我真的能这样做吗?现在如何在Web服务中使用它? 如果我必须在网上制作我的网站,我将如何使用它?我应该问我的托管服务提供商是否将这个东西放在服务器上?

我正在使用phantomJS开发一个Web服务,该服务将url作为输入并返回网站屏幕截图的图像文件。

2 个答案:

答案 0 :(得分:5)

PhantomJS的“安装”只是添加路径到PATH环境变量。

通过php

运行

由于你使用的是php,你可以从php脚本中调用PhantomJS,就像显示here所示,你需要提供PhantomJS可执行文件的完整路径。您还可以使用putenv直接从php扩展PATH,如here所示 您可以从$output exec变量中的PhantomJS脚本返回一些内容,然后解析它。

运行网络服务器模块

PhantomJS提供web server module。您可以编写一个侦听请求的脚本,根据请求创建page并返回图像。你会以某种方式在启动时或与apache一起运行脚本。也可以编写一个包装器,以便您可以将其作为Windows服务运行。可以通过Apache传递请求,以便PhantomJS不会完全对外开放 虽然这个选项有点危险,但是因为PhantomJS可能会失败然后你需要某种复兴机制。您的脚本也可能会遇到内存泄漏。

返回图像

以上两个选项都与您返回图像的方式无关。有几种可能性。

  1. 根据请求,创建一个随机且唯一的文件名,并将render页面添加到文件中。然后,您可以将文件的名称发送给客户端,然后可能会请求它。这需要两个请求。
  2. 根据请求,通过renderBase64呈现页面以接收普通图像数据。现在,您可以直接在响应中发送此图像数据,客户端可以通过data:-URI将其放入DOM中。

答案 1 :(得分:0)

//throws a lot of errors because searching some libraries
$cmd = 'unset DYLD_LIBRARY_PATH ;';
$cmd.= ' /abs/path/to/phantomjs';
$cmd.= ' /abs/path/to/script.js';

//set environment variable to node source
putenv('PATH=/abs/path/to/node/bin/');

//now exec the cmd and pipe the errors to stdout
exec($cmd.' 2>&1', $output);

//and output the results
print_r($output);

以下是您建议的上述网址的答案。 我已根据我的路径改变了它

<?php

$cmd = ' ./ScreenShotWeb/phantomjs';
$cmd.= ' ./ScreenShotWeb/shot.js';

putenv('PATH=./ScreenShotWeb/');

exec($cmd.' 2>&1', $output);

print_r($output);
?>

我正在尝试运行此功能,但它提供了以下输出

  

数组([0] =&gt;'。'不被识别为内部或外部   命令,[1] =&gt;可操作程序或批处理文件。 )

在我的根文件夹(C:/ xampp / htdocs)中有一个文件夹ScreenShotWeb,我放置了PhantomJS的EXE +所有文件。

相关问题