GVKun编程网logo

安装PhantomJS(linux环境安装)(phantomjs 安装)

9

如果您想了解安装PhantomJS的相关知识,那么本文是一篇不可错过的文章,我们将对linux环境安装进行全面详尽的解释,并且为您提供关于64位Linux环境安装PHPTCC扩展方法、centos7安

如果您想了解安装PhantomJS的相关知识,那么本文是一篇不可错过的文章,我们将对linux环境安装进行全面详尽的解释,并且为您提供关于64位Linux环境安装PHP TCC 扩展方法、centos 7安装phantomjs、linux ubuntu 下安装phantomjs、Linux/Centos下安装部署phantomjs 及使用的有价值的信息。

本文目录一览:

安装PhantomJS(linux环境安装)(phantomjs 安装)

安装PhantomJS(linux环境安装)(phantomjs 安装)

一、安装PhantomJS(linux环境安装)

将PhantomJS下载在/usr/local/src/packet/目录下(这个看个人喜好)

操作系统:CentOS 7 64-bit

1.下载地址:http://phantomjs.org/download.html

2.文件名:phantomjs-2.1.1-linux-x86_64.tar.bz2

 
# 下载好后进行解压(由于是bz2格式,要先进行bzip2解压成tar格式,再使用tar解压)
bzip2 -d phantomjs-2.1.1-linux-x86_64.tar.bz2

# 再使用tar进行解压到/usr/local/目录下边
tar xvf phantomjs-2.1.1-linux-x86_64.tar -C /usr/local/

# 安装依赖软件
yum -y install wget fontconfig

# 重命名(方便以后使用phantomjs命令)
 mv /usr/local/phantomjs-2.1.1-linux-x86_64/ /usr/local/phantomjs

# 最后一步就是建立软连接了(在/usr/bin/目录下生产一个phantomjs的软连接,/usr/bin/是啥目录应该清楚,不清楚使用 echo $PATH查看)
ln -s /usr/local/phantomjs/bin/phantomjs /usr/bin/
 

到这一步就安装成功了,接下来测试一下(经过上面建立的软连接,你就可以使用了,而且是想使用命令一样的进行使用哦!):

[root@localhost ~]# phantomjs 
phantomjs>

64位Linux环境安装PHP TCC 扩展方法

64位Linux环境安装PHP TCC 扩展方法

近日发现了一个很有用的PHP扩展,它可以让PHP直接执行C代码,无需编译。

TCC(Tiny C Compiler)是一个C编译器,支持直接执行C源代码。

关于TCC的介绍这里不多说,可以从这里了解 http://www.ibm.com/developerworks/cn/linux/l-tinyc/part1/

刚开始在32位Ubuntu下安装,很顺利就装了,不过在64位CentOS上安装时却遇到很多错误,花了差不多半天的时间终于搞定了。

下面详细讲一下我在64们CentOS上安装tcc 的 php扩展中遇到的问题以及解决办法

一、安装TCC编译器

从官网 http://bellard.org/tcc/ 下载源码,编译安装。

 注意不要直接从官网那里下载源码,那里的代码在make编译完,执行make test 时会报错,如下:

 需要直接从版本库中下载已经修复此错误的版本,可以下载最新的

wget http://repo.or.cz/w/tinycc.git/snapshot/f98c2306a0857ad3f8800f91e0554a27adc7f675.tar.gz 

tar -zxvf f98c2306a0857ad3f8800f91e0554a27adc7f675.tar.gz

cd tinycc

./configure --prefix=/usr


版本库地址 http://repo.or.cz/w/tinycc.git

我下载的文件是2012-04-18日提交的版本,命令如下:

下面我们要编辑一下Makefile文件,不然后面安装php_tcc模块时编译会无法通过

vim Makefile

 找到 ”libtcc.a: $(LIBTCC_OBJ)“ 所在行的上一行

代码应该是

$(CC) -o $@ -c $< $(NATIVE_DEFINES) $(CFLAGS)

将这一行的最后加上 "-fPIC”,即改为

$(CC) -o $@ -c $< $(NATIVE_DEFINES) $(CFLAGS) -fPIC

保存退出

make

中间可能会报 make: texi2html: Command not found

这个是生成html帮助文档的,可以忽略,需要的话可以先安装 texi2html 然后重新make

yum install texi2html

没有make错误就继续执行下面命令

make test
make install

二、安装PHP TCC 模块

直接使用pecl进行安装

如果没有安装pecl 可以先使用 yum install php-pear 进行安装

pecl install tcc

会出现如下提示

Failed to download pecl/tcc within preferred state "stable", latest release is version 0.1.2, stability "devel", use "channel://pecl.php.net/tcc-0.1.2" to install

意思就是说现在没有稳定版本,只提供开发版,需要手动指定网址进行下载

pecl install channel://pecl.php.net/tcc-0.1.2

安装正确的话会有如下不提示

Build process completed successfully
Installing ''/usr/lib64/php/modules/tcc.so''
install ok: channel://pecl.php.net/tcc-0.1.2
configuration option "php_ini" is not set to php.ini location
You should add "extension=tcc.so" to php.ini

