>我正在尝试更改我在Symfony 3.4应用程序上的依赖项目录。
我需要它,因为我正在使用 Docker 在 macOS 上工作,我宁愿不与主机共享它们,因为文件同步太慢了。
相关文档说:
composer.json 中的更改将如下所示:
{ "config": { "bin-dir": "bin", "vendor-dir": "/some/dir/vendor" }, }
我做到了
然后,更新 app/autoload.php 中自动加载.php文件的路径:
// app/autoload.php // ... $loader = require '/some/dir/vendor/autoload.php';
我的app
目录中没有任何autoload.php
文件。
我在文档中遗漏了什么吗?
应用程序生成以下致命错误:
警告:require(/some/dir/vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php):无法打开流:第 66 行的/vendor/composer/autoload_real.php 中没有这样的文件或目录
致命错误:require():在第 66 行的/vendor/composer/autoload_real.php 中需要打开失败的"/some/dir/vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php"(include_path='.:/usr/local/lib/php')
我最初使用以下内容创建该应用程序:
$ composer create-project symfony/framework-standard-edition test "3.*"
- 在编辑器中打开 composer.json 文件。
- 查找"自动加载开发"部分
- 删除整个"文件"部分(如果存在)
- 保存文件
- 再次运行
composer install
- 享受派对。
示例代码:
"autoload-dev": {
"psr-4": {
"App\Tests\": "tests/"
},
"files": [
"vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php"
]
},
在Symfony 3.4中,文件app/autoload.php
被删除,因此您应该:
- 直接在
web/app.php
、web/app_dev.php
、bin/控制台和var/SymfonyRequirements.php
文件中将旧的供应商路径替换为新的供应商路径 - 重新运行命令
$ composer install
我遇到了同样的问题,下一个问题已经解决了。
遵循以下 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。