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

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

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

时间: 2024-11-09 06:42:08

关于php编写64位扩展的问题的相关文章

64位BASM学习随笔(一)

?? Delphi的BASM一直是我最喜爱的内嵌汇编语言,同C/C++的内联汇编相比,它更方便,更具灵活性,因为C/C++的内联汇编只能是或插入式的汇编代码,函数花括号背后隐藏的函数框架,限制了汇编代码的发挥,如无论有无参数和局部变量,总是有个栈框架,更烦人的是只要你在函数中使用了esi,edi,ebx寄存器,就自动给你保存和恢复,使得这些寄存器没法在函数之间传递信息等:而Delphi的BASM可以是插入式的汇编代码,也可是完全的汇编方法,在完全的汇编方法下,怎么发挥就是自己的事了.    De

VSTO学习笔记(三) 开发Office 2010 64位COM加载项

原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(Automation Executables) 2.Office加载项(COM or Excel Add-In) 3.Office文档代码或模板(Code Behind an Office Document or Template) 4.Office 智能标签(Smart Tags) 本次我们将学习使

[百度空间] [转]将程序移植到64位Windows

from : http://goooder.bokee.com/2000373.html (雷立辉 整理) 简介:本文对如何将32位Windows程序平滑的支持和过渡到64位Windows操作系统做出了一个简单而系统的介绍.包括对于64位操作系统的版本,编程模型,一些移植原则甚至包括对驱动程序的移植原则的介绍. 作者介绍:系统分析员,现在在北京工作.作者的blog:http://goooder.blogchina.com. 前言: 或许大家还对32位的CPU及操作系统使用还是觉得非常的合乎日常需

64位Win7搭建Python开发平台(Python3++Ipython_Notebook+Numpy+Scipy+Matplotlib+PyQt4)

Life is short, you need Python! ------ Bruce Eckel(ANSI C++ Comitee member) Python[1]是一门很难让人拒绝学习的程序设计语言,我喜欢它是因为它能很快给人带来成就感,海量的扩展库几乎可以帮助你立刻完成许多看起来很困难的事情.Python的触角已经深入到学习.工作的各个领域,甚至是在科学计算领域也有不俗的表现,许多古老的fortran程序库(如lapack[2])都被封装成了Python的扩展库,继续散发着活力. Py

在64位主机上编译产生32位的目标代码

   今天又看CS630[1]的Chapter 15,发现里头的一个例程manydots.s无法正常编译. $ gcc manydots.s -o manydots /tmp/ccIvmRVT.o: In function `_start': (.text+0x0): multiple definition of `_start' /usr/lib/gcc/x86_64-linux-gnu/4.3.1/../../../../lib/crt1.o:(.text+0x0): first defin

利用Code::Blocks搭建64位C++开发平台

0.前言 随着64位计算机的普及,编写64位程序成为程序员基本的要求.我在<体验Code::Blocks下的C++编程>中描述了利用Code::Blocks官方提供的封装了编译器的安装包(codeblocks-17.12mingw-setup.exe)搭建开发环境编写C++程序的方法.但是,官方提供的安装包中的编译器是32位的,只能用于开发32位程序.如果你想开发64位的程序,就必须自己安装另外的编译器,而不是使用原来在安装包里的. 下面,我就介绍一下利用Code::Blocks搭建64位C+

windows (windows server 2003 64位)开启 curl扩展 (php-5.4.5-Win32-VC9-x86.zip,httpd-2.2.22-win32-x86-no_ssl.msi ,mysql-5.5.27-win32.msi)

(1)在windows下开启curl扩展,php.ini中 extension_dir路径是对的,extension=php_curl.dll前面的分号也去掉了,php加载的php.ini也是对,但是就是没有效果,上网百度,解决了. 需要将php目录中的libeay32.dll, ssleay32.dll, php5ts.dll, 文件到 system32 目录.重启apache即可. (2)在windows server 2003 64位 中  需要将libeay32.dll, ssleay3

win7 64位下安装hadoop的eclipse插件并编写运行WordCount程序

win7 64位下安装hadoop的eclipse插件并编写运行WordCount程序 环境: win7 64位 hadoop-2.6.0 步骤: 1.下载hadoop-eclipse-plugin-2.6.0.jar包 2.把hadoop-eclipse-plugin-2.6.0.jar放到eclipse安装目录下的plugins目录下 3.打开eclipse发现左边多出来一个DFS Locations 4.在win7上解压hadoop-2.6.0. 5.下载hadoop.dll.winuti

windows 10(64位)下实现vs20120C++调用matlab r2014a编写的m文件生成的.dll,.lib,.h文件

如题. 环境:windows10 64位,vs 2010,matlab r2014a,配置成功,生成.dll,.h,.lib文件成功. 步骤一:matlab动态链接库文件编译生成 1)编写示例文件add.m function c = add(a, b); c = a + b; end; 2)编译打包 进入matlab主界面,在控制台输入deploytool命令,调用打包程序,选择"Library Compiler": 3)进入库文件编译程序界面,根据需要勾选C++ Shared Lib