在 Ubuntu 上部署 ThinkPHP 出现空白页面(White Screen),通常不是代码没输出,而是报错被隐藏或环境异常。下面按最常见原因逐一说明,并给出排查方法。
ThinkPHP 出错时:
排查:
php -i | grep display_errors
解决:
编辑 php.ini(Ubuntu 常见路径):
/etc/php/8.1/apache2/php.ini
# 或
/etc/php/8.1/fpm/php.ini
修改:
display_errors = On
error_reporting = E_ALL
重启:
sudo systemctl restart apache2
# 或
sudo systemctl restart php8.1-fpm
ThinkPHP 不能直接访问项目根目录:
❌ 错误:
http://ip/thinkphp/
✅ 正确:
http://ip/thinkphp/public/
或配置 Apache/Nginx 指向 public
ThinkPHP 需要写:
runtime/
错误表现:
解决:
sudo chown -R www-data:www-data /var/www/html/thinkphp
sudo chmod -R 755 /var/www/html/thinkphp
sudo chmod -R 777 /var/www/html/thinkphp/runtime
ThinkPHP 常见依赖:
php-mbstringphp-jsonphp-domphp-fileinfophp-mysql(如果用数据库)检查:
php -m
安装:
sudo apt install php-mbstring php-json php-dom php-fileinfo php-mysql
访问页面空白,但 index.php 能进
Apache 需要:
<Directory /var/www/html/thinkphp/public>
AllowOverride All
</Directory>
并启用:
sudo a2enmod rewrite
Nginx 示例:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
看日志,不要猜:
tail -f runtime/log/*.log
或系统日志:
tail -f /var/log/apache2/error.log
tail -f /var/log/nginx/error.log
public/你可以直接把下面信息发我,我可精准定位:
runtime/log 或 error.log 报错内容我可以直接告诉你哪一行导致空白页。