laravel 类未找到(适用于本地主机,但不适用于 DO 服务器)

问题描述 投票:0回答:8

这是一个重复的问题 - 例如: Laravel 4 迁移 - 未找到类

但是,我已经尝试了所有解决方案(来自我能找到的每个论坛),但无法解决这个问题。

场景

我在本地计算机上创建了一个 Laravel 4 项目 - 添加了一些类、控制器、视图等 - 该项目运行良好。

然后,我将这个新的存储库复制到我的 DO 服务器上 - 安装与 Composer 的依赖项等。该项目看起来不错,除了一个页面显示错误:

Class 'company' not found
Symfony\Component\Debug\Exception\FatalErrorException
…/­vendor/­laravel/­framework/­src/­Illuminate/­Database/­Eloquent/­Model.php593

您可以在此处查看此页面。

我已经尝试过...

我更新了作曲家。我尝试过“转储自动加载”。我在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"
}
php laravel laravel-4 composer-php autoload
8个回答
36
投票

最有可能(我很确定)您的本地环境是

Windows
,实时服务器是
Linux
。因此,如果类
company
类文件在本地服务器上用作
company.php
,那么它在本地服务器上与
Company.php
相同,但由于
Linux
遵循区分大小写的规则,因此它将
company.php
Company.php
读取为两个不同的文件。

因此,如果您使用了文件名

Company.php
,请确保您使用与
Company
相同的大小写来引用类,而不是
company
(下),在Windows中
c
C
并不重要,但在
Linux/Unix
确实如此,因为它区分大小写。


7
投票

当我在我从事的项目中添加/创建一个名为

Follower_Group
的新模型类时,我也遇到了同样的问题,经过一番搜索,我找到了一个 解决方案,它在我的案例中效果很好。试试这个:

  1. 在本地计算机的终端中执行命令
    composer dump-autoload
  2. 将这 2 个文件夹
    /bootstrap
    /vendor/composer
    从本地计算机重新上传到服务器。

1
投票

如果您使用 git,并且希望 Git 区分大小写,请调整其配置:

只需对当前存储库使用以下命令:

git config core.ignorecase false

对于全局设置:

git config --global core.ignorecase false


1
投票

我也遇到了同样的问题。

这是一个名为 app/helpers 的路径,在它里面是我的类 Log:

namespace App\Helpers;

class Log {
 ...
}

在我的本地计算机上,它工作正常,但在服务器上,我遇到了异常。

解决方案?将路径名称从“helpers”更改为“Helpers”。

所以,请注意大写;)


0
投票

我通过将类从“sampleTestCase”重命名为 SampleTestCase”来解决这个问题,然后 Composer dump-autoload 并清除缓存


-1
投票

在上传过程中有时会出现文件上传完毕但里面的内容是空白的情况。

我遇到了类似的问题并通过重新上传文件修复了它。

当我在服务器上看到该文件时,它是 0 字节,因此我必须重新上传本地文件才能解决问题。


-1
投票

在本地机器终端中运行命令

composer dump-autoload
,然后将本地机器中供应商的composer文件夹重新上传到您的服务器。


-2
投票

这对我有用 -> 在您的实时服务器上执行:

composer install
这应该安装所有缺少的必需软件包。

希望这对某人有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.