Composer自动生成错误的路径

时间:2017-02-03 19:26:10

标签: php laravel-5 composer-php

我正在使用Laravel 5建立一个网站。 Laravel使用Composer作为依赖管理。

每当我运行composer dump-autoload时,都会生成自动加载类。 不幸的是,其中两个文件中的路径是错误的。

我在Laravel中使用了一个Seed类和一些迁移,它们分别位于database/seeds database/migrations

生成的数据库文件夹下所有类(迁移,种子)的路径是错误的。 路径看起来像$baseDir . '/atabase/migrations/2017_02_02_153131_create_cards_table.php' 正如您所见,“数据库”中的“d”缺失。

据我所知,自动加载类在composer.json文件中定义。 但这里似乎是正确的:

    "autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    }
}

迁移工作正在进行,但种子却没有。 当我进行搜索和替换并更正路径时,除非我composer dump-autoload

,否则一切都很好

我正在使用Laravel 5.4.8和Composer 1.3.2在Windows 10计算机上进行开发。

编辑: 这是composer dump-autoload -vvv

的输出
PS C:\Users\phoef\Documents\Projekte\CardViewer> composer dump-autoload -vvv 
Reading ./composer.json
Loading config file ./composer.json
Checked CA file C:\Users\phoef\AppData\Local\Temp\composer-cacert-    300c74d6960d46715ffed607c8e36acfa7cbcad49862bb1b67d3c43dea9bfb40.pem: valid
Executing command (C:\Users\phoef\Documents\Projekte\CardViewer): git branch --no-color --no-abbrev -v
Reading C:/Users/phoef/AppData/Roaming/Composer/composer.json
Loading config file C:/Users/phoef/AppData/Roaming/Composer/composer.json
Reading C:\Users\phoef\Documents\Projekte\CardViewer/vendor/composer/installed.json
Reading C:/Users/phoef/AppData/Roaming/Composer/vendor/composer/installed.json
Running 1.3.2 (2017-01-27 18:23:41) with PHP 7.1.1 on Windows NT / 10.0
Generating autoload files

包含错误路径的两个文件是:autoload_classmap.phpautoload_static.php

编辑2: 请在下面找到完整的composer.json

{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
    "php": ">=5.6.4",
    "laravel/framework": "5.4.*",
    "laravel/tinker": "~1.0"
},
"require-dev": {
    "fzaninotto/faker": "~1.4",
    "mockery/mockery": "0.9.*",
    "phpunit/phpunit": "~5.7"
},
"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    }
},
"autoload-dev": {
    "psr-4": {
        "Tests\\": "tests/"
    }
},
"scripts": {
    "post-root-package-install": [
        "php -r \"file_exists('.env') || copy('.env.example', '.env');\""
    ],
    "post-create-project-cmd": [
        "php artisan key:generate"
    ],
    "post-install-cmd": [
        "Illuminate\\Foundation\\ComposerScripts::postInstall",
        "php artisan optimize"
    ],
    "post-update-cmd": [
        "Illuminate\\Foundation\\ComposerScripts::postUpdate",
        "php artisan optimize"
    ]
},
"config": {
    "preferred-install": "dist",
    "sort-packages": true
   }
}

2 个答案:

答案 0 :(得分:0)

种子和迁移位于database/目录(来自项目根目录),而不是app/内。例如,您是否有database/seeds/CardsTableSeeder.php

您是否使用artisan创建了它们?

php artisan make:migration create_cards_table

php artisan make:seed CardsTableSeeder

不要求这样做,但确保将它们放在正确的目录中非常方便。

这是我的autoload,您错过了psr-4密钥。

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    }
}

我不知道为什么要做atabase,抱歉

答案 1 :(得分:-3)

你做错了什么。您需要重置项目并从头开始。