按先备份、再定位、后恢复的顺序执行,可安全把 PHP 配置还原到默认或备份状态。
一、快速恢复流程
- 备份当前配置
- 查看正在使用的配置文件路径:运行 php --ini,记录 Loaded Configuration File 与 Scan this dir for additional .ini files 的路径。
- 备份主配置与扩展配置:
- 主配置:sudo cp /etc/php.ini /etc/php.ini.bak
- 扩展配置:sudo cp /etc/php.d/*.ini /etc/php.d/*.ini.bak
- 如使用 PHP-FPM:sudo cp /etc/php-fpm.conf /etc/php-fpm.conf.bak;sudo cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.bak
- 恢复到备份
- 主配置:sudo cp /etc/php.ini.bak /etc/php.ini
- 扩展配置:sudo cp /etc/php.d/*.ini.bak /etc/php.d/*.ini
- PHP-FPM:sudo cp /etc/php-fpm.conf.bak /etc/php-fpm.conf;sudo cp /etc/php-fpm.d/www.conf.bak /etc/php-fpm.d/www.conf
- 使配置生效
- Apache:sudo systemctl restart httpd
- Nginx + PHP-FPM:sudo systemctl restart nginx;sudo systemctl restart php-fpm
- 验证
- 创建临时文件 /var/www/html/info.php,内容:
- 访问 http://服务器IP/info.php,核对 Loaded Configuration File 是否为期望路径,确认无报错后再删除该文件。
二、没有备份时的两种恢复方式
- 方式A:重装 PHP 相关包(推荐)
- 仅重装核心包以生成默认配置(不会覆盖你的网站代码):
- CentOS 7:sudo yum reinstall php php-cli
- CentOS 8/Stream:sudo dnf reinstall php php-cli
- 若使用模块方式运行 PHP(Apache):sudo dnf reinstall php mod_php
- 若使用 PHP-FPM:sudo dnf reinstall php-fpm
- 重启服务:sudo systemctl restart httpd 或 sudo systemctl restart php-fpm
- 方式B:删除/重命名现有配置,触发系统重建
- 重命名主配置与扩展配置:
- sudo mv /etc/php.ini /etc/php.ini.old
- sudo mv /etc/php.d/*.ini /etc/php.d/*.ini.old
- 如用 FPM:sudo mv /etc/php-fpm.conf /etc/php-fpm.conf.old;sudo mv /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.old
- 重新安装对应包(见方式A),系统将生成全新的默认配置。
- 重启服务并验证。
三、关键路径与版本差异
- 常见主配置路径:/etc/php.ini
- 扩展配置目录:/etc/php.d/(很多发行版将扩展配置放于此目录)
- PHP-FPM 配置:/etc/php-fpm.conf 与 /etc/php-fpm.d/www.conf
- 通过命令精准定位:运行 php --ini,关注 Loaded Configuration File 与 Scan this dir for additional .ini files 两项。
四、验证与常见问题处理
- 验证要点
- 访问 info.php,确认 Loaded Configuration File 为新恢复的路径,且关键扩展已加载。
- 命令行验证:php -v、php -m 查看版本与模块是否正常。
- 服务未生效
- 确认重启了正确服务:Apache 用 httpd,Nginx + FPM 需同时重启 nginx 与 php-fpm。
- SELinux 或权限导致访问异常
- 检查 SELinux:sestatus;必要时调整网站目录上下文与权限,例如:
- chcon -R -t httpd_exec_t /var/www/html/*.php
- chown -R apache:apache /var/www/html
- chmod -R 755 /var/www/html(上传目录可用 775)
- 多版本并存
- 确认当前 CLI 与 Web 使用的 PHP 版本一致(which php、php -v 与 info.php 输出一致),避免改错版本的配置。