1

我最近在本地进行了广泛的测试后在 Web 上部署了一个 Laravel 4 项目,离线没有问题,但上线后出现了一些奇怪的问题。

该项目有一个 Git 存储库,我的 IDE (PHPStorm) 偶尔不会注意到一个控制器在存储库中发生更改 - 我会进行更改,尝试提交,它会显示一个错误,指出没有更改。此外,在某一时刻,该文件以某种方式从“News.php”重命名为“news.php”。我将文件的大小写改回大写 NI 没有重命名项目中的任何其他内容 - 对此类(以及因此文件)的所有引用仍然是“新闻”。

今天早上出乎意料的是,一条使用 News 控制器的路由导致了 500 错误,指出它无法包含有问题的文件。我检查了 FTP 文件系统并确认该文件存在且完好无损,它似乎没有任何问题。在经历了很多挫折之后,我将文件重命名为“news.php”(小写),一切都恢复了。我尝试再次将其重命名为“News.php”并返回 500 错误。

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

Laravel 4 是否有某种可能引用“news.php”并拒绝使用“News.php”的缓存?对这种奇怪的行为有什么想法吗?

4

4 回答 4

10

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

composer dump-autoload

它将使用新名称/内容重建自动加载器

于 2013-08-28T13:12:51.527 回答
1

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

我在设置时遇到了类似的问题,我在工作时在 Windows 机器上开发,然后我们部署到 linux 服务器。Windows 上的文件系统似乎不区分大小写,因此 news.php = News.php 而 linux 文件系统区分大小写。命名空间名称似乎也是如此。/App/Models/Auth = Windows 上的 /App/models/Auth 而非 linux。在我弄清楚之前,这引起了一些头痛。

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

于 2013-08-27T08:56:51.947 回答
0

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

希望能帮助到你。

于 2013-08-26T22:47:29.207 回答
0

Laravel 有一种访问模型和控制器的方法。我总是将文件命名为类的名称(例如,如果类被命名为 BaseController,则文件必须命名为 BaseController.php)。但也许 PHP Storm 的使用是在做一个框架无法控制的动作。

于 2013-08-26T22:52:14.423 回答