Laravel项目在Linux上的错误排查方法
storage(日志、缓存、会话等)和bootstrap/cache(路由/配置缓存)目录需要正确读写权限。推荐使用sudo chown -R www-data:www-data /path/to/project(将www-data替换为你的Web服务器用户,如nginx、apache)设置所有者,再用sudo chmod -R 755 storage bootstrap/cache赋予读写权限。.env文件(可从.env.example复制生成),并正确配置数据库连接(DB_CONNECTION、DB_HOST、DB_DATABASE、DB_USERNAME、DB_PASSWORD)、应用密钥(APP_KEY,可通过php artisan key:generate生成)等参数。composer install安装项目所需依赖;若依赖已安装但修改了composer.json,需运行composer update更新依赖。APP_KEY(.env中无APP_KEY或为空),运行php artisan key:generate生成新的密钥,否则会出现“No application encryption key has been specified”错误。public目录。Nginx示例配置:root /path/to/project/public; + location / { try_files $uri $uri/ /index.php?$query_string; };Apache需启用mod_rewrite并配置AllowOverride All。storage/logs/laravel.log(若未生成,可手动创建目录并赋予权限),包含错误堆栈、请求信息等关键内容。tail -f storage/logs/laravel.log实时监控最新日志,快速定位正在发生的错误。grep命令筛选特定错误,如grep 'error' storage/logs/laravel.log查看所有错误日志,grep 'SQLSTATE' storage/logs/laravel.log筛选数据库错误。.env中的LOG_LEVEL(如ERROR仅记录错误及以上级别,DEBUG记录详细调试信息),生产环境建议设为ERROR,开发环境设为DEBUG。logrotate防止日志过大,创建/etc/logrotate.d/laravel文件,添加以下内容:/path/to/project/storage/logs/*.log {
daily
missingok
rotate 14
compress
notifempty
create 640 www-data adm
}
表示每天轮转、保留14天、压缩旧日志。App\Http\Controllers\UserController对应UserController.php文件),运行composer dump-autoload重新生成自动加载文件。Route::get('/users', 'UserController@index')),清除路由缓存(php artisan route:clear);若出现MethodNotAllowedHttpException,检查请求方法(GET/POST/PUT/DELETE)是否与路由定义一致。.env中的数据库配置是否正确,数据库服务是否运行(systemctl status mysql);若出现Table not found,运行php artisan migrate执行迁移创建表。php -v检查版本;安装必要扩展(如php-mysql、php-json、php-curl),可通过sudo apt install php-mysql php-json php-curl(Ubuntu/Debian)或sudo yum install php-mysqlnd php-json php-curl(CentOS/RHEL)安装。composer require laravel/telescope并通过php artisan telescope:install初始化,提供请求追踪、异常查看、数据库查询分析等功能,帮助深度排查问题。