未找到 laravel 类(适用于 localhost 但不适用于 DO 服务器)
Posted
技术标签:
【中文标题】未找到 laravel 类(适用于 localhost 但不适用于 DO 服务器)【英文标题】:laravel class not found (works on localhost but not on DO server) 【发布时间】:2014-05-14 19:56:38 【问题描述】:这是一个重复的问题 - 例如: Laravel 4 migrations - class not found
但是,我已经尝试了所有解决方案(从我能找到的每个论坛),但无法解决这个问题。
场景
我在本地机器上创建了一个 Laravel 4 项目 - 添加了一些类、控制器、视图等 - 项目运行良好。
然后我将这个新的 repo 复制到我的 DO 服务器上 - 使用 composer 等安装依赖项。该项目看起来不错,除了一个页面显示错误:
Class 'company' not found
Symfony\Component\Debug\Exception\FatalErrorException
…/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php593
您可以查看此页面here。
我试过了……
我更新了作曲家。我试过“转储自动加载”。我在 composer.json 文件中将“最低稳定性”更改为“稳定”(是的,这是论坛帖子中提出的解决方案)。
其他解决方案与将“psr-4”或“psr-0”添加到 composer.json 文件有关,具体取决于作曲家版本 - 两者都尝试过。
最让我难以置信的是,这个页面在我的本地机器上运行良好,但在 DO 服务器上却不行......如果你们需要更多信息来找出这个答案,请告诉我知道。
任何帮助表示赞赏:)
这就是我的 composer.json 文件的样子:
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require":
"laravel/framework": "4.0.*"
,
"autoload":
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
,
"scripts":
"post-install-cmd": [
"php artisan optimize"
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-create-project-cmd": [
"php artisan key:generate"
]
,
"config":
"preferred-install": "dist"
,
"minimum-stability": "stable"
【问题讨论】:
我觉得这是区分大小写的问题。您可以在vendor/composer/autoload_classmap.php
下查看您的类 company 是否以及如何加载,因为它在您的开发环境下工作。
你能添加显示错误的页面代码吗?如果其他事情正常,那么我认为 composer.json 没有问题。
【参考方案1】:
很可能(我很确定)您的本地环境是Windows
,实时服务器是Linux
。因此,如果类company
类文件在本地服务器上用作company.php
,那么它在本地服务器上与Company.php
相同,但Linux
遵循区分大小写的规则,因此它将company.php
和Company.php
读取为两个不同的文件。
因此,如果您使用了文件名Company.php
,那么请确保您使用与Company
相同的大小写来引用该类,而不是company
(小写),在Windows 中c
和C
无关紧要但在Linux/Unix
上,它确实是因为它区分大小写。
【讨论】:
确实!我不确定为什么只有一个类不起作用(它们都以相同的方式设置......),但是将类名更改为小写并再次自动转储它可以修复它。再次感谢 完美!!!在可能的情况下,我的本地主机是 Mac,它甚至可以工作。在我的服务器中,我将 Apache 与 nginx 一起使用,那么如果它不同(大写和小写),它就不起作用。我已经浪费了很多时间,但你是对的。谢谢。【参考方案2】:当我在我从事的项目中添加/创建一个名为Follower_Group
的新模型类时,我遇到了同样的问题,经过一番搜索,我找到了一个在我的案例中运行良好的solution。试试这个:
-
在本地计算机的终端中执行命令
composer dump-autoload
。
将这两个文件夹 /bootstrap
和 /vendor/composer
从您的本地计算机重新上传到您的服务器。
【讨论】:
【参考方案3】:如果您使用 git,并且希望 Git 区分大小写,请调整其配置:
只需对当前存储库使用以下命令:
git config core.ignorecase false
全局设置:
git config --global core.ignorecase false
【讨论】:
【参考方案4】:在上传过程中,有时会发生文件上传但里面的内容是空白的情况。
我遇到了类似的问题并修复了它重新上传文件。
当我在服务器上看到文件时,它是 0 字节,所以我必须重新上传本地文件来解决问题。
【讨论】:
【参考方案5】:在您的本地机器终端运行命令composer dump-autoload
,然后从本地机器的供应商重新上传composer文件夹到您的服务器。
【讨论】:
【参考方案6】:这对我有用 ->
在您的实时服务器上执行:composer install
这应该会安装所有缺少的必要软件包。
希望这对某人有所帮助!
【讨论】:
是什么让您认为缺少任何包? 我不知道究竟是什么原因造成的,但据我记得这个解决方案对我有用。 :)以上是关于未找到 laravel 类(适用于 localhost 但不适用于 DO 服务器)的主要内容,如果未能解决你的问题,请参考以下文章
laravel 类 'GuzzleHttp\Client' 未找到
Laravel 5 未找到类“Illuminate\Html\HtmlServiceProvider”