我正在使用Symfony进行Dockerized应用程序。我需要将作曲家供应商目录移动,所以我确实将Environnement变量设置为$ composer_vendor_dir到/root/app-dendors。
供应商正确地找到了此目录,但与Symfony Vardump组件造成了麻烦。默认情况下,在Symfony 2中,它是从这样的作曲家加载的:
"autoload-dev": {
"files": [
"vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php"
]
}
在我的情况下,这条路变得错误。我想做类似的事情:
"autoload-dev": {
"files": [
"{$COMPOSER_VENDOR_DIR}/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php"
]
},
,但我在作曲家文档中没有看到有关在作曲家中使用Env变量的任何内容。
我想以开发模式移动供应商,但是如果未设置$ composer_vendor_dir,我希望它们在默认位置;因此,我不能将绝对filepath放在自动加载dev部分中:
"autoload-dev": {
"files": [
"/root/app-vendors/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php"
]
},
后退了几天后,一个简单的解决方案:
在 app/dump.php
上创建此文件<?php
$vendorsDir = getenv('COMPOSER_VENDOR_DIR')
?: __DIR__.'/../vendor';
require "$vendorsDir/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php";
然后自动加载此文件,而不是Symfony
"autoload-dev": {
"files": [
"app/dump.php"
]
},
注意:
-
COMPOSER_VENDOR_DIR
默认值为;vendor
&quot,请参阅https://getcomposer.org/doc/03-cli.md#composer-vendor-dir