温馨提示×

ubuntu ThinkPHP为何空白页面

小樊
47
2026-10-19 05:33:33
栏目: 编程语言

在 Ubuntu 上部署 ThinkPHP 出现空白页面(White Screen),通常不是代码没输出,而是报错被隐藏或环境异常。下面按最常见原因逐一说明,并给出排查方法。


一、最常见原因(按概率排序)

1️⃣ PHP 报错被关闭(display_errors = Off)

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

2️⃣ 项目根目录访问错误(最常见)

ThinkPHP 不能直接访问项目根目录:

❌ 错误:

http://ip/thinkphp/

✅ 正确:

http://ip/thinkphp/public/

或配置 Apache/Nginx 指向 public


3️⃣ 权限问题(runtime 目录)

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

4️⃣ 缺少 PHP 扩展

ThinkPHP 常见依赖:

  • php-mbstring
  • php-json
  • php-dom
  • php-fileinfo
  • php-mysql(如果用数据库)

检查:

php -m

安装:

sudo apt install php-mbstring php-json php-dom php-fileinfo php-mysql

5️⃣ 伪静态 / rewrite 未配置

访问页面空白,但 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;
}

6️⃣ 日志才是真相(最重要)

看日志,不要猜:

tail -f runtime/log/*.log

或系统日志:

tail -f /var/log/apache2/error.log
tail -f /var/log/nginx/error.log

二、快速自检清单 ✅

  • [ ] 访问的是 public/
  • [ ] display_errors = On
  • [ ] runtime 可写
  • [ ] PHP 扩展齐全
  • [ ] rewrite 配置正确
  • [ ] 看了日志(不是猜)

三、如果你愿意

你可以直接把下面信息发我,我可精准定位:

  1. ThinkPHP 版本(5.1 / 6.0 / 8.0)
  2. Web 服务(Apache / Nginx)
  3. 访问 URL
  4. runtime/log 或 error.log 报错内容

我可以直接告诉你哪一行导致空白页。

0 踩