在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 php-7.3.1.tar.gz cd php-7.3.1
3. 编译php源码
yum install autoconf make gcc re2c flex bison libxml2-devel.x86_64 libcurl-devel.x86_64 openssl-devel.x86_64 zlib-devel.x86_64 readline-devel.x86_64 ./buildconf --force ./configure --enable-debug --with-openssl --with-zlib --enable-mbstring --with-pdo-mysql --with-curl --with-readline --enable-zip --enable-fpm make make install
4. 配置
#查看php配置文件应该放到哪里 php -i | grep php.ini Configuration File (php.ini) Path => /usr/local/lib
#拷贝php.ini文件到上述路径 cp /work/src/php-7.3.1/php.ini-development /usr/local/lib/php.ini #查看php配置文件位置 php --ini Configuration File (php.ini) Path: /usr/local/lib Loaded Configuration File: /usr/local/lib/php.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none)
5. 构建一个扩展框架
cd ext
/work/src/php-7.3.1/sapi/cli/php -f ext_skel.php --ext sample
修改编译自己的扩展:
To use your new extension, you will have to execute the following steps: 1. $ cd .. 2. $ vi ext/sample/config.m4 3. $ ./buildconf 4. $ ./configure --[with|enable]-sample 5. $ make 6. $ ./sapi/cli/php -f ext/sample/sample.php 7. $ vi ext/sample/sample.c 8. $ make
修改自己的扩展后,只需重新make,然后通过sapi/cli/php来测试修改是否成功,要想直接使用php命令,需要每次make后都执行make install。
在php容器中构建自定义扩展:
运行并进入php容器内,php源码目录位于容器内/usr/src,首先需要解压php源码,在ext目录中构建自定义扩展,通过docker-php-ext-install命令安装扩展,最后重启容器生效。
#解压源码到/usr/src/php文件夹内 docker-php-source extract #进入源码扩展目录 cd /usr/src/php/ext #构建自定义扩展 php -f ext_skel.php --ext sample #编辑自定义扩展。。。 #安装扩展 docker-php-ext-install sample #exit退出容器,重启容器 exit docker restart php
查看php扩展:
php -m