Linux编译升级php的详细方法

 更新时间:2013年11月04日 12:02:35   作者:  
Linux编译升级php的详细方法,有配置php.ini、配置php-fpm.conf的代码。
服务器环境:CentOS – 5.4
php升级:5.4.14 - 5.5.0
升级心得:比较顺利,但是有一点需要说明:eaccelerator无法兼容php5.5.0,好在php在5.5.0默认提供了Zend OPcache,所以一直习惯eaccelerator的朋友如果要升级到php5.5.0的话,可能要暂时和eaccelerator说bye bye了。
1、安装php5.5.0
下载php安装包:http://www.php.net/get/php-5.5.0.tar.gz/from/a/mirror
复制代码 代码如下:

# 解压缩安装包
tar zxvf php-5.5.0.tar.gz

# 进入目录
cd php-5.5.0

# 编译安装
./configure \
--prefix=/usr/local/webserver/php-d/php-5.5.0 \
--with-config-file-path=/usr/local/webserver/php-d/php-5.5.0/etc \
--with-config-file-scan-dir=/usr/local/webserver/php-d/php-5.5.0/etc/php.d \
--with-curl=/usr/local/lib \
--with-freetype-dir=/usr/lib64 \
--with-gd \
--with-gettext \
--with-iconv-dir=/usr/local/lib \
--with-jpeg-dir=/usr/lib64 \
--with-kerberos \
--with-ldap \
--with-ldap-sasl \
--with-libdir=lib64 \
--with-libxml-dir=/usr/lib64 \
--with-mcrypt \
--with-mhash \
--with-mysql \
--with-mysqli \
--with-openssl \
--with-pcre-regex=/usr \
--with-pdo-mysql=shared \
--with-pdo-sqlite=shared \
--with-pear=/usr/local/lib/php \
--with-png-dir=/usr/lib64 \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--enable-fpm \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-gd-native-ttf \
--enable-mbregex \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-xml \
--enable-zip \
--disable-rpath

make ZEND_EXTRA_LIBS='liconv'
make install
cp php.ini-production /usr/local/webserver/php-d/php-5.5.0/etc/php.ini

这里有几个地方需要说明一下:
安装时,请根据自己的情况添加、删除附加组建,修改对应的目录路径
安装的时候别忘记了搭配opcache:–enable-opcache
php-5.3.10编译时加了–enable-safe-mode选项,但是php-5.4.0已经去掉了该选项,编译时可以 ./configure –help | grep “safe-mode” 查看一下,没有信息输出,表示已经不支持!
同样去处的还有:'–enable-discard-path','–enable-fastcgi','–enable-force-cgi-redirect','–with-curlwrappers'
2.编译安装php5.5.0扩展模块:
安装imagick
安装这个模块需要服务器支持ImageMagick,这里和升级php无关,这部分省略,需要的请自行搜索
下载地址:http://pecl.php.net/package/imagick
复制代码 代码如下:

tar xvzf imagick-3.1.0RC2.tgz
cd imagick-3.1.0RC2
/usr/local/webserver/php-d/php-5.5.0/bin/phpize
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
./configure --with-php-config=/usr/local/webserver/php-d/php-5.5.0/bin/php-config
make
make install

注意:
避免兼容问题,请使用最新版本,请不要使用3.0.1之前的版本
如果安装的时候报错make: *** [imagick_file.lo] 错误 1,请调用pkgconfig
以上目录路径请根据个人情况进行修改
安装memcache:
安装这个模块需要服务器支持memcached,这里和升级php无关,这部分省略,需要的请自行搜索
下载地址:http://pecl.php.net/package/memcache
复制代码 代码如下:

tar xvzf memcache-3.0.tgz
cd memcache-3.0.8
/usr/local/webserver/php-d/php-5.5.0/bin/phpize
./configure \
--enable-memcache \
--with-php-config=/usr/local/webserver/php-d/php-5.5.0/bin/php-config
make
make install

注:请不要使用2.2.6及以下版本,不兼容
安装phpredis-master
安装这个模块需要服务器支持redis,这里和升级php无关,这部分省略,需要的请自行搜索
下载地址:https://github.com/nicolasff/phpredis
复制代码 代码如下:

unzip master
cd phpredis-master
/usr/local/webserver/php-d/php-5.5.0/bin/phpize
./configure \
--enable-redis \
--with-php-config=/usr/local/webserver/php-d/php-5.5.0/bin/php-config
make
make install

至此,所有需要的模块都安装完毕。
3.配置php.ini
复制代码 代码如下:

vi /usr/local/webserver/php-d/php-5.5.0/etc/php.ini