如果make时报了如下错误,请返回第一步,确认是否加了"-fPIC“编译参数,并且加的位置正确

cc -shared  .libs/tcc.o  -ltcc  -Wl,-soname -Wl,tcc.so -o .libs/tcc.so
/usr/bin/ld: /usr/lib/libtcc.a(libtcc.o): relocation R_X86_64_32 against `a local symbol'' 
can not be used when making a shared object; recompile with -fPIC
/usr/lib/libtcc.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [tcc.la] Error 1
ERROR: `make'' failed

如果没有错误,继续执行下面操作

这时只要在php.ini中添加一行扩展加载项就可以了

位置任意,不过最好还是跟其他extension放在一起,方便管理

extension=tcc.so

也有可能你的扩展加载不在php.ini中配置,而是/etc/php.d/下面的单独文件来配置,这种情况你只在这个目录新建个文件,如tcc.ini

内容就是上面那一行,保存即可。

然后检查扩展是否已经加载成功

php -m

检查是否有tcc一项

有的话就大功告成,扩展已经正确安装

注:如果你是在浏览器下使用phpinfo()测试,请记得先重启webserver,这样对php.ini的修改才能正式生效

 三、测试扩展

PHP代码里直接执行C代码字符串的例子

保存如下文件,并在命令行下执行

<?php  
$buf = ''int main(){printf("hello world"); return 0;}'';  
$tcc = tcc_new();  
$ret = tcc_compile_string($tcc, $buf);  $ret = tcc_run($tcc);
?>


上面代码会输出

hello world

PHP代码里直接执行C源文件的例子

<?php  
$tcc = tcc_new();  
$ret = tcc_add_file($tcc, ''hello.c'');  
tcc_run($tcc);
?>


hello.c 内容

int main()
{
    printf("hello world\n");
    return 0;
}

注:如果hello.c 有包含头文件如 #include <stdio.h>,执行时会报错

还没有仔细研究,可以下载源码,里面的tests目录下有一些示例

pecl download channel://pecl.php.net/tcc-0.1.2

centos 7安装phantomjs

centos 7安装phantomjs

centos 7安装phantomjs

wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
yum install bzip2 # 安装bzip2
tar -jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
mv phantomjs-2.1.1-linux-x86_64 /usr/local/src/phantomjs
ln -sf /usr/local/src/phantomjs/bin/phantomjs /usr/local/bin/phantomjs
yum install fontconfig freetype2
phantomjs -v # 测试版本号

安装中文字体

yum install bitmap-fonts bitmap-fonts-cjk
yum groupinstall "fonts" -y # 安装字体相关的依赖包
fc-cache # 刷新字体缓存

linux ubuntu 下安装phantomjs

linux ubuntu 下安装phantomjs

sudo apt install phantomjs 

 

phantomjs -v 报错

 

在/usr/bin/phantomjs文件适当位置加上下面两行代码

  1. export QT_QPA_PLATFORM=offscreen
  2. export QT_QPA_FONTDIR=/usr/share/fonts

要跟着前面的那条“export

  1. #!/bin/sh
  2. LD_LIBRARY_PATH=”/usr/lib/phantomjs:$LD_LIBRARY_PATH”
  3. export LD_LIBRARY_PATH
  4. export QT_QPA_PLATFORM=offscreen
  5. export QT_QPA_FONTDIR=/usr/share/fonts
  6. exec “/usr/lib/phantomjs/phantomjs” “$@”

composer require jaeger/querylist

 

composer require jaeger/querylist-phantomjs

Linux/Centos下安装部署phantomjs 及使用

Linux/Centos下安装部署phantomjs 及使用

PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。 PhantomJS 可以用于 页面自动化 , 网络监测 , 网页截屏 ,以及无界面测试等

一.安装:

  获取安装包,并解压:

 #mkdir ~/bin/

 #cd ~/bin/

 #wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x86_64.tar.bz2

 #tar -xjvf phantomjs-1.9.7-linux-x86_64.tar.bz2

将可执行文件放入系统路径: 

 #sudo ln -s ~/bin/phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs

安装依赖——fontconfig和freetype: 

 #yum install fontconfig freetype2

在终端下测试Phantomjs。你应该会看到如下输出:

 #phantomjs -v

1.9.7

 #cd /root/bin/phantomjs-1.9.7-linux-x86_64/bin

新建脚本,并确认截图是否OK:

 #vi a.js

var page = require(''webpage'').create();
 page.open(''https://www.baidu.com/'', function () {
     page.render(''test/example.png'');
     phantom.exit();
 });

保存后进行截图测试 

 #phantomjs a.js

完成后会出现一个test文件夹,在文件夹内有个图片

查看图片,显示乱码。

解决方案,安装字体。

 #yum install bitmap-fonts bitmap-fonts-cjk

再次执行截图

 #phantomjs a.js

查看图片,字体显示正常。

二.使用:

Hello, World!

新建一个包含下面两行脚本的文本文件:

 #vi hello.js

console.log(''Hello, world!'');
 phantom.exit();

