Linux部署ThinkPHP报错90%是环境问题:需同步校验PHP CLI与FPM版本(≥8.0)、启用pdo/mbstring/fileinfo等核心扩展、配置阿里云镜像、修复runtime写权限、确保Web服务器root指向public目录且入口正确引入autoload.php。

Linux部署ThinkPHP报错,90%不是框架问题,而是环境没对齐——PHP版本、扩展、权限、镜像、路径这五点任一出错,都会卡在安装、运行或访问环节。下面按高频场景分块说明,直击关键动作和易忽略细节。
PHP版本与核心扩展检查
ThinkPHP不同版本对PHP有硬性要求:TP5最低需PHP 7.1(推荐7.4),TP6要求≥7.2.5,TP8强制≥8.0。仅看php -v不够,还要确认CLI与Web(如PHP-FPM)用的是同一套配置:
- 执行
php --ini查CLI的php.ini路径;用ps aux | grep php-fpm找到进程后,再运行/usr/bin/php-fpm --ini查FPM实际加载的配置 - 两个环境都必须启用:
pdo、mbstring、curl、json、openssl、fileinfo、intl -
fileinfo缺失会导致composer install静默中断;intl缺失会引发国际化或日期格式异常,需额外安装ICU库(libicu-dev或libicu-devel)
Composer安装失败常见修复
国内直连packagist.org基本不可用,超时、中断、zip损坏是常态。不要反复重试,先做三件事:
- 切阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 清缓存:
composer clear-cache - 删掉项目目录下的
vendor/和composer.lock,再跑composer install - 若仍卡住,加
--prefer-dist强制走压缩包,或临时用--ignore-platform-reqs绕过版本检测(仅调试)
runtime目录写入权限修复
报mkdir(): Permission denied或Cache not writable,本质是Web进程(如www-data或apache)对runtime/及其子目录无写权限:
立即学习“PHP免费学习笔记(深入)”;
- 查Web用户:
ps aux | grep -E '(apache|php-fpm|nginx)',看进程属主 - 递归修改属主:
sudo chown -R www-data:www-data runtime/(Ubuntu)或sudo chown -R apache:apache runtime/(CentOS) - 设合理权限:
sudo chmod -R 755 runtime/;禁用chmod 777——安全风险高且不治本 - 注意umask影响:默认0022导致新建子目录权限为755,但组用户无法写;建议在PHP-FPM池配置中加
php_admin_value[umask] = 0002
Web服务器路径与入口配置
访问报404、500、Class not found,大概率是Web根目录没指向public/,或自动加载失效:
- Apache:确认
DocumentRoot指向/path/to/project/public,且.htaccess生效(AllowOverride All) - Nginx:
root必须设为/path/to/project/public,并配try_files $uri $uri/ /index.php?$query_string; - 入口文件
public/index.php第一行必须是require __DIR__ . '/../vendor/autoload.php'; - 浏览器必须访问
http://domain.com/(对应public目录),不能访问项目根目录



















