未找到 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.phpCompany.php 读取为两个不同的文件。

因此,如果您使用了文件名Company.php,那么请确保您使用与Company 相同的大小写来引用该类,而不是company(小写),在Windows 中cC 无关紧要但在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 服务器)的主要内容,如果未能解决你的问题,请参考以下文章

未找到适用于 ucanaccess 的驱动程序

laravel 类 'GuzzleHttp\Client' 未找到

Laravel 5 未找到类“Illuminate\Html\HtmlServiceProvider”

未找到 Laravel 助手类

未找到 Laravel 5 类“Illuminate\Support\Facades\FormFacade”

未找到 Laravel 5 类“App\Http\Controllers\File”