将文件保存后执行:

 #phantomjs hello.js

 输出结果为:Hello, world!

第一行将会在终端打印出字符串,第二行 phantom.exit 将退出运行。 
在该脚本中调用 phantom.exit 是非常重要的,否则 PhantomJS 将根本不会停止。

脚本参数 – Script Arguments

Phantomjs如何传递参数呢?如下所示 :

phantomjs examples/arguments.js foo bar baz

其中的foo, bar, baz就是要传递的参数,如何获取呢:

var system = require(''system'');
if (system.args.length === 1) {
    console.log(''Try to pass some args when invoking this script!'');
} else {
    system.args.forEach(function (arg, i) {
            console.log(i + '': '' + arg);
    });
}
phantom.exit();

它将输出 :

0: foo
1: bar
2: baz

页面加载 – Page Loading

通过创建一个网页对象,一个网页可以被加载,分析和渲染。

下面的脚本将示例页面对象最简单的用法,它加载 example.com 并且将它保存为一张图片, example.png 。

 #vi a.js

var page = require(''webpage'').create();
 page.open(''https://www.baidu.com/'', function () {
     page.render(''test/example.png'');
     phantom.exit();
 });

 

保存后进行截图测试 

 #phantomjs a.js

由于它的这个特性,PhantomJS 可以用来 网页截屏 ,截取一些内容的快照,比如将网页、SVG存成图片,PDF等,这个功能很牛X。

接下来的 loadspeed.js 脚本加载一个特殊的URL (不要忘了http协议) 并且计量加载该页面的时间。

var page = require(''webpage'').create(),
    system = require(''system''),
    t, address;

if (system.args.length === 1) {
    console.log(''Usage: loadspeed.js <some URL>'');
    phantom.exit();
}

t = Date.now();
address = system.args[1];
page.open(address, function (status) {
    if (status !== ''success'') {
        console.log(''FAIL to load the address'');
    } else {
        t = Date.now() - t;
        console.log(''Loading time '' + t + '' msec'');
    }
    phantom.exit();
});

 在命令行运行该脚本: 

phantomjs loadspeed.js http://www.google.com

 它输出像下面的东西:

Loading  http://www.google.com  Loading time 719 msec

代码运算 – Code Evaluation

要想在网页的上下文中对JavaScript 或 CoffeeScript 进行运算,使用 evaluate()方法。代码是在“沙箱”中运行的,它没有办法读取在其所属页面上下文之外的任何JavaScript对象和变量。 evaluate() 会返回一个对象,然而它仅限制于简单的对象并且不能包含方法或闭包。

这有一个示例来显示网页标题:

var page = require(''webpage'').create();
page.open(url, function (status) {
    var title = page.evaluate(function () {
        return document.title;
    });
    console.log(''Page title is '' + title);
});

 任何来自于网页并且包括来自 evaluate() 内部代码的控制台信息,默认不会显示的。要重写这个行为,使用 onConsoleMessage 回调函数,前一个示例可以被改写成:

var page = require(''webpage'').create();
page.onConsoleMessage = function (msg) {
    console.log(''Page title is '' + msg);
};
page.open(url, function (status) {
    page.evaluate(function () {
        console.log(document.title);
    });
});

 

DOM操作 – DOM Manipulation

由于脚本好像是一个Web浏览器上运行的一样,标准的DOM脚本和CSS选择器可以很好的工作。这使得PhantomJS适合支持各种 页面自动化任务 。

下面的  useragent.js  将读取 id  为myagent的元素的  textContent  属性:

var page = require(''webpage'').create();
console.log(''The default user agent is '' + page.settings.userAgent);
page.settings.userAgent = ''SpecialAgent'';
page.open(''http://www.httpuseragent.org'', function (status) {
    if (status !== ''success'') {
        console.log(''Unable to access network'');
    } else {
        var ua = page.evaluate(function () {
            return document.getElementById(''myagent'').textContent;
        });
        console.log(ua);
    }
    phantom.exit();
});

 

上面示例同样提供了一种自定义 user agent 的方法。

使用JQuery及其他类库:

var page = require(''webpage'').create();
page.open(''http://www.sample.com'', function() {
    page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
        page.evaluate(function() {
            $("button").click();
        });
        phantom.exit()
    });
});

 

网络请求及响应 – Network Requests and Responses

将一个页面从一台远程服务器请求一个资源的时候,请求和响应均可以通过 onResourceRequested  和  onResourceReceived  回调方法追踪到。示例  netlog.js :

var page = require(''webpage'').create();
page.onResourceRequested = function (request) {
    console.log(''Request '' + JSON.stringify(request, undefined, 4));
};
page.onResourceReceived = function (response) {
    console.log(''Receive '' + JSON.stringify(response, undefined, 4));
};
page.open(url);

  

关于安装PhantomJSlinux环境安装的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于64位Linux环境安装PHP TCC 扩展方法、centos 7安装phantomjs、linux ubuntu 下安装phantomjs、Linux/Centos下安装部署phantomjs 及使用的相关知识,请在本站寻找。

本文标签: