CentOS6 最高可安装的版本是 PHP 7.3.23
安装依赖
yum install -y openssl-devel libxml2-devel bzip2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel recode-devel libicu-devel libzip-devel sqlite-devel oniguruma-devel gcc autoconf automake libtool freetype* libjpeg*
如果oniguruma和oniguruma-devel无法安装,则手动安装
CentOS 7/8 安装 oniguruma和oniguruma-devel 。可解决 configure: error: Package requirements (oniguruma) were not met: Package 'oniguruma', required by 'virtual:world', not found 问题。
CentOS 7 安装
yum -y install http://mirror.centos.org/centos-7/7.7.1908/cloud/x86_64/openstack-queens/oniguruma-6.7.0-1.el7.x86_64.rpm
yum -y install http://mirror.centos.org/centos-7/7.7.1908/cloud/x86_64/openstack-queens/oniguruma-devel-6.7.0-1.el7.x86_64.rpm
备用下载:
yum -y install http://down.24kplus.com/linux/oniguruma/oniguruma-6.7.0-1.el7.x86_64.rpm
yum -y install http://down.24kplus.com/linux/oniguruma/oniguruma-devel-6.7.0-1.el7.x86_64.rpm
CentOS 8 安装
yum config-manager --set-enabled PowerTools
yum -y install oniguruma oniguruma-devel
安装libiconv
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz
tar -zxvf libiconv-1.16.tar.gz
cd libiconv-1.16
./configure --prefix=/usr/local/libiconv
make
make install
下载源码包并编译安装
wget https://www.php.net/distributions/php-7.4.33.tar.gz
解压
tar -zxvf php-7.4.33.tar.gz
进入目录
cd php-7.4.33
配置
./configure --prefix=/usr/local/php --enable-opcache --enable-pcntl --enable-fileinfo --enable-posix --enable-bcmath --with-pdo_mysql --with-config-file-path=/usr/local/php/etc --with-curl --enable-fpm --enable-gd --with-iconv=/usr/local/libiconv --enable-mbstring --enable-exif --with-mysqli=mysqlnd --with-openssl --enable-static --enable-sockets --enable-inline-optimization --with-zlib --with-zip --disable-ipv6 --disable-fileinfo --disable-debug --with-freetype=/usr/include/freetype2/ --with-jpeg=/usr/include
--enable是启用PHP内核自带的扩展
--with是启用非内核自带的扩展,需要使用=号指定扩展所在的目录,如果没有指定则默认在ext目录
编译安装
make && make install
拷贝配置文件
cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
拷贝执行文件
cp sapi/fpm/php-fpm /usr/local/bin
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
添加权限
chmod +x /etc/init.d/php-fpm
添加执行文件到环境变量
vi /etc/profile 在最后加上,如果有其他目录,就用:号分割
PATH=$PATH:/usr/local/php/bin
export PATH
执行命令
export PATH=$PATH:/usr/local/php/bin
执行命令source /etc/profile或 执行点命令 ./profile使其修改生效,执行完可通过echo $PATH命令查看是否添加成功。
链接php到可执行目录
ln -s /usr/local/php/bin/php /usr/bin/php
安装PECL(php扩展库管理工具),以便后面后可以使用pecl安装php扩展(redis、MongoDB、apcu等)
wget http://pear.php.net/go-pear.phar
php go-pear.phar
安装apcu扩展
pecl install apcu
/usr/local/php/etc/php.ini 配置文件,添加
extension=apcu.so
[apcu]
apc.enabled=1
apc.enable_cli=1
apc.shm_size=32M
安装redis扩展
pecl install redis
/usr/local/php/etc/php.ini 配置文件,添加
extension=redis.so
如果报错PHP Warning: PHP Startup: Unable to load dynamic library 'redis.so' ... undefined symbol: php_json_decode_ex,这是和json扩展加载顺序冲突导致报错
将php.ini里加入extension=redis.so删除,进入PHP配置附加扫描路径,正常是 /usr/local/php/conf.d文件夹(具体可以通过 php --ini 命令查询),创建redis.ini,写入配置
;redis
extension=redis.so
安装event扩展
pecl install event
/usr/local/php/etc/php.ini 配置文件,添加
extension=event.so
修改PHP-FPM的运行用户,统一为www
添加用户和用户组
useradd www -s /sbin/nologin -M
修改/usr/local/php/etc/php-fpm.d/www.conf,假设本机网卡IP是192.169.0.10,另外一台Nginx主机的网卡IP是192.159.0.11:
user = www
group = www
listen
= 127.0.0.1:9000,192.169.0.10:9000 # fpm 监听端口(本机网卡IP),多个IP逗号分隔。可用格式为: ‘ip:port’, ‘port’, ‘/path/to/unix/socket’
listen.allowed_clients = 127.0.0.1,192.169.0.10,192.159.0.11 # 允许访问 FastCGI 进程的 IP(本机IP或其他主机IP),多个IP逗号分隔。如果需要其他主机也能访问,除这里需要写入其他主机IP外,上面的 listen 配置里面也必须有本机网卡IP,不能只有127.0.0.1的回环网卡地址,因为其他主机是无法访问本机的回环地址的。
开启服务
systemctl start php-fpm
如果之前安装了其他版本的php,可能系统中注册的php-fpm服务是其他版本的,可以先 systemctl disable php-fpm,再 systemctl enable php-fpm 重新注册
设置开机自启动
systemctl enable php-fpm #自动启动
systemctl daemon-reload #保存系统启动配置文件
systemctl is-enabled php-fpm #查看配置是否生效
安装PHP源码包自带扩展
比如安装gmp扩展,转到扩展目录
cd php-7.4.33/ext/gmp
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
然后到php.ini文件中启用扩展
extension = gmp
php -m 查看扩展是否安装成功
systemctl restart php-fpm 重启服务
如果 phpize 时报错,configure.ac:3: error: Autoconf version 2.68 or higher is required,则需要安装新版本的 autoconf
wget ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
tar zxvf autoconf-2.69.tar.gz
cd autoconf-2.69
./configure --prefix=/usr/
make && make install