未找到laravel类(适用于localhost但不适用于DO服务器)

时间:2014-04-03 06:53:58

标签: php laravel laravel-4 composer-php autoload

这是一个重复的问题 - 例如: 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

我试过......

我更新了作曲家。我试过“dump-autoload”。我在composer.json文件中将'minimum-stability'更改为'stable'(是的,这是在论坛帖子上提出的解决方案)。

其他解决方案与在composer.json文件中添加“psr-4”或“psr-0”有关,具体取决于作曲家版本 - 尝试过两者。

最令我难以置信的是,这个页面在我的本地机器上工作得很好,但在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"
}

6 个答案:

答案 0 :(得分:19)

最有可能(我很确定)您的本地环境为Windows,实时服务器为Linux。因此,如果类company类文件在本地服务器上用作company.php,那么它在本地服务器上是Company.php,但Linux遵循区分大小写的规则,因此它将company.phpCompany.php读为两个不同的文件。

因此,如果您使用的文件名为Company.php,请确保在Windows Company中使用company而不是c(更低)的相同大小写引用该类并且C并不重要,但Linux/Unix因为它具有区分大小写的性质而无效。

答案 1 :(得分:6)

当我在我工作的项目中添加/创建一个名为Follower_Group的新模型类时,我遇到了同样的问题,经过一些搜索,我找到了一个solution,在我的工作中运行良好案件。试试这个:

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

答案 2 :(得分:0)

如果您正在使用git

只需使用此命令:

git config core.ignorecase false

当前存储库的上述命令

全球

git config --global core.ignorecase false

答案 3 :(得分:0)

在上传过程中,有时会发生文件上传但其中的内容为空白。

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

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

答案 4 :(得分:0)

在本地计算机终端中运行命令composer dump-autoload,然后将本地计算机供应商的composer文件夹重新上载到服务器。

答案 5 :(得分:0)

这对我有用-> 在您的实时服务器上执行:composer install 这应该安装所有必需的缺少的软件包。

希望这对某人有所帮助!