Laravel“未定义的方法调用”,仅在生产环境中发生。

5

我有两个控制器函数,它们调用一个位于应用程序文件夹下方的类的静态函数。

Controllers\UserResController.php

public function show($id, Request $request)
{
   return \App\User::show($id, $request);
}

Conrtollers\Other\UserResController.php

public function show($id, Request $request)
{
   // other codes

   return \App\User::show($id, $request);
}

app\User.php

public static function show($id, Request $request){
   //codes
}

令我惊讶的是这些代码在开发和测试环境下都能运行良好,但在生产环境中不能正常运行。

它会抛出异常'Symfony\Component\Debug\Exception\FatalErrorException',并显示消息“调用未定义的方法App\User::show()”。

是什么原因导致了这个问题?谢谢。

1个回答

4

很有可能生产环境正在使用较旧的缓存或编译版本。当出现这种情况时,我总是尝试:

composer update

或者

composer dump-autoload

或者

php artisan clear-compiled

或者

php artisan cache:clear

可以解释一下吗?我查了一下文档,是因为classmap包没有更新吗?为什么会这样呢?它工作啦! - hjchin
1
这个人讲得很好:http://developed.be/2014/08/29/composer-dump-autoload-laravel/ - Jed
我们必须手动清除缓存吗?所以每次推送到生产环境时最好清除缓存?哇...我想知道是否有自动化的方法。 - hjchin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接