关于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

     已经可以显示扩展成功加载成功了。

 

以上日记记录下来,方便以后找问题。主要的经验就是如何找错,如果扩展没有加载成功,可以通过上面开启日志的方法来找错,从而快速解决问题。

 

posted on 2015-01-27 17:39  icycity  阅读(380)  评论(0编辑  收藏  举报

导航