更改供应商目录无法再使用Symfony 3.4查找文件

时间:2018-01-10 14:51:07

标签: php symfony composer-php

我试图在Symfony 3.4应用程序上更改我的依赖项目录。

我需要这样做,因为我正在使用Docker处理macOS而我宁愿让它们不与主机共享,因为文件同步太慢了。

related documentation,说:

  

composer.json中的更改将如下所示:

{
    "config": {
        "bin-dir": "bin",
        "vendor-dir": "/some/dir/vendor"
    },
}

我做了

  

然后,在app / autoload.php中更新autoload.php文件的路径:

// app/autoload.php

// ...
$loader = require '/some/dir/vendor/autoload.php';

我的autoload.php目录中没有app个文件 我在文档中遗漏了什么吗?

应用程序生成以下致命错误:

  

警告:require(/some/dir/vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php):无法打开流:/ vendor / composer中没有此类文件或目录第66行/autoload_real.php

     

致命错误:require():无法打开所需' /some/dir/vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php'第66行的/vendor/composer/autoload_real.php中的(include_path ='。:/ usr / local / lib / php')

我最初用以下方法创建了应用程序:

$ composer create-project symfony/framework-standard-edition test "3.*"

3 个答案:

答案 0 :(得分:4)

  1. 在编辑器中打开您的composer.json文件。
  2. 寻找" autoload-dev"节
  3. 删除整个"文件"部分(如果存在)
  4. 保存文件
  5. 再次运行finalvalues = dpath.util.search('values/*/*/max')
  6. 享受派对。
  7. 示例代码:

    composer install

答案 1 :(得分:0)

在Symfony 3.4中,文件app/autoload.php已删除,因此您应该:

  • 直接在web/app.phpweb/app_dev.php,bin / console和var/SymfonyRequirements.php文件
  • 中按新供应商路径替换旧的供应商路径
  • 重新运行命令$ composer install

答案 2 :(得分:0)

我遇到了同样的问题,并且解决了下一个问题。

遵循以下3个步骤

1。首先,修改composer.json以使用新的供应商路径:

"config": {
    ...,
    "vendor-dir": "/app-vendor"
},

删除下一行:

"files": ["vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php"]

2. 其次,如果您正在使用 docker-compose 添加一个新卷,您可以将您的供应商放在那里。

volumes:
  ...
  - /app-vendor

PD:/app-vendor是一个已安装的卷,现在是空目录。

3。最后,将require '/app-vendor/autoload.php';写入:

  • my_project_name/bin/console
  • my_project_name/web/app.php
  • my_project_name/web/app_dev.php

PD1:简单地说,这一行指向新的供应商路径。

PD2:没有必要修改任何其他文件(比如var/SymfonyRequirements.php,因为我可以阅读)。

检查您的更改

准备好更改后,请删除vendor/并删除容器以避免将来出现问题。

启动新容器并执行composer install。现在,/vendor将为/app-vendor,它不再位于项目的根文件夹中。

有关详细信息,我建议您转到我的docker-symfony存储库并检查提交。您将看到基准进展和其他提示,例如缓存卷和非共享/cache&& /logs个文件夹。

所有对于Symfony 3.4。