Linux编译升级php的详细方法
2015-01-24信息快讯网
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:Cenable-opcache
php-5.3.10编译时加了Cenable-safe-mode选项,但是php-5.4.0已经去掉了该选项,编译时可以 ./configure Chelp | grep “safe-mode” 查看一下,没有信息输出,表示已经不支持!
同样去处的还有:'Cenable-discard-path','Cenable-fastcgi','Cenable-force-cgi-redirect','Cwith-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 [email protected] php_flag[display_errors] = on
备注:请根据自己的情况修改配置文件
5.修改启动项:
cp /usr/local/webserver/php-d/php-5.5.0/bin/php /etc/init.d/php
使用PHP函数scandir排除特定目录
php 过滤英文标点符号及过滤中文标点符号代码
PHP读取RSS(Feed)简单实例
PHP使用Alexa API获取网站的Alexa排名例子
Codeigniter+PHPExcel实现导出数据到Excel文件
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
在PHP中运行Linux命令并启动SSH服务的例子
php调用nginx的mod_zip模块打包ZIP文件
CI框架中libraries,helpers,hooks文件夹详细说明
浅谈Eclipse PDT调试PHP程序
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
PHP、Nginx、Apache中禁止网页被iframe引用的方法
分享一段php获取linux服务器状态的代码
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
php define的第二个参数使用方法
php获取操作系统语言代码
Php header()函数语法及使用代码
php配置php-fpm启动参数及配置详解
mac下安装nginx和php
php使用curl模拟登录后采集页面的例子
php cURL和Rolling cURL并发方式比较
php操作mysqli(示例代码)
PHP 使用pcntl和libevent 实现Timer功能
php模拟ping命令(php exec函数的使用方法)
PHP中include与require使用方法区别详解
div li的多行多列 无刷新分页示例代码
php mysql_real_escape_string函数用法与实例教程
PHP mysql与mysqli事务使用说明 分享
在wamp集成环境下升级php版本(实现方法)