Laravel部署Linux服务器后Job类找不到问题求助
我之前也碰到过一模一样的情况,本地跑完全正常,一到Linux服务器就报类找不到,大概率是大小写敏感或者缓存的锅,给你几个具体的排查和解决步骤:
严格检查文件名与类名的大小写
Linux系统是大小写敏感的,而Windows/macOS默认不区分大小写。比如你本地的Job文件是PushNotification.php,服务器上可能被误命名成pushnotification.php或者Pushnotification.php,这会直接导致Laravel的自动加载找不到类。一定要确保文件名和类名完全一致,包括每个字母的大小写,符合PSR-4规范的要求。清除Laravel与Composer的缓存
服务器上很可能缓存了旧的类映射信息,执行下面的命令彻底清理缓存:php artisan cache:clear php artisan config:clear php artisan optimize:clear composer dump-autoload其中
composer dump-autoload会重新生成vendor/autoload.php相关的类映射文件,这一步是解决类加载问题的关键操作。确认Job文件的路径正确性
检查服务器上app/Jobs/PushNotification.php这个文件是否存在,有没有被误放到其他目录(比如app/Http/Jobs)。路径不对的话,即使命名空间正确,自动加载也找不到对应的文件。核对命名空间是否匹配
打开PushNotification.php文件,确认顶部的命名空间是namespace App\Jobs;,和你控制器里use App\Jobs\PushNotification;的命名空间完全一致。有时候复制文件时会不小心修改了命名空间,这也是常见的坑。对比服务器与本地的PHP环境
虽然本地正常,但服务器的PHP版本如果低于项目要求的Laravel版本,或者缺少必要的PHP扩展(比如mbstring、xml、json等),也可能间接导致类加载异常。可以执行php -v查看版本,php -m查看已安装扩展,和本地环境做个对比。
内容的提问来源于stack exchange,提问作者Khoniks

