Laravel 4控制器文件名更改导致包含错误

时间:2013-08-26 21:29:39

标签: php git laravel laravel-4

我最近在本地进行了大量测试之后,在网上部署了一个Laravel 4项目,没有离线问题,但在它上线后有几个奇怪的问题。

该项目有一个Git存储库,我的IDE(PHPStorm)偶尔会注意到一个控制器在存储库中被更改 - 我会进行更改,尝试提交,并且会显示错误,表示没有变化。此外,有一次,文件以某种方式从“News.php”重命名为“news.php”。我将文件的大小写修复为大写N我没有重命名项目中的任何其他内容 - 所有对此类的引用(以及相应的文件)仍然是“新闻”。

今天早上出现问题,使用新闻控制器的路线导致500错误,表明它无法包含相关文件。我检查了FTP文件系统并验证了文件是否存在且完好无损,根本没有出现任何问题。经过多次挫折之后,我将文件重命名为“news.php”(小写),一切都恢复了。我试图再次将其重命名为“News.php”并返回500错误。

发生的另一件奇怪的事情是对控制器动作的引用都是小写的(我的疏忽?)随机应用程序崩溃了500错误Class Not Found。我在本地测试了应用程序,它可以正常使用小写或大写,从“admin_news”重命名控制器引用“Admin_News”解决了生产服务器上的问题。

Laravel 4是否有某种缓存可能引用“news.php”而拒绝使用“News.php”?关于这种奇怪行为的任何想法?

4 个答案:

答案 0 :(得分:8)

更改路线或控制器时,请尝试

composer dump-autoload

它将使用新名称/内容

重建自动加载器

答案 1 :(得分:1)

当我读到您的问题时,首先想到的是您是在Windows计算机上开发并在Linux服务器上部署(或者反过来?)

我的设置遇到了类似的问题,我在工作的Windows机器上开发,并部署到Linux服务器。 Windows上的文件系统似乎对大小写不敏感,因此news.php = News.php,而linux文件系统区分大小写。命名空间名称似乎也是如此。 / app / Models / Auth = / App / models / Auth on windows但不是linux。在我弄明白之前,这会引起一些麻烦。

我现在已经开始使用Vagrant来设置一个本地开发区域,该区域是我正在部署的系统的镜像,意味着如果它在一个上工作,它将在另一个上工作。

答案 2 :(得分:0)

也许你想检查一下用于PHP风暴的Laravel IDE Helper生成器。你可以从github获得它:https://github.com/barryvdh/laravel-ide-helper我猜你在使用PHP Storm的重构功能时遇到了问题,无需更新代码即可更新代码的某些部分。无论如何,生成器将帮助您从PHP风暴中识别出许多问题并简化整个开发过程。

希望它有所帮助。

答案 3 :(得分:0)

Laravel可以访问模型和控制器。我总是将文件命名为类的名称(例如,如果类被命名为BaseController,则文件必须命名为BaseController.php)。但也许PHP Storm的使用正在做一个不受框架控制的行为。