线上服务器php5.3.8升级到php5.6.3
服务器类型 CentOS 6.5
因为项目要用到php5.4以上的新功能 目前服务器还是用php5.3.8版本 所以升级版本就非常需要了。
首先 连上服务器 先把 php-fpm服务关闭(其实不影响的,因为程序在内存里面跑 不关也没事的) 然后 先把 /usr/local/php 重命名 以防止如果新版本更新失败 回滚
mv /usr/local/php /usr/local/php5.3.8
然后 下载最新版本php5.6.3 并且解压
wget http://www.php.net/distributions/php-5.6.3.tar.gz tar -zxvf php-5.6.3.tar.gz
因为是升级 所以 php很多依赖包我都已经装过了 先贴上我的 configure 配置参数
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-fpm-user=www --with-fpm-group=www --enable-fpm --enable-opcache --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --disable-fileinfo --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-exif --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-ftp --with-gettext --enable-zip --enable-soap --disable-ipv6 --disable-debug
其中 最为注意的是 开启 opcache 可以缓存opcode 提高php性能
还有 --disable-debug --disable-ipv6 关闭 debug ipv6 可以提升性能
第一次make 出错了
ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor': /home/king/php-5.2.13/ext/iconv/iconv.c:2491: undefined reference to `libiconv_open' collect2: ld returned 1 exit status make: *** [sapi/cli/php] Error 1
网上找到解决办法
在安裝 PHP 到系统中时要是发生「undefined reference to libiconv_open‘」之类的错误信息,那表示在「./configure 」沒抓好一些环境变数值。错误发生点在建立「-o sapi/cli/php」是出错,没給到要 link 的 iconv 函式库参数。 解决方法:编辑Makefile 大约77 行左右的地方: EXTRA_LIBS = ..... -lcrypt 在最后加上 -liconv,例如: EXTRA_LIBS
= ..... -lcrypt -liconv 然后重新再次 make 即可。
然后 重新make 顺利通过了
make clean #清除上次编译生成的 obj文件 make ZEND_EXTRA_LIBS='-liconv' make install
配置 优化下 php.ini 具体参数可以百度下 都是比较容易理解的
sed -i 's@^output_buffering =@output_buffering = On\noutput_buffering =@' /usr/local/php/etc/php.ini sed -i 's@^;cgi.fix_pathinfo.*@cgi.fix_pathinfo=0@' /usr/local/php/etc/php.ini sed -i 's@^short_open_tag = Off@short_open_tag = On@' /usr/local/php/etc/php.ini sed -i 's@^expose_php = On@expose_php = Off@' /usr/local/php/etc/php.ini sed -i 's@^request_order.*@request_order = "CGP"@' /usr/local/php/etc/php.ini sed -i 's@^;date.timezone.*@date.timezone = Asia/Shanghai@' /usr/local/php/etc/php.ini sed -i 's@^post_max_size.*@post_max_size = 50M@' /usr/local/php/etc/php.ini sed -i 's@^upload_max_filesize.*@upload_max_filesize = 50M@' /usr/local/php/etc/php.ini sed -i 's@^;upload_tmp_dir.*@upload_tmp_dir = /tmp@' /usr/local/php/etc/php.ini sed -i 's@^max_execution_time.*@max_execution_time = 5@' /usr/local/php/etc/php.ini sed -i 's@^disable_functions.*@disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,popen@' /usr/local/php/etc/php.ini sed -i 's@^session.cookie_httponly.*@session.cookie_httponly = 1@' /usr/local/php/etc/php.ini sed -i 's@^mysqlnd.collect_memory_statistics.*@mysqlnd.collect_memory_statistics = On@' /usr/local/php/etc/php.ini
刚才装了 opcache 模块 这里设置下
sed -i 's@^\[opcache\]@[opcache]\nzend_extension=opcache.so@' $php_install_dir/etc/php.ini sed -i 's@^;opcache.enable=.*@opcache.enable=1@' $php_install_dir/etc/php.ini sed -i "s@^;opcache.memory_consumption.*@opcache.memory_consumption=128" $php_install_dir/etc/php.ini sed -i 's@^;opcache.interned_strings_buffer.*@opcache.interned_strings_buffer=8@' $php_install_dir/etc/php.ini sed -i 's@^;opcache.max_accelerated_files.*@opcache.max_accelerated_files=4000@' $php_install_dir/etc/php.ini sed -i 's@^;opcache.revalidate_freq.*@opcache.revalidate_freq=60@' $php_install_dir/etc/php.ini sed -i 's@^;opcache.save_comments.*@opcache.save_comments=0@' $php_install_dir/etc/php.ini sed -i 's@^;opcache.fast_shutdown.*@opcache.fast_shutdown=1@' $php_install_dir/etc/php.ini sed -i 's@^;opcache.enable_cli.*@opcache.enable_cli=1@' $php_install_dir/etc/php.ini sed -i 's@^;opcache.optimization_level.*@;opcache.optimization_level=0@' $php_install_dir/etc/php.ini
生成下 php-fpm 文件
vim /usr/local/php/etc/php-fpm.conf [global] pid = /usr/local/php/var/run/php-fpm.pid error_log = /usr/local/php/var/log/php-fpm.log log_level = notice [www] listen = /tmp/php-cgi.sock listen.backlog = -1 listen.allowed_clients = 127.0.0.1 listen.owner = www listen.group = www listen.mode = 0666 user = www group = www pm = dynamic pm.max_children = 10 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 6 request_terminate_timeout = 100 request_slowlog_timeout = 0 slowlog = var/log/slow.log
添加到系统服务
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
最后贴一张 phpinfo图片
OK 完成 顺利的 从 php5.3.8 升级到 php5.6.3
小烟原创,转载请注明出处 谢谢
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。