Ubuntu16.04编译PHP7.0,并开发PHP扩展

准备

先下载PHP源文件使用:
wget https://downloads.php.net/~ab/php-7.0.11RC1.tar.bz2

下载完成后解压:
tar jxf php-7.0.11RC1.tar.bz2

安装编译用的一些第三方:
sudo apt-get update
sudo apt-get install libxml2-dev

安装gcc
sudo apt-get install build-essential

sudo apt-get install openssl
sudo apt-get install libssl-dev
sudo apt-get install make
sudo apt-get install curl
sudo apt-get install libcurl4-gnutls-dev

sudo apt-get install libjpeg-dev
sudo apt-get install libpng-dev
sudo apt-get install libmcrypt-dev
sudo apt-get install libreadline6 libreadline6-dev
进入目录
cd php-7*

编译 安装 PHP

./configure

sudo make install

编译完成后,使用php -v
查看当前版本,当出现下图所示说明编译安装完成:
这里写图片描述

扩展开发

生成扩展

首先进入PHP代码中的ext目录:
在其下面创建一个文件:sunny.def,内容如下:

string self_concat(string str, int n)

运行下面的命令:

./ext_skel --extname=sunny --proto=sunny.def

可以看到当前目录下多出了一个sunny目录,进入sunny目录:
可以看到有个config.m4文件,修改其中的这三行:
这里写图片描述
去掉dnl
这里写图片描述
修改完成后先安装一个第三方:
sudo apt-get install php-dev
然后在当前目录下使用命令行:
phpize
会看到出现了很多新文件,在使用命令行:
./configure
sudo make
就可以看到当前目录下多了一个modules文件夹:
打开之后有个sunny.so文件即为可用的linux下的扩展

将扩展加入到当前的PHP环境中:

使用命令行:php -info|more
可以看到当前PHP的配置文件的目录,如下:
这里写图片描述
扩展目录如下:
这里写图片描述
先将sunny.so复制到对应得扩展目录,再修改php.ini,方式如下:

可以选择复制当前PHP源文件下的php.ini-development或者php.ini-production文件中的一个到上面的:
/usr/local/lib文件夹下:
修改php.ini,加入:
extension=sunny.so
如此修改完成之后使用命令行查看:
php -m
可以看到如下图所示:
这里写图片描述
说明已经安装完成。
如果想进一步测试,可以用下面的方式:
新建一个php文件,内容为:

<?php
print confirm_sunny_compiled("sunny");

可以看到输出了下图内容说明已经测试成功:
这里写图片描述
然后重新打开扩展目录sunny,修改其中的sunny.c文件
这里写图片描述
修改完成后重新编译,复制sunny.so到指定的扩展目录,然后修改测试php文件为

<?php
for ($i = 1; $i <= 3; $i++){
     print self_concat("ThisIsUseless", $i);
     print "\n";
}
?>

执行后输出:
这里写图片描述
说明扩展成功,当然上面只是简单的C语言循环字符串的demo,没有实际意义,仅供参考
参考:http://blog.csdn.net/earbao/article/details/50235413
http://www.laruence.com/2009/04/28/719.html

以上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值