# 找到extension_dir
extension_dir = "/usr/local/webserver/php-d/php-5.5.0/lib/php/extensions/no-debug-non-zts-20121212/"

extension = "imagick.so"
extension = "memcache.so"
extension = "pdo_mysql.so"
extension = "redis.so"

# 找到date.timezone
date.timezone = Asia/Shanghai

# 找到session.save_handler
session.save_handler = redis

# 找到session.save_path
session.save_path = "tcp://127.0.0.1:6379?weight=1"

配置Zend OPcache
一直以来都习惯用eAccelerator为php提供加速,但是目前有两个问题:
eAccelerator暂时不兼容php5.5.0
eAccelerator和Zend Opcache冲突
好在php5.5.0默认提供了Zend Opcache为php加速,配置方法如下:
复制代码 代码如下:

zend_extension = /usr/local/webserver/php-d/php-5.5.0/lib/php/extensions/no-debug-non-zts-20121212/opcache.so
; 上面zend_extension路径为opcache.so的路径

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

注意:如果在您的php扩展模块找不到opcache.so说明没有安装成功,请重新安装
4.配置php-fpm.conf
复制代码 代码如下:

pid = /usr/local/webserver/php-d/php-5.5.0/var/run/php-fpm.pid
error_log = /usr/local/webserver/php-d/php-5.5.0/logs/php-fpm.log

log_level = notice

emergency_restart_threshold = 10
emergency_restart_interval = 60s

process_control_timeout = 5s
daemonize = yes

rlimit_files = 65535
rlimit_core = 0

user = www
group = www

listen.backlog = -1
listen.owner = www
listen.group = www
listen.mode = 0666
listen.allowed_clients = 127.0.0.1

pm = static
pm.max_children = 64
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 1024

ping.response = pong
slowlog = /usr/local/webserver/php-d/php-5.5.0/logs/$pool.log.slow
request_slowlog_timeout = 0
request_terminate_timeout = 0
catch_workers_output = yes

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f jht2718@163.com
php_flag[display_errors] = on

备注:请根据自己的情况修改配置文件
5.修改启动项:
复制代码 代码如下:

cp /usr/local/webserver/php-d/php-5.5.0/bin/php /etc/init.d/php

相关文章

  • 解析php php_openssl.dll的作用

    解析php php_openssl.dll的作用

    本篇文章是对php中php_openssl.dll的作用进行了详细的分析介绍,需要的朋友参考下
    2013-07-07
  • php实现ip白名单黑名单功能

    php实现ip白名单黑名单功能

    本文给大家分享了2个php用于实现黑白名单的实用函数,分别是安全IP检测函数和获取客户端IP函数,注释里解释的非常清楚,这里我就不多废话了。
    2015-03-03
  • PHP三层结构(下) PHP实现AOP

    PHP三层结构(下) PHP实现AOP

    让我们把注意力集中到中间服务层上来。中间服务层代码比较简单,只是调用数据访问层代码将留言保存到数据库。
    2010-07-07
  • php 5.3.5安装memcache注意事项小结

    php 5.3.5安装memcache注意事项小结

    必须注意php的编译版本,下载memcache的时候注意要使用同样的编译版本;比如php是使用vc6编译的,那么memcache也应该使用vc6编译版本。
    2011-04-04
  • php 删除一个数组中的某个值.兼容多维数组!

    php 删除一个数组中的某个值.兼容多维数组!

    php中删除一个数组中的某个值.兼容多维数组,需要的朋友可以参考下
    2012-02-02
  • PHP数学运算与数据处理实例分析

    PHP数学运算与数据处理实例分析

    这篇文章主要介绍了PHP数学运算与数据处理方法,结合实例形式分析了PHP的数据类型与基本数学运算方法,需要的朋友可以参考下
    2016-04-04
  • php实现文章置顶功能的方法

    php实现文章置顶功能的方法

    这篇文章主要介绍了php实现文章置顶功能的方法,结合实例形式分析了php置顶功能的操作步骤与相关实现技巧,需要的朋友可以参考下
    2016-10-10
  • PHP之Swoole学习安装教程

    PHP之Swoole学习安装教程

    这篇文章主要介绍了PHP之Swoole学习安装教程,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • php实现计算百度地图坐标之间距离的方法

    php实现计算百度地图坐标之间距离的方法

    这篇文章主要介绍了php实现计算百度地图坐标之间距离的方法,涉及php字符串、数组及数学运算的相关技巧,需要的朋友可以参考下
    2016-05-05
  • PHP中list方法用法示例

    PHP中list方法用法示例

    这篇文章主要介绍了PHP中list方法用法,结合实例形式分析了list方法实现将数组值赋给变量的相关操作技巧与注意事项,需要的朋友可以参考下
    2016-12-12

最新评论