PHP扩展开发编译环境的搭建

PHP允许使用扩展的方式,直接使用C语言开发PHP的功能,由于编译的问题,很多底层和框架的基础工作如果用PHP必然会带来额外的开销,降低系统的吞吐量,必然yaf就是这样的思路,把框架封装在扩展里,让系统开销降低到最小,基本接近不用框架的性能水平。

首先是获取PHP的源代码,这里提供一个PHP源码的下载地址,目前最新的是PHP7.1,不够考虑到我一直在用的环境,这里选择PHP 5.4.31为例。

第二是在Windows平台下的PHP编译部署。在Windows下需要用到Visual Studio,PHP 5.4.31用到的是Visual Studio 2008,同时需要升级到vS2008 SP1编译才能正常编译使用。否则在部署之后就会出现无法加载的问题。

注意,在此之前,windows需要先安装php,并把php加入到环境变量中,推荐安装xampp,一步到位。

VS2008 SP1 :下载地址

PHP 5.4.31源码:下载地址

PHP5ts.lib:下载地址

安装完开发环境之后,就可以开始进行配置了。在Windows下开发扩展在创建项目时比在Ubuntu上要麻烦的多,一个是需要PHP的源代码,还有一个就是配置需要先构建一个项目,然后手动配置,不能像Ubuntu下那么直接执行一个脚本就完事了。将源代码部署在E:\Projects\php-5.4.45-src路径下,然后使用管理员身份运行终端(cmd.exe)然后

cd E:\Projects\php-5.4.45-src\ext
php ext_skel_win32.php --extname=hello

就可以构建一个PHP扩展的开发项目,(路径在 E:\Projects\php-5.4.45-src\ext\hello)可以看到如下图所示的项目文件

利用之前安装好的VS2008SP1 打开这个项目。可以看到如下内容

右键选中项目 打开右键菜单-->属性,如下

点击C/C++-->常规,找到并打开如下图红圈所示

把这是个地址都修改成PHP源码部署的绝对地址,这样就不会出现稍微移动一下项目位置就会出现不能编译的问题,修改后的地址如下

配置好之后,还需要在PHP源码上做一些设置,

(1)将E:\Projects\php-5.4.45-src\win32\build\config.w32.h.in 拷贝到E:\Projects\php-5.4.45-src\main下,并把最后的.in后缀去掉,否则编译的时候会出现

找不到..main\config.w32.h文件的错误

(2)需要单独下载php5ts.lib并进行配置,否则会出现

1>LINK : fatal error LNK1181: 无法打开输入文件“php5ts.lib”

错误,将php5ts.lib解压到E:\Projects\php-5.4.45-src\build,然后打开项目属性--->链接器--->输入,然后把值改成如下图标识的样子。

到此为止,就可以开始编译项目了。编译出来的动态库,通过在php.ini后增加扩展的方式,然后重启xampp,就可以通过phpinfo()函数看到了。

第三是在Ubuntu平台下的编译部署,在Ubuntu下开发php扩展要简单的多,首先一样先安装xampp for Ubuntu,安装方法可以参考我前一篇文章《Ubuntu16.04的PHP开发环境配置》。然后配置系统的php环境,执行如下命令

将系统php和xampp中的php链接在一起,这样可以方便测试php扩展。系统的php命令路径在 cd /usr/local/bin,所以先切换到该路径下

cd /usr/local/bin
sudo mv php php-5.4.45
sudo mv php-cgi php-cgi-5.4.45
sudo mv php-config php-config-5.4.45
sudo mv phpize phpize-5.4.45

sudo ln -s /opt/lampp/bin/php-5.4.31 php
sudo ln -s /opt/lampp/bin/php-cgi-5.4.31 php-cgi
sudo ln -s /opt/lampp/bin/php-config-5.4.31 php-config
sudo ln -s /opt/lampp/bin/phpize-5.4.31 phpizesudo ln -s /opt/lampp/etc/php.ini /usr/local/lib/php.ini

执行之后,xampp apache使用的php和终端使用的php就是同一个了。

接下来就可以开始创建项目了,设置PHP源码放置在 home/Projects/php-5.4.45-src

注意  ext_skel 刚开始是没有执行权限的,需要执行如下命令 给予执行权限

chmod 777 ext_skel

那么接下去创建项目可以执行如下的命令

cd /home/Projects/php-5.4.45-src/ext
sudo ./ext_skel --extname=hellocd hellogedit config.m4 /*找到第16行和第18行去掉前面的dnl注释,如下图所示*/
sudo phpize
sudo ./configure
sudo make && make install
sudo make test

注意保存文件之后,还需要执行phpize,否则还是会碰到不生成.so文件的问题。

时间: 2024-08-27 18:05:32

PHP扩展开发编译环境的搭建的相关文章

YOCTO编译环境的搭建

