关于php编写64位扩展的问题
1、原本是在32位的桌面系统上编写了一个php的扩展,已经在本地调试好,可以正常使用了。
2、发布到服务器以后,扩展始终没有加载起来,通过phpinfo查看没有加载,服务器是ubuntu 14.04 64位版本
3、将php.ini中的中的错误显示项打开
display_startup_errors = On
error_log = /etc/php_errors.log
以上设置可以显示php启动时的错误信息,例如扩展模块没有加载成功之类的。
4、停止再启动php5-fpm
命令:stop php5-fpm
命令:start php5-fpm
5、可以看到php_errors.log文件中有如下类似的错误信息
wrong ELF class: ELFCLASS32 in Unknown on line 0
说明是因为编写的扩展是32位,系统是64位的,所以加载出错了
6、下载php源码版本,然后把扩展编译一遍
命令:wget http://cn2.php.net/distributions/php-5.6.5.tar.gz
命令:tar zxvf php-5.6.5.tar.gz
命令:cd php-5.6.5/ext
7、重新按照php扩展的方法,创建一个扩展,具体参见网上其它资料
8、将原来扩展的代码复制替换过去
9、执行编译
命令:phpize,如果提示命令不存在,请使用命令安装:apt-get install php5-dev
命令:./configure
命令:make
如果没有错误,就会在modules文件夹下生成一个so的文件,这个也就是扩展的模块。
10、再次停止和启动php5-fpm
已经可以显示扩展成功加载成功了。
以上日记记录下来,方便以后找问题。主要的经验就是如何找错,如果扩展没有加载成功,可以通过上面开启日志的方法来找错,从而快速解决问题。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。