说明
环境:
ubuntu14.4
php5.5.9 通过apt-get 安装
因为不同于编译安装的php,需要重新下载php源码进行扩展。
$ sudo apt-get source php5
保存目录可自定义
打开源码文件进入到ext中,这里是存放扩展的地方,我们可以看到有 许多官方的扩展
这里可以科普一下php源码的主要目录以及功能
./main包含PHP主要宏定义
./pear 包含PEAR核心文件
./sapi 包含不同服务器抽象层代码
./Zend包含引擎的所有文件
我们要用到php-dev包,编译安装下会内置
$sudo apt-get install php5-dev
$phpize-v
验证安装是否成功
正式开始扩展
使用ext_skel 这个文件就在ext目录下
$./ext_skel --extname=newext
很多教程上都是这一句命令,但我在使用过程中发现了会在后续过程中无法找到newext.c文件
查找刚才的操作,发现会报cannot open /skeleton.c: No such file 原来是找不到skeleton.c 我们可以通过查看ext_skel发现
所以需要指定skel的path
删除原先newext目录,重新走一遍
$ ./ext_skel --extname=newext --skel=/usr/lib/php5/skeleton
成功后返回
根据提示我们需要更改 /newext2/config.m4 的注释
$cd newext2
$phpize
$./configure --with-php-config=/usr/bin/php-config
$make
在这里需要注意,如果出现make无规则错误 需要查看php-config路径是否正确
若编译成功会如下所示
$make test
$make install
接着我们就修改php.ini文件
增加extension = newext2.so
注意cli模式和cgi模式下的php.ini文件是不一样的,我在刚开始实验的时候发现cli模式下使用
$usr/bin/php -m
并没有发现newext2的扩展
后来在cgi下输出phpinfo却能看到
后来 在cli下 输出phpinfo 找到php.ini的路径作出修改最后成功
控制台下phpinfo输出过大可以使用下面方法
$ php phpinfo.php | less
找到路径后进行更改
修改后别忘记restart apache
网上有很多相关的教程,我参考了《PHP和新技术与最佳实践》第七章和自己在实际操作遇到的问题进行整理总结,特别针对非编译安装PHP的情况,主要是注意配置文件的路径问题。