在 Ubuntu 上运行 ThinkPHP 报错,原因很多,下面按最常见情况一步步帮你排查和解决。
先确认是哪种错误:
tail -f /var/log/nginx/error.log
# 或
tail -f /var/log/apache2/error.log
ThinkPHP 项目目录下的日志:
runtime/log/
报错示例:
Permission denied解决:
sudo chown -R www-data:www-data /var/www/your_project
sudo chmod -R 755 /var/www/your_project
sudo chmod -R 777 /var/www/your_project/runtime
Apache/Nginx 用户通常是
www-data
报错示例:
Parse errorThis version of ThinkPHP requires PHP >= 7.1查看 PHP 版本:
php -v
ThinkPHP 版本要求:
| ThinkPHP | PHP |
|---|---|
| 5.0 | ≥ 5.4 |
| 5.1 | ≥ 5.6 |
| 6.0 | ≥ 7.1 |
| 8.0 | ≥ 7.2 |
切换 PHP 版本(示例):
sudo update-alternatives --set php /usr/bin/php7.4
常见缺失扩展:
php-mbstringphp-curlphp-xmlphp-mysqlphp-zip安装:
sudo apt install php-mbstring php-curl php-xml php-mysql
sudo systemctl restart apache2
# 或
sudo systemctl restart nginx
location / {
try_files $uri $uri/ /index.php?$query_string;
}
确保开启 mod_rewrite
sudo a2enmod rewrite
sudo systemctl restart apache2
报错示例:
检查:
config/database.php
.env
确保:
在 .env 中:
APP_DEBUG = true
或 config/app.php:
'app_debug' => true,
php -v
php -m
ls -l runtime
cat .env
你可以直接把 报错信息贴出来(哪怕是英文或中文),例如:
Class not foundSQLSTATE[HY000]No input file specified我可以按你的 ThinkPHP 版本 + Ubuntu 版本 + Web 服务(Nginx/Apache) 精确给命令。