如果您想了解安装PhantomJS的相关知识,那么本文是一篇不可错过的文章,我们将对linux环境安装进行全面详尽的解释,并且为您提供关于64位Linux环境安装PHPTCC扩展方法、centos7安
如果您想了解安装PhantomJS的相关知识,那么本文是一篇不可错过的文章,我们将对linux环境安装进行全面详尽的解释,并且为您提供关于64位Linux环境安装PHP TCC 扩展方法、centos 7安装phantomjs、linux ubuntu 下安装phantomjs、Linux/Centos下安装部署phantomjs 及使用的有价值的信息。
本文目录一览:- 安装PhantomJS(linux环境安装)(phantomjs 安装)
- 64位Linux环境安装PHP TCC 扩展方法
- centos 7安装phantomjs
- linux ubuntu 下安装phantomjs
- Linux/Centos下安装部署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 扩展方法
近日发现了一个很有用的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
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
sudo apt install phantomjs
phantomjs -v 报错
在/usr/bin/phantomjs文件适当位置加上下面两行代码
- export QT_QPA_PLATFORM=offscreen
- export QT_QPA_FONTDIR=/usr/share/fonts
要跟着前面的那条“export
- #!/bin/sh
- LD_LIBRARY_PATH=”/usr/lib/phantomjs:$LD_LIBRARY_PATH”
- export LD_LIBRARY_PATH
- export QT_QPA_PLATFORM=offscreen
- export QT_QPA_FONTDIR=/usr/share/fonts
- exec “/usr/lib/phantomjs/phantomjs” “$@”
composer require jaeger/querylist
composer require jaeger/querylist-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);
关于安装PhantomJS和linux环境安装的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于64位Linux环境安装PHP TCC 扩展方法、centos 7安装phantomjs、linux ubuntu 下安装phantomjs、Linux/Centos下安装部署phantomjs 及使用的相关知识,请在本站寻找。
本文标签: