前言
在几种情况下,我们会需要进行PHP扩展开发:
- PHP本身无法访问的资源或是调用,通过扩展的方式可以实现
- 处于性能和效率的考虑,用C实现会更好
- 处于商业或代码保护考虑,将代码封装起来
- 为了更深入的了解PHP,从这里入门
不管是出于什么原因吧,在看这篇文章的时候,我默认你是有进行PHP扩展开发这个需求的。本篇文章会分为三个系列从安装、简单实现一个扩展、到深入理解扩展机制和相关API。这也计划把自己最近一段时间以来做PHP扩展开发的一些经验和记录写下来。
准备工作
PHP扩展开发首先要有的是一个源码安装的PHP环境,从简单的角度出发,推荐我们公司的开源项目MooENV。
这是一个自动化部署LAMP环境的开源项目,目前主要是公司运维的同事在维护。特别适合VPS或者虚拟机一键安装环境使用,多了不推荐了,我们开始吧。
安装Git
在CentOS 5.x下面安装Git需要自己编译,详细参见文章《在CentOS上安装Git》;CentOS 6.x下直接yum install git
即可
安装MooENV
首先把MooENV的源码git clone到本地,才能开始安装,好按照下面的步骤继续吧。
git clone git://github.com/Ismole/MooENV.git
cd MooENV/
dmesg -c #这一步的主要目的是清除系统级别的错误,如果有系统级的错误,MooENV是不能继续安装的,在这里我默认你是在虚拟机装的MooENV,所以直接忽略掉。
./install.sh
下面进入安装MooENV安装过程中的几个问题
Do You Agree To The Terms Of This License? (Y/N)
#这个必然选y
=== Which Integrate Environment You Want? ===
1: L.N.M.P - Nginx/PHP-FastCGI/MySQL/NoSQL
2: L.A.M.P - Apache/PHP/MySQL/NoSQL
#按照你的喜好选择是Apache还是Nginx吧
Do you want to change default YUM mirror to others? (y/n)
#新系统我都选y,YUM升级下
SELECT YUM MIRROR
1. 163 - http://mirrors.163.com
2. Sohu - http://mirrors.sohu.com
3. Custom - Manually input URL
Which YUM Mirror Do You Want To Use? (1/2/3):
#这个我一般选择163的YUM镜像
Do you want to perform a YUM update now? (y/n)
#YUM是否立即升级,推荐升级下
#然后就是一个依赖库安装的过程
=== Set MySQL root password ===
*** Input password:
#输入MySQL的root密码
=== Environment Backup Setting ===
Do you want to add backup job to system cron? (Y/N)
#是否添加自动备份
=== System Services Configuration ===
Do you want Web Server start at boot time? (Y/N)
#是否自动启动Nginx或是Apache
Do you want MySQL Server start at boot time? (Y/N)
#是否自动启动MySQL
PHP安装完毕
以后我们最常用到的目录就会是PHP的源码目录,可能是这样
cd MooENV/src/php-5.3.8/ext/
这篇文章的内容完毕了,下面上张图片,其实你可能已经看出来了,本文的重点是推荐MooENV,哈哈。
史诗级坑爹巨制
你丫是禁止评论了么?
评论审核后发表,不然垃圾广告太多了。
额。。。应该还有续篇吧。。。
确实还有续篇~
你的SAE可以支持独立域名?
查看这里,http://sae.sina.com.cn/?m=devcenter&content_id=36&catId=9
那你的域名也是在上面备的案??
是之前,备案好了的
PHP 版本可以选择或者更新么?
Starting MySQL.The server quit without updating PID file (/usr/local/mysql/data/isa252.hxsd.local.pid). [失败]
Install mysql-5.5.17-linux2.6-x86_64.tar.bz2 Failed!
本来是来看扩展开发的,意外收获一个MooENV。。。
MooENV Do Not Support Your OS Release.
Please Install CentOS 5/6 On Your Server.
不支持debian或者ubuntu吗?
没有中文介绍么我英文很烂啊, 博主C很厉害吧
我想请教一下你我在PHP扩展中遇到的问题,你了解 struct zend_arg_info 吗? 你知道如何获取 (zval*) 变量名称吗?
可以直接这样获取吗? (zval *)->arg_info->name