【发布时间】:2013-08-26 21:29:38
【问题描述】:
我最近在网络上部署了一个 Laravel 4 项目,经过本地广泛的测试,离线没有问题,但上线后出现了一些奇怪的问题。
该项目有一个 Git 存储库,我的 IDE (PHPStorm) 有时不会注意到一个控制器在存储库中发生更改 - 我会进行更改,尝试提交,它会显示一个错误,说没有变化。此外,在某一时刻,该文件以某种方式从“News.php”重命名为“news.php”。我将文件的大小写改回大写 N 我没有重命名项目中的任何其他内容 - 对此类(以及因此文件)的所有引用仍然是“新闻”。
今天早上出乎意料的是,一条使用 News 控制器的路由导致了 500 错误,指出它无法包含有问题的文件。我检查了 FTP 文件系统并确认该文件存在且完整无缺,似乎没有任何问题。在经历了很多挫折之后,我将文件重命名为“news.php”(小写),一切都恢复了。我尝试再次将其重命名为“News.php”并返回 500 错误。
发生的另一件奇怪的事情是对控制器操作的引用都是小写的(我的疏忽?)并且应用程序随机崩溃并出现 500 错误 Class Not Found。我在本地测试了该应用程序,无论是小写还是大写都可以正常工作,将控制器引用从“admin_news”重命名为“Admin_News”解决了生产服务器上的问题。
Laravel 4 是否有某种缓存可能会引用“news.php”并拒绝使用“News.php”?对这种奇怪的行为有什么想法吗?
【问题讨论】:
-
查看 app/storage/compiled.php,这可能是您的问题所在。另外,你用的是什么类型的电脑?文件系统不区分大小写吗?
-
该项目是您真正在 Windows、Mac 和 Linux 上制作的。无论当时在哪里。编译的好建议,我早上开始检查。
-
我刚刚检查过,我没有
app/storage/compiled.php- 这通常出现在 Laravel 4 中吗?并且不确定在这种情况下是否重要,但我使用的是 rtablada 软件包安装程序,github.com/rtablada/package-installer -
Laravel 会在 composer 用于安装/更新时创建该文件(查看 composer.json 以查看更新时运行的命令 -
php artisan clear-compiled和php artisan optimize)。我不确定它们是否可以在任何情况下都没有可用的 PHP 可执行文件的 Windows 上工作,所以compiled.php可能不适合你。