本文目錄一覽:
- 1、請教centos php 多版本安裝共存切換
- 2、centos 6.0安裝php-5.2.17報錯: 前提是mysql已經安裝,已經成功啟動OK
- 3、centos的php7怎麼安裝memcached擴展
請教centos php 多版本安裝共存切換
Linux下部署php多版本共存
背景說明
自php7問世,身為最新版本控的我馬上升級體驗,但是由於伺服器上還有舊程序在運行,只好部署一個php多版本共存環境。
現有環境是lnmp
– CentOS 6.7
– nginx 1.10.1
– mariadb-10.0.26
– php 7.0.8
為了更好兼容舊的php程序,推薦使用5.4.45. 主要是兼容mysql擴展。
開始安裝
首先要下載php-5.4.45.tar.gz源碼包。
通過源碼安裝
# tar xzvf php-5.4.45.tar.gz
# cd php-5.4.45
# ./configure –prefix=/usr/local/php54 –with-config-file-path=/usr/local/php54/etc –enable-fpm –with-fpm-user=www –with-fpm-group=www –with-mysql=mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –with-iconv-dir –with-freetype-dir=/usr/local/freetype –with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir=/usr –enable-xml –disable-rpath –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –with-curl –enable-mbregex –enable-mbstring –with-mcrypt –enable-ftp –with-gd –enable-gd-native-ttf –with-openssl –with-mhash –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –with-gettext –disable-fileinfo –enable-intl –with-xsl
# make ZEND_EXTRA_LIBS=’-liconv’
# make install
# cp php.ini-production /usr/local/php/etc/php.ini
————————————————————————————————
php.ini 配置
post_max_size = 50M
upload_max_filesize = 50M
date.timezone = PRC
short_open_tag = On
cgi.fix_pathinfo=0
max_execution_time = 300
disable_functions=passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
————————————————————————————————
php-fpm.conf 配置
——————————
# vim /usr/local/php/etc/php-fpm.conf1
[global]
pid = /usr/local/php54/var/run/php-fpm.pid
error_log = /usr/local/php54/var/log/php-fpm.log
log_level = notice
[www]
listen = /tmp/php54-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1:9001
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 40
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 40
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/slow.log
———————————————————————————-
啟動 php-fpm
# cp sapi/fpm/init.d.php-fpm /etc/init.d/php54-fpm
# chmod +x /etc/init.d/php54-fpm
# /etc/init.d/php54-fpm start
——————————————————————————————-
修改nginx配置,對需要的服務配置使用php-5.4.45
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php54-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
—————————————————————————————-
配置php-5.4.45 的php54-fpm 開機自動啟動
# chkconfig –add php54-fpm
# chkconfig php54-fpm on
centos 6.0安裝php-5.2.17報錯: 前提是mysql已經安裝,已經成功啟動OK
1、no mysql_config not found configure: error
2、你的配置
–with-mysql=/usr/local/mysql
–with-mysqli=/usr/local/mysql/bin/ mysql_config 查查這個地方,似乎有個空格
–with-mysql-sock=/tmp/mysql.sock
3、確認已經安裝mysql-devel
rpm -qa|grep mysql-devel
4、如果php5.3可以用mysqlnd (MySQL native driver for PHP)
–with-mysql=mysqlnd \
–with-mysqli=mysqlnd \
–with-pdo-mysql=mysqlnd
centos的php7怎麼安裝memcached擴展
最近試了一下PHP7,在編譯和支持MySQL上都遇到一些問題,相信不少同學也同樣遇到,所以在這裡聊一下這個過程。簡單來講編譯PHP7隻需要3步:1、./buildconf –force2、./configure3、make make install1、3步,都沒啥好管的,configure是編譯的關鍵,涉及到PHP對一些庫的支持,這裡我們使用最小的支持,包括MySQL:curlgdfpmmysqlnd之所以把curl和gd拿來說,目的是要搞清楚,這些三方庫在編譯PHP之前得安裝好,可以直接使用yum安裝在默認位置,也可以編譯安裝到指定位置,yum安裝後,編譯時不用指定庫的安裝位置,關於安裝這些庫,可以搜索一下有很多。下面看看基本的configure./configure –prefix=/apps/php/php7.0 –enable-mbstring –with-curl –with-gd –with-config-file-path=/apps/php/php7.0/etc/ –enable-fpm –enable-mysqlnd –with-pdo-mysql=mysqlndPHP-FPM關於fpm,相信不用多說,用它來支持PHP是一個比較好的選擇,PHP5.3.3開始就已經內置了php-fpm,所以PHP7里當然也有,只需要–enable-fpm一下就可以了php-fpm參數:–start 啟動–stop 強制終止–quit 平滑終止–restart 重啟–reload 重新平滑載入php的php.ini–logrotate 重新啟用log文件MySQL支持重點講一下這個,因為在它上面花了一點時間,不知道從哪一版本開始,PHP不在希望使用mysql的庫來支持mysql的連接,啟用了mysqlnd來支持,聽說比libmysql要快很多,PHP5.x還可以使用libmysql,PHP7貌似已經取消了支持,編譯都沒有了–with-mysql參數,只支持–with-mysqli和–with-pdo-mysql,可以通過查看configure的參數來知道:./configure -help grep mysql 可以看到,PHP希望使用mysqlnd來支持MySQL,所以參數可以這樣寫:–enable-mysqlnd–with-mysqli=mysqlnd–with-pdo-mysql=mysqlndmysqlnd是不需要mysql支持的,所以不用先安裝好mysql一樣可以編譯通過,啟動php-fpm,查看一下phpinfo,能看到mysqlnd和pdo_mysql表示php已經可以支持mysql了(這裡用的是pdo,mysqli同理)幾個問題編譯問題:cc: Internal error: Killed (program cc1)這個問題是第一次遇到,原來是我的阿里雲伺服器關掉了swap,內存不夠用,就報了這個錯。 解決辦法很簡單,configure時加上–disable-fileinfo參數就可以了。PHP報找不到mysql服務正如它所說,確實沒找到,看看phpinfo中pdo_mysql.default_socket項mysql.sock在哪裡,再看一下mysql.sock的真正位置,使用命令:ps -efgrep mysql查看:明顯不在一個位置上,我的正確位置是:/var/lib/mysql/mysql.sock所以,修改一下php.ini,找到pdo_mysql.default_socket,改為你的實際位置,重啟一下php-fpm,很不幸,雖然php.ini有這個配置,修改後,竟然不行,最好是編譯的時候,指定mysql.socket的位置:–with-mysql-sock=/var/lib/mysql/mysql.sock 如果還不行,可以到/tmp目錄下建立一個mysql.sock的軟鏈接:ln -s /var/lib/mysql/mysql.sock mysql.sock 再重啟一次php-fpm,相信已經正常運行了。如果需要PHP支持的庫更多,可以再次編譯,在configure時把需要的支持加上,就是–with-xxx這中,記得如果是三方的,要先安裝這些庫才行哦。
原創文章,作者:CQKA,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/132152.html