系統(tǒng) centos7
1.官網(wǎng)下載最新文檔版本
https://www.php.net/downloads.php#v7.3.5
錨點(diǎn)后的版本號(hào)可以不要,建議下載最新文檔版
2.xshell使用rz命令 或者 xftp上傳到/usr/local/src/ 并在該目錄下解壓
cd /usr/local/src
tar -vxf php-7.3.5.tar.gz
cd php-7.3.5
3.配置參數(shù)[這里坑比較多,網(wǎng)上的很多配置參數(shù)依然有問題,主要是配置參數(shù)中的擴(kuò)展還會(huì)7以前的,有部分已經(jīng)不支持了]
3.1) mysql擴(kuò)展
php7里已經(jīng)不支持mysql擴(kuò)展硬猫,
所以如果你的老系統(tǒng)里,
使用的是mysql來(lái)操作數(shù)據(jù)庫(kù)疚颊,
那么需要改為mysqli矫限,PDO之類的操作悬而。
3.2) memcache擴(kuò)展
memcached是很多web服務(wù)器用到的一個(gè)緩存系統(tǒng)临庇,
以前老版本的php的memcache擴(kuò)展是無(wú)法安裝到php7上的零截,
需要一個(gè)新的memcache擴(kuò)展
3.3) 不支持ereg_replace()函數(shù)
很多人使用以前老版本的php開發(fā)時(shí)麸塞,
使用ereg_replace()函數(shù),
php7后不支持涧衙,
解決的方法一般是把ereg_replace()使用preg_replace()函數(shù)替換
3.4) php7.1后不支持mcrypt系列函數(shù)
mcrypt其實(shí)也是一個(gè)php擴(kuò)展哪工,
主要用來(lái)加密和解密數(shù)據(jù),
php7.1版本后弧哎,
就不支持mcrypt擴(kuò)展的函數(shù)雁比。
如果你的網(wǎng)站中,
有使用到mcrypt相關(guān)函數(shù)撤嫩,
最多升級(jí)到php7.0.*的版本偎捎,
如果升級(jí)到php7.1以上版本時(shí),
需要自己重新寫相關(guān)的加密解密函數(shù)序攘,
官方推薦使用openssl_*系列的函數(shù)替換mcrypt系列函數(shù)
這里也是網(wǎng)上的 去除了部分無(wú)法配置的參數(shù) 已經(jīng)編譯成功
如果缺少了依賴的擴(kuò)展庫(kù),后續(xù)單獨(dú)安裝
3.5) configure: error: off_t undefined; check your library configuration
off_t 類型是在 頭文件 unistd.h中定義的茴她,在32位系統(tǒng) 編譯成 long int ,64位系統(tǒng)則編譯成 long long int 程奠,這里題主的系統(tǒng)應(yīng)該是 64位的吧丈牢,在進(jìn)行編譯的時(shí)候 是默認(rèn)查找64位的動(dòng)態(tài)鏈接庫(kù),但是默認(rèn)情況下 centos 的動(dòng)態(tài)鏈接庫(kù)配置文件/etc/ld.so.conf里并沒有加入搜索路徑瞄沙,這個(gè)時(shí)候需要將 /usr/local/lib64 /usr/lib64 這些針對(duì)64位的庫(kù)文件路徑加進(jìn)去己沛。
./configure --prefix=/usr/local/php7 --enable-fpm \
--with-zlib \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-opcache \
--with-fpm-user=www \
--with-fpm-group=www \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gettext \
--enable-mbstring \
--with-iconv \
--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-readline
4.make [這里遇到內(nèi)存不足,我是阿里云1g內(nèi)存,網(wǎng)上都是用文件創(chuàng)建交換分區(qū)作為虛擬內(nèi)存.猜測(cè)是,內(nèi)存是高速交換信息的"硬盤", 普通的硬盤也可以當(dāng)做"內(nèi)存"使用來(lái)臨時(shí)解決內(nèi)存不足的情況]
sudo -s #進(jìn)入root用戶模式
dd if=/dev/zero of=/swap bs=1024 count=1M #創(chuàng)建一個(gè)大小為1G的文件/swap
ll -h /swap #可以看到已為/swap分配了1G
使用mkswap將/tmp/swap文件格式化為swap的文件格式
mkswap /swap
使用swapon將/tmp/swap啟動(dòng)
free #查看
swapon /swap #啟動(dòng)/swap
free #查看
swapon -s #查看
echo "/swap/swap swap swap defaults 0 0" >> /etc/fstab #設(shè)置成永久生效,開機(jī)自啟.也可以手動(dòng)啟用
# swapon /swap 開 || swapoff /swap 關(guān)
有的教程里會(huì)在make后加上參數(shù) -j4
這個(gè)跟cpu的核心數(shù)有關(guān),通常幾核心cpu 數(shù)字就填幾,說(shuō)是可以讓編譯更快[實(shí)際上并不清楚是利用核心數(shù)編譯更快,還是編譯后的軟件可以根據(jù)核心數(shù)調(diào)節(jié)性能,后面再研究]
但是通常不能大過(guò)核心數(shù) 默認(rèn)不填 相當(dāng)于 -j1
我的是單核CPU 所以默認(rèn)直接make