下载源码
cd ~ && wget http://cn2.php.net/distributions/php-7.3.0.tar.bz2
安装依赖
yum install -y bzip2 libxml2-devel libicu-devel gcc-c++
解压配置安装
tar -jxvf php-7.3.0.tar.bz2
cd php-7.3.0
./configure --prefix=/usr/local/php@7.3 --with-config-file-path=/etc/php@7.3 --enable-fpm --with-fpm-user=apache --with-fpm-group=apache --enable-intl --enable-mbstring --enable-pcntl --enable-sockets --enable-zip --enable-mysqlnd
# 我的web用户是apache,因此fpm用户指给了apache
提示:
error: Please reinstall the libzip distribution
尝试yum安装,但是yum版本过低,转为编译安装。
安装libzip
cd ~ && wget https://libzip.org/download/libzip-1.5.1.tar.xz
xz -d libzip-1.5.1.tar.xz
tar -xvf libzip-1.5.1.tar
cd libzip-1.5.1
mkdir build
cd build && cmake ..
提示cmake版本过低
安装cmake
cd ~ && yum remove cmake -y
wget https://cmake.org/files/v3.6/cmake-3.6.2.tar.gz
tar xvf cmake-3.6.2.tar.gz && cd cmake-3.6.2/
./bootstrap
gmake && gmake install
ln -s /usr/local/bin/cmake /usr/bin/
cmake --version
继续编译libzip
cd ~/libzip-1.5.1/build
cmake .. && make && make install
继续编译php
cd ~/php-7.3.0
./configure --prefix=/usr/local/php@7.3 --with-config-file-path=/etc/php@7.3 --enable-fpm --with-fpm-user=apache --with-fpm-group=apache --enable-intl --enable-mbstring --enable-pcntl --enable-sockets --enable-zip --enable-mysqlnd
提示:
error: off_t undefined; check your library configuration
根据https://segmentfault.com/q/1010000007346459:
# 添加搜索路径到配置文件
echo '/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64'>>/etc/ld.so.conf
# 更新配置
ldconfig -v
继续
./configure --prefix=/usr/local/php@7.3 --with-config-file-path=/etc/php@7.3 --enable-fpm --with-fpm-user=_www --with-fpm-group=_www --enable-intl --enable-mbstring --enable-pcntl --enable-sockets --enable-zip --enable-mysqlnd
成功了,make it!
make && make install
测试时,在另外一个1G服务器上提示内存不足,创建swap分区临时解决:
mkdir /var/swap
dd if=/dev/zero of=/var/swap/swap_1G bs=2048 count=524288
chmod 0600 /var/swap/swap_1G
mkswap /var/swap/swap_1G
swapon /var/swap/swap_1G
echo "/var/swap/swap_1G swap swap default 0 0" >> /etc/fstab
# 检查
free --si -h
# 继续make
make && make install
后续操作
/usr/local/php@7.3/bin/php --version
/usr/local/php@7.3/bin/php --ini
# 此目录没有自动创建,创建它
mkdir /etc/php@7.3/php.ini
cp php.ini-production /etc/php@7.3/php.ini
#修改时区
sed -i 's/^;date.timezone =$/date.timezone = Asia\/Shanghai/g' /etc/php@7.3/php.ini
# 配置fpm
cp /usr/local/php@7.3/etc/php-fpm.conf.default /etc/php@7.3/php-fpm.conf
cp -r /usr/local/php@7.3/etc/php-fpm.d/ /etc/php@7.3
mv /etc/php@7.3/php-fpm.d/www.conf.default /etc/php@7.3/php-fpm.d/www.conf
sed -i 's#^include.*#include=/etc/php@7.3/php-fpm.d/*.conf#g' /etc/php@7.3/php-fpm.conf
#或手动修改/etc/php@7.3/php-fpm.conf最后的include行为:include = /etc/php@7.3/php-fpm.d/*.conf
mkdir -p /var/php@7.3/run
sudo chown -R apache /var/php@7.3
mkdir /var/php@7.3/run -p
sed -i 's#^pid =.*#pid = /var/php@7.3/run/php-fpm.pid#g' /etc/php@7.3/php-fpm.conf
#或手动修改/etc/php@7.3/php-fpm.conf中pid文件设置:pid = /var/php@7.3/run/php-fpm.pid
# 启动fpm(如果你的9000端口被占用了可能还需要修改端口)
/usr/local/php@7.3/sbin/php-fpm -y /etc/php@7.3/php-fpm.conf
# 重启fpm
kill -USR2 `cat /var/php@7.3/run/php-fpm.pid`
# 停止fpm
kill -INT `cat /var/php@7.3/run/php-fpm.pid`