在 CentOS 上调 PHP 配置以实现“兼容”(兼容老项目、兼容不同版本、兼容扩展等),一般从以下几个方面入手。下面按最常见场景给你说明。
php --ini
或
php -i | grep "Loaded Configuration File"
常见路径:
/etc/php.ini/etc/php-fpm.conf、/etc/php-fpm.d/www.confdisplay_errors = On
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
short_open_tag = On
magic_quotes_gpc = Off ; PHP 5.4+ 已移除
register_globals = Off ; PHP 5.4+ 已移除
upload_max_filesize = 50M
post_max_size = 50M
max_execution_time = 300
max_input_time = 300
memory_limit = 256M
yum install -y epel-release
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install -y yum-utils
安装多版本:
yum install -y php56 php74
切换 CLI 版本:
alternatives --config php
Web 环境(Nginx/Apache)可分别配置不同 FPM:
/etc/php-fpm.d/www.conf (php56)
/etc/opt/remi/php74/php-fpm.d/www.conf
php -m
yum install -y php-mysql php-gd php-mbstring php-xml php-curl
PHP 7.4+ 常见变化:
mcrypt ❌ 已移除(用 openssl)mysql ❌ 已移除(用 mysqli / pdo_mysql)yum install -y php php-cli mod_php
systemctl restart httpd
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
| 问题 | 解决方式 |
|---|---|
mysql_* 函数不可用 |
改用 mysqli_* 或 PDO |
each() 报错 |
改为 foreach |
| 数组与字符串混用 | PHP 7 更严格 |
| 时区错误 | date.timezone = Asia/Shanghai |
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
date.timezone = Asia/Shanghai
如果你能告诉我:
我可以给你精准修改方案,甚至直接给配置文件示例。