### [PHP源码下载下来跑不起来?大概率是这几个坑,我挨个踩过](https://8maoku.com/topic/3225) **Published:** 2026-09-05T01:40:00 **Author:** 写码人小李 **Excerpt:** 下了一份PHP源码,丢服务器上白屏、500、乱码轮着来。我把这几年帮人排查的经验理了一下,最常见的五个坑加我的… 先说结论:**PHP 源码跑不起来,九成不是源码有问题,是环境和配置不对**。我这两个月帮人看了七八份跑不起来的源码,翻来覆去就那么几个原因。 今天按出现频率从高到低排一下,顺便把我自己的排查顺序放最后。 ## 坑一:PHP 版本对不上 这是排第一的。老源码大多是 PHP 5.6 / 7.0 时代写的,你给它挂个 PHP 8.2,一堆函数直接报 deprecated 甚至 fatal error。 判断方法很简单,看源码根目录有没有 `.user.ini`、`composer.json` 或者安装说明里的版本要求。没有的话,默认按 **PHP 7.4** 试,跑通再往上加。 ``` # 宝塔里切换版本的路径 网站 → 站点设置 → PHP版本 → 选 7.4 → 保存 ``` ## 坑二:伪静态没配 白屏、404、后台点不动,很多是这个。这套网站用的是 `index.php?s=/xxx` 这种路径,服务器不认识干净的 URL,当然全 404。 宝塔里直接选对应的伪静态规则,比如 ThinkPHP、Laravel、WordPress 都内置了。选不到就自己粘一条 nginx 规则: ``` location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; } } ``` ## 坑三:数据库没导全,或者表前缀不对 症状是首页打得开,点任何页面都报「数据表不存在」。 两个常见原因:一是 sql 文件太大,phpMyAdmin 超时只导了一半;二是**配置里的表前缀和数据库里的前缀不一致**(比如配置写 `gq_`,库里是 `wp_`)。 导入大 sql 建议直接命令行,比网页稳: ``` mysql -u用户名 -p 数据库名 < /www/backup/db.sql ``` ## 坑四:目录权限不对 界面正常但上传图片失败、安装时写不进配置文件,基本都是权限问题。目录 755、文件 644、运行用户跟 PHP-FPM 一致,这三条对上了就没问题。 ``` chown -R www:www /www/wwwroot/你的站点 find /www/wwwroot/你的站点 -type d -exec chmod 755 {} \; find /www/wwwroot/你的站点 -type f -exec chmod 644 {} \; ``` ## 坑五:扩展没装 GD、fileinfo、curl、zip、openssl 这几个是老源码的高频依赖。少了 fileinfo 往往连安装向导都进不去,报错还特别含糊。 宝塔里点一下装上就行,记得装完**重启 PHP**,不重启不生效。 ## 我的排查顺序 1. 开 PHP 错误显示,先看到真实报错,别猜 2. 看日志:`站点错误日志` + `PHP 日志`,两个都要看 3. 核对 PHP 版本和扩展 4. 核对伪静态 5. 核对数据库连接和表前缀 6. 最后才怀疑权限 把错误打开这一步特别重要,很多人上来就瞎改代码,其实报错信息早就写在那儿了。 ## 最后 我现在的习惯是:**任何一份新源码,先在一个干净的子目录里跑通,再往正式站点上搬**。跑不通就换版本重来,反正成本很低。最怕的是一上来就往正式站上覆盖,出了问题连原来的状态都回不去。 ---