php安装wkhtmltox,本地多版本php运到的坑
正文
先讲一下php安装wkhtmltox扩展的流程
安装libwkhtmltox内核
安装libwkhtmltox (linux内核、Centos-6 .5-64bit)
rpm -ivh wkhtmltox-0.12.2.1_linux-centos6-amd64.rpm
提示找不到rpm命令,就装下rpm:sudo apt-get install rpm
下载wkhtmltox扩展
wget https://github.com/mreiferson/php-wkhtmltox/archive/master.zip
unzip master.zip /path/to/phpwkhtmltox/installation
或者直接从 https://github.com/mreiferson/php-wkhtmltox 下载zip包并解压
安装PHP wkhtmltox扩展
cd php-wkhtmltox-master // php-wkhtmltox-master是wkhtmltox扩展解压后的目录
phpize
./configure
make && make install
在运行make命令时,报了关于一些php-wkhtmltox-master/phpwkhtmltox.c 代码中的警告和错误,如下:
php-wkhtmltox-master/phpwkhtmltox.c:177:13: error: too many arguments to function ‘zend_hash_get_current_key_ex’
查看终端的安装过程错误输出,发现使用的php库并不是当前使用的版本
In file included from /usr/include/php/20170718/Zend/zend.h:34:0,
from /usr/include/php/20170718/main/php.h:36,
而我当前使用的php扩展及Zend扩展如下:
这里是我前面挖了个坑,我一开始安装的时php7,后面要跟线上项目相同,又安装了php5.6,结果运行时phpize的版本和配置并不是5.6,导致了安装时版本兼容问题。
解决方法,添加phpize5.6:
sudo apt-get install php5.6-dev
安装后,可找到/usr/bin/phpize5.6
重新进行安装编译
cd php-wkhtmltox-master
phpize5.6 --clean
phpize5.6
./configure --with-php-config=/usr/bin/php-config5.6
make && make install
安装过程中提示权限问题,切换到root下执行。
安装完后查看扩展,在/usr/lib/php/20131226,可看到phpwkhtmltox.so
修改php.ini,添加extension=phpwkhtmltox.so
简单测试html转image
public function convertHtmlToImage(){
try{
echo wkhtmltox_convert(
'image',
array(
'out' => 'test.jpg',
'in' => 'http://www.baidu.com/'
)
);
}catch (\Exception $e){
print_r($e->getTrace());
}
}
成功的话,会输出1,并看到图片。