在 Ubuntu 上运行 ThinkPHP 访问慢,通常不是单一原因,而是环境配置 + 框架特性 + 代码问题叠加。下面按最常见原因 → 排查方法 → 解决建议给你梳理。
ThinkPHP 是 PHP 框架,没有 Opcache 会每次请求都重新编译 PHP。
✅ 检查:
php -m | grep opcache
❌ 如果没有:
sudo apt install php-opcache
编辑:
sudo vim /etc/php/*/cli/php.ini
sudo vim /etc/php/*/fpm/php.ini
确保:
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.revalidate_freq=60
重启:
sudo systemctl restart php-fpm
php artisan serve 或 php -S很多人本地用:
php think run
这是 PHP 内置服务器,单进程、极慢。
✅ 正确方式:
ThinkPHP 调试模式会:
✅ 检查:
APP_DEBUG = false
ThinkPHP 默认会写:
✅ 关闭 SQL 日志:
// database.php
'debug' => false,
或:
// 关闭日志
'log' => [
'level' => []
]
常见问题:
fastcgi_pass 错误✅ PHP-FPM 配置:
sudo vim /etc/php/*/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
重启:
sudo systemctl restart php-fpm
Ubuntu 有时 PHP 会尝试 DNS 解析:
gethostbyname✅ 测试:
php -r "echo gethostbyname('localhost');"
慢的话,改:
sudo vim /etc/hosts
确保有:
127.0.0.1 localhost
ThinkPHP 会扫描:
✅ 开启路由缓存(TP6):
php think optimize:route
✅ 使用缓存:
Cache::remember('key', 60, function () {
return Db::name('user')->select();
});
composer install --optimize-autoloader --no-dev
或:
composer dump-autoload -o
✅ opcache 开了吗?
✅ APP_DEBUG=false?
✅ 用 nginx+php-fpm?
✅ 日志不多?
✅ route 缓存了?
✅ composer 优化过?
你可以贴出:
我可以直接告诉你 是哪一层慢。