在 Ubuntu + ThinkPHP 环境下报错,原因非常多,不能直接猜。下面我按最常见原因 + 排查思路给你一个清单,你可以对照看是哪一种。
典型报错:
failed to open stream: Permission denied原因:
Ubuntu 下 www-data 用户没有权限访问项目目录
解决办法:
sudo chown -R www-data:www-data /var/www/your_project
sudo chmod -R 755 /var/www/your_project
sudo chmod -R 777 runtime # ThinkPHP 运行目录必须可写
⚠️ 生产环境不建议 777,可单独给 runtime、storage
典型报错:
Class 'xxx' not foundundefined function xxx()常见缺的扩展:
sudo apt install php-cli php-mbstring php-xml php-curl php-mysql php-zip php-gd
重启:
sudo systemctl restart apache2
# 或
sudo systemctl restart php8.1-fpm
现象:
解决:
// .env
APP_DEBUG = true
或 config/app.php
'app_debug' => true,
然后看:
runtime/log/
确保:
sudo a2enmod rewrite
.htaccess(ThinkPHP 默认有):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
location / {
try_files $uri $uri/ /index.php?$query_string;
}
ThinkPHP 版本要求:
| ThinkPHP | PHP |
|---|---|
| TP5 | 5.6+ |
| TP6 | 7.1+ |
| TP8 | 8.0+ |
查看版本:
php -v
composer install
tail -f runtime/log/*.log
或:
sudo tail -f /var/log/apache2/error.log
请把以下信息发我:
我可以直接告诉你哪一行代码、哪个配置错了。