首先通过命令php -v查看系统当前安装的PHP版本,明确是否存在版本过低或过高导致的不兼容问题(如旧应用需要PHP 5.6,而系统默认安装了PHP 8.0)。
CentOS默认仓库的PHP版本可能较旧,需添加EPEL(Extra Packages for Enterprise Linux)和Remi仓库以获取最新稳定版本:
sudo yum install epel-releasesudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpmsudo yum-config-manager --enable remi-php74(可根据需求替换为remi-php80等)。sudo yum install php php-mysql php-gd php-xml php-mbstring php-fpmsudo yum install php74 php74-php-fpm php74-php-mysqlnd。php5-mysql),防止与新版本扩展冲突。/etc/httpd/conf.d/php.conf),确保包含以下指令以正确处理PHP文件:<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>libphp7.so),可通过httpd -M | grep php验证模块是否加载。server块中添加:location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/php74-fpm.sock; # 替换为实际PHP版本的socket路径
fastcgi_index index.php;
include fastcgi_params;
}
若应用因PHP版本升级出现兼容性问题,需针对性调整代码:
mysql_*函数需替换为mysqli_*或PDO;ereg_*函数替换为preg_match_*。register_globals(PHP 5.4+移除)、magic_quotes_gpc(PHP 5.4+移除)等默认关闭的功能,需修改代码避免依赖。declare(strict_types=1)、null coalescing operator(??)等新语法,需适配代码逻辑。若需在同一服务器运行多个PHP版本(如同时支持PHP 7.4和8.0),可通过以下方式切换:
alternatives系统:sudo alternatives --display phpsudo alternatives --config php(按提示选择版本)。phpbrew(curl -L -O https://github.com/philcook/phpswitch/releases/download/0.4.0/phpswitch-0.4.0.phar && chmod +x phpswitch-0.4.0.phar && sudo mv phpswitch-0.4.0.phar /usr/local/bin/phpswitch),支持快速安装和切换多个PHP版本。php -v确认版本是否符合预期。/var/www/html)创建info.php,内容为<?php phpinfo(); ?>,通过浏览器访问查看PHP配置信息(如模块加载情况、版本号)。若遇到PHP无法启动或访问文件的问题,可能是SELinux阻止了操作。可临时设置为Permissive模式排查问题:sudo setenforce permissive;若需永久禁用,编辑/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive。