我已经在Windows Vista 64机器上安装了PHP和作曲家。我有一段时间的魔鬼让作曲家接受指令使用默认c: users \ appdata roaming composer以外的其他指定目录。
我尝试设置一个config.json文件,即:
{
"config": {
"COMPOSER_HOME": "c:inetpubwwwrootPHPcomposer",
"COMPOSER_CACHE_DIR": "c:inetpubwwwrootPHPcomposer"
}
}
这完全被忽略了。甚至添加了CACHE-DIR。
我尝试更改composer.json viz:
{
"require": {
"symfony/validator": "2.1.*",
"doctrine/dbal": "2.2.*",
"monolog/monolog": "dev-master",
"jtreminio/test-extensions": "dev-master"
},
"minimum-stability": "dev",
"config": {
"COMPOSER_HOME": "c:/inetpub/wwwroot/PHPcomposer/",
"cache-dir": "c:/inetpub/wwwroot/PHPcomposer/",
"COMPOSER_CACHE_DIR": "c:/inetpub/wwwroot/PHPcomposer/"
}
}
,我仍然得到了一个open_basedir限制,效果消息是
C:Users<user>AppDataRoamingComposer
我也做了一个iisreset,以防万一iis正在缓存。
所以,关于我出错的任何线索。我知道我可以改变php.ini,但是对我来说,违反了PHP提供的安全性。我宁愿告诉作曲家行为并做我告诉它的事情。
这是我使用的命令行,其结果是,无论config.phar或composer.phar中的"配置"部分中的任何设置,都会发生相同的错误。php.ini具有open_basedir =" c: inetpub wwwroot":
C:inetpubwwwrootPHPcomposer>composer install
[ErrorException]
file_exists(): open_basedir restriction in effect.
File(C:/Users/Stuart/AppData/Roaming/Composer/.htaccess) is not
within the allowed path(s): (C:inetpubwwwroot)
install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev]
[--no-plugins] [--no-custom-installers] [--no-scripts] [--no-progress]
[-v|vv|vvv|--verbose] [-o|--optimize-autoloader]
您需要创建一个目录C: pathto composer并下载 composer.phar 从这里
然后在运行PHP之前设置Composer_home和Composer_cache_dir,在批处理文件中:
composer.bat
@ECHO off
SET cwd=%cd%
PUSHD "c:pathTophp-5.4.28"
SET COMPOSER_HOME=c:pathTocomposer
SET COMPOSER_CACHE_DIR=c:pathTocomposer
"c:pathTophp-5.4.28php.exe" -c "c:pathTophpIniDir" -ddisable_functions="" -ddisable_classes="" -n "c:pathTocomposercomposer.phar" --working-dir="%cwd%" %*
POPD