### [PHP源码上线前我一定会过一遍的清单,能省下大半夜的救火](https://8maoku.com/topic/3228) **Published:** 2026-09-11T00:55:00 **Author:** 低调运维 **Excerpt:** 做运维这几年,见过太多「本地好好的,一上线就炸」的场面。分享我每次部署PHP源码都会走的检查清单,从环境、权限… 做了几年运维,我最怕的不是难的问题,是那种「本地跑得好好的,一上线就出问题」的场面。这种大多是**环境差异**造成的,而且往往发生在半夜。 所以我现在有一套固定清单,每次部署 PHP 源码都过一遍,前后不到二十分钟,能挡掉八成事故。 ## 一、环境层 1. PHP 版本是否和源码要求一致(看说明文档或 `composer.json`) 2. 必需扩展是否齐全:`fileinfo`、`gd`、`curl`、`zip`、`openssl`、`mbstring` 3. MySQL 版本是否匹配,`sql_mode` 有没有开严格模式(老源码经常被它坑) 4. PHP 的 `upload_max_filesize`、`post_max_size`、`max_execution_time` 是否够用 ``` # 一条命令快速看环境 php -v && php -m | grep -E "fileinfo|gd|curl|zip|openssl|mbstring" ``` ## 二、Web 层 1. 伪静态规则已配置 2. 运行目录指向正确的 public 子目录 3. HTTPS 证书已部署,且 HTTP 能 301 跳 HTTPS 4. 默认入口文件(比如 `install.php`)已删除,后台路径已改 最后一条特别重要。**忘了删安装目录,等于把站点白送人**,这种事每年都能看到几起。 ## 三、数据层 1. 数据库账号使用最小权限,不要拿 root 跑业务 2. 表前缀和配置文件一致 3. 确认导入完整——比对关键表的行数,别只看导入成功提示 4. 配置好自动备份(我一般设每天凌晨一次,保留 7 份) ## 四、可观测层 1. PHP 错误日志目录固定下来,且确认有写权限 2. 生产环境关掉 `display_errors`,但一定要开着 `log_errors` 3. 站点加了监控,掉线能收到通知 ## 五、回滚预案 这条我最看重。上线前先确认两件事:**老版本的文件和数据库各有一份完整快照**,并且我知道怎么在五分钟内切回去。 如果这两条答不上来,我建议推迟上线。真的。 ``` # 上线前打快照 tar -czf /www/backup/site_$(date +%F).tar.gz /www/wwwroot/你的站点 mysqldump -u用户名 -p 数据库名 > /www/backup/db_$(date +%F).sql ``` ## 最后一点 清单的意义不是让你变得很慢,而是**把「靠记忆」换成「照单子打勾」**。人总有状态不好的时候,凌晨三点尤其。有单子在手,失误率会低一个数量级。 ---