PHP内核-环境搭建(一)
难得闲下来,发现自己没有系统的学习过PHP内核,希望我能够慢慢啃下PHP内核书籍,无论是抄袭也好,码字也好,一步一个脚印走下去。
学习来源:http://www.php-internals.com/book/?p=chapt01/01-01-php-env-building
在开始学习PHP实现之前,我们需要一个实验和学习的环境。下面介绍一下怎样在*nix环境下准备和搭建PHP环境。
本章学习目录
1、寻找PHP源码
2、准备编译环境
3、编译
一、寻找PHP源码
为了学习PHP的实现,首先需要下载PHP的源代码。下载源码首选是去PHP官方网站http://php.net/downloads.php下载, 如果你喜欢使用svn/git等版本控制软件,也可以使用svn/git来获取最新的源代码。
# git 官方地址 git clone https://git.php.net/repository/php-src.git # 也可以访问github官方镜像 git clone git://github.com/php/php-src.git cd php-src && git checkout PHP-5.3 # 签出5.3分支
源码包下载地址:https://pan.baidu.com/s/1bpi4D9l
二、准备编译环境
解压PHP压缩包:
tar –zxvf php-7.2.0.tar.gz
进入解压后的目录:
cd php7.2.0
安装PHP需要的扩展:
yum install libxml2 libxml2-devel openssl openssl-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt libmcrypt-devel -y
三、编译
配置参数扩展
./configure --prefix=/usr/local/php720 --with-mysqli --with-pdo-mysql --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-simplexml --enable-xml --disable-rpath --enable-bcmath --enable-soap --enable-zip --with-curl --enable-fpm --with-fpm-user=nobody --with-fpm-group=nobody --enable-mbstring --enable-sockets --with-gd --with-openssl --with-mhash --enable-opcache --disable-fileinfo
编译安装
make && make install
配置Nginx.conf 支持解析PHP
打开nginx配置文件(/usr/local/nginx/conf/nginx.conf)
找到localtion模块,在index后面添加index.php,使nginx识别php文件;
![](https://images2018.cnblogs.com/blog/1263178/201806/1263178-20180619172121648-1571645174.png)
继续往下滑在修改:
启动php-fpm:
1、将php-fpm.conf.default复制为php-fpm.conf
cd /usr/local/php720/etc cp php-fpm.conf.default php-fpm.conf
2、然后启动php-fpm
/usr/local/php720/sbin/php-fpm
3、如果启动报错(如下图):
解决方法:进入到 /usr/local/php720/etc/php-fmp.d下的www.conf.default 复制为www.conf,然后启动php-fpm;
进入文件夹(如果进不去,就一步步的cd进去; 如果没有这个文件就自己创建个php-fpm.d文件夹,再进到网址下载www.conf文件:https://pan.baidu.com/s/1o8mRYkU)
cd /usr/local/php720/etc/php-fpm.d cp www.conf.default www.conf
4、先把php-fpm进程清除
pkill php-fpm
5、再启动php-fpm
/usr/local/php720/sbin/php-fpm
最后在/usr/local/nginx/html下新建文件index.php,输出phpinfo; 显示成功,说明php安装成功