1、演示环境
# more /etc/redhat-release
CentOS release 6.9 (Final)
2、扩展支持(mcrypt、mhash扩展和libevent)
如果想让编译的php支持mcrypt、mhash扩展和libevent,需要安装以下包
libmcrypt
libmcrypt-devel
mhash
mhash-devel
说明:
mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。
mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启。
mhash的可以用于创建校验数值,消息摘要,消息认证码,以及无需原文的关键信息保存(如密码)等。
centos源不能安装libmcrypt-devel,由于版权的原因没有自带mcrypt的包
解决方法1:
安装扩展包
yum install epel-release //扩展包更新包
解决方法2:
安装第三方yum源
# wget http://www.atomicorp.com/installers/atomic
# sh ./atomic
使用yum命令安装
# yum install php-mcrypt libmcrypt libmcrypt-devel mhash mhash-devel
3、libevent相关包
可以根据需要安装libevent,系统一般会自带libevent,但版本有些低。因此可以升级安装如下两个rpm包。
# yum install libevent libevent-devel
说明:
libevent是一个异步事件通知库文件,其API提供了在某文件描述上发生某事件时或其超时时执行回调函数的机制
它主要用来替换事件驱动的网络服务器上的event loop机制。
目前来说, libevent支持/dev/poll、kqueue、select、poll、epoll及Solaris的event ports。
4、支持xml的相关包
支持xml的rpm包
bzip2 是一个基于Burrows-Wheeler 变换的无损压缩软件能够高效的完成文件数据的压缩
libcurl主要功能就是用不同的协议连接和沟通不同的服务器,也就是相当封装了的sockPHP
libcurl允许你用不同的协议连接和沟通不同的服务器
# yum install libxml2 libxml2-devel bzip2-devel libcurl-devel
5、图形相关的rpm包
通常对应的错误提示:JIS-mapped Japanese font support in GD
# yum install libjpeg-devel libpng-devel freetype-devel
tar -xzvf php-5.6.25.tar.gz
cd php-5.6.25
# 启用mysqlnd
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-opcache --enable-fpm --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gettext --enable-mbstring --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-zlib --enable-zip --with-bz2 --with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-readline
# 不启用mysqlnd
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-opcache --enable-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-gettext --enable-mbstring --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-zlib --enable-zip --with-bz2 --with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-readline
PHP5.3这样启用mysqlnd支持:
–with-mysql=mysqlnd
–with-mysqli=mysqlnd
–with-pdo-mysql=mysqlnd
PHP5.4后留空则默认启用mysqlnd:
–with-mysql
–with-mysqli
–with-pdo-mysql
# make
# make install
PHP的编译过程中,一直报错
configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no
Don't know how to define struct flock on this system, set --enable-opcache=no
解决方法:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.so /usr/lib/
sudo ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
注意,64位的系统要改成:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.so /usr/lib64/
sudo ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18
php.ini是php运行核心配置文件
php-fpm.conf是php-fpm进程服务的配置文件
# 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
# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod +x /etc/init.d/php-fpm
# chkconfig --add php-fpm
# chkconfig php-fpm on
# service php-fpm start
Starting php-fpm done
# ps -ef|grep php
root 45690 1 0 20:07 ? 00:00:00 php-fpm: master process(/usr/local/php/etc/php-fpm.conf)
nobody 45691 45690 0 20:07 ? 00:00:00 php-fpm: pool www
nobody 45692 45690 0 20:07 ? 00:00:00 php-fpm: pool www
root 45694 3441 0 20:07 pts/4 00:00:00 grep php
# netstat -nltp|grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 45690/php-fpm