一.YOCTO编译环境的搭建 参照<freescale_imx6_yocto.pdf>文档P14-P16页构建yocto编译环境.同时可参考https://linux.cn/article-8268-1.html?amputm_medium=rss. 具体操作步骤如下(有些命令需要su权限,视具体情况而定): 以下操作基于ubuntu 16.04 64bit系统,预留至少120G硬盘空间,推荐2G内存. 1.apt-get update 2.apt-get install wget git-c

在安卓手机上学习C语言 - 安卓手机C/C++编译环境的搭建 : 程序世界的创建

   在安卓手机上学习C语言           安卓手机C/C++编译环境的搭建 : 程序世界的创建 在电脑上运行的QQ,手机上的QQ都是程序, 这些通电就能用的神奇玩意, 如果我说它们都是程序员用一个一个英文字母,数字,奇奇怪怪的符号创造出来的,我想那些没有任何概念的朋友可能会感到惊讶. 是的, 在没有揭开程序世界的神秘面纱之前, 一切都是那么神奇. 实际上, 程序确实是用一个一个英文字母(或者说拼音字母...)来写出来的, 就和写小说一样写出来的. 但是并不是写完之后把写出来的内容保存到一

【Android】Ubuntu 16.04搭建Android开发编译环境

一. 通用Android环境和工具配置 1. 系统更新升级 sudo apt-get update sudo apt-get upgrade 2. 配置ntlmaps代理上网环境(本公司网络需要代理) sudo apt-get update sudo apt-get install ntlmaps Parent proxy:cnkusisal Parent proxy port:8080 NT Windows domain:wkscn 以后如果需要重新配置ntlmaps可以用下面命令: sudo

Windows10下WebAssembly C/C++编译环境的搭建与Hello World尝试

首先,不论是在Windows.Linux还是Mac上,Webassembly的编译都是主要依赖于Emscripten SDK这个工具的.但是,在这里必须要吐槽一下,不论是WebAssembly官网.WebAssembly中文网还是Emscriptem官网安装文档上给出的安装方式基本都是这样的(中文网主要是Windows上的安装,更简单一些): 1.准备好git,cmake(这个好像可以没有).python2.7这三样 2.使用git从GitHub上clone下来一个48k的emsdk工程到本地.

第一篇:《UNIX 网络编程 第二版》编译环境的搭建

第一步:搭建基本的编译环境 安装gcc, g++, bulid-essential等编译软件 第二步:下载本书示例源码包 第三步:解压下载到的包并放在用户主目录中 第四步:进入包内并执行以下命令 1 sudo chmod u+x configure 2 ./configure 第五步:进入包内lib子目录下执行make命令 第六步:进入包内libfree子目录下执行make命令 第七步:进入包内libgai子目录下执行make命令 第八步:执行以下命令,将前面生成的libunp.a库复制到/us

Windows下QT4.8.4编译环境的搭建(转载http://blog.csdn.net/bestgonghuibin/article/details/38933141)

开始使用QT了,所以第一步就是把环境搭起来,这里小记一下,以免以后忘记. 1. 下载安装文件 要使用QT功能,那么必须要下载QT的源码,还必须要一个是用QT的编译环境,可以是VS2010,也可以是专用于QT编程的QT Creator.本人选择QT Creator,所以也必须要下载QT Creator. 根据网上大部分教程及自己买的书籍获取的信息,在选择版本的时候,QT 源码选择4.8.4,而QT Creator选择2.8.0(QT5.0以后许多原有的文件路径改变). 选择好版本之后,可以上QT的

PHP扩展开发学习环境搭建

在centos7中编译安装php,并构建自定义扩展: 1. 运行centos7容器镜像 docker pull centos:centos7 docker run -itd --name phpdev -v /work/src/in/linux:/work/src:z centos:centos7 2. 进入phpdev容器,下载php7.3.1源码置于挂载目录中,解压缩,进入源码目录 docker exec -it phpdev /bin/bash cd /work/src tar -xvf

搭建Android L开发编译环境

下载,安装ubuntu 12.04 http://releases.ubuntu.com/12.04/ 安装JDK Android L版本需要openjdk 7.0以上版本,KK版本需要oracle jdk 1.6.26以上版本 $ sudo apt-get update $ sudo apt-get install openjdk-7-jdk 配置默认运行的java版本 运行以下命令进行配置 $ sudo update-alternatives --config java $ sudo upd

TypeScript01 编译环境的搭建、字符串特性、类型特性

知识准备:JavaScript满足ES5前端规范.TypeScript满足ES6前端规范 1 TypeScript开发环境 TypeScript代码不能直接被浏览器识别,必须先转换成JS代码:通常是利用编译器来讲TS代码转换成JS代码 1.1 使用在线的编辑器 1.1.1 利用TypeScript官网提供的编译器 TypeScript官网地址:点击前往 TypeScript官网提供的在线编译器:点击前往 1.1.2 利用Babel官网提供的编译器 Babel官网地址:点击前往 Babel官网提供