1 环境说明
操作系统:CentOS release 6.9 (Final)
软件版本:php-5.6.40
2 安装依赖
==根据需求安装==
yum -y install libxml2 libxml2-devel openssl openssl-devel \
bzip2 bzip2-devel curl curl-devel libjpeg libjpeg-devel \
libpng libpng-devel freetype-devel gmp-devel mysql-devel \
ncurses ncurses-devel unixODBC-devel net-snmp-devel \
libmcrypt libmcrypt-devel net-snmp mhash-devel
需要特殊处理的依赖
# openldap
yum -y install openldap openldap-devel
# 一定要执行这条命令
cp -frp /usr/lib64/libldap* /usr/lib/
3 下载&安装
cd /usr/local/src
wget https://www.php.net/distributions/php-5.6.40.tar.gz
tar -zxf php-5.6.40.tar.gz
cd php-5.6.40
./configure --prefix=/usr/local/php-5.6.40 --with-openssl --enable-fpm --with-mysql \
--enable-sockets --enable-sysvshm --enable-mbstring --enable-bcmath --with-freetype-dir \
--with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir=/usr --with-pdo_mysql \
--enable-xml --with-mhash --with-mcrypt --with-config-file-path=/usr/local/php-5.6.40/etc \
--with-bz2 --with-curl --with-gd --with-gettext --with-snmp --with-ldap --with-mysqli
make
make install
# 创建软连接
ln -s /usr/local/php-5.6.40 /usr/local/php
cp sapi/fpm/php-fpm /usr/local/bin
cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
3.1 扩展插件
以mysqli为例,演示日后如何扩展插件
cd /usr/local/src/php-5.6.40/ext/mysqli
yum install autoconf // 执行phpize命令时需要
/usr/local/php/bin/phpize // 生成configure文件
./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli
make && make install
# 如果 mysqli.so文件存在,则说明 mysqli安装好了
ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/mysqli.so
# 接着编辑 php.ini文件
vim /usr/local/php/etc/php.ini
在文件中加入extension=mysqli.so
# 重启 php-fpm即可
kill -USR2 pid // pid为 PHP master进程的进程号
3.2 修改配置文件
以zabbix的需求为例
1、修改php-fpm.conf
[root@localhost ~]# vim /usr/local/php/etc/php-fpm.conf
# 修改 user和 group,和 nginx的启动用户一致
user = www
group = www
2、修改php.ini
[root@localhost ~]# vim /usr/local/php/etc/php.ini
upload_max_filesize = 20M
post_max_size = 20M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai
4 踩过的坑
1、make时,报如下错误
/usr/lib64/liblber-2.4.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
在PHP源码目录下 vim Makefile
找到 EXTRA_LIBS
行,在行末添加 -llber
保存退出再次 make
即可
2、make后有以下提示
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
此提示可以忽略,make install时会自动安装PEAR