0

我已经在 Windows Vista 64 机器上安装了 php 和 composer。我有一段时间让 Composer 接受指令以使用默认 C:\Users\\AppData\Roaming\Composer 以外的指定目录。

我尝试设置一个 config.json 文件,即:

{
    "config": {
        "COMPOSER_HOME": "c:\inetpub\wwwroot\PHPcomposer\",
        "COMPOSER_CACHE_DIR": "c:\inetpub\wwwroot\PHPcomposer\"
    }    
}

这被完全忽略了。甚至为了好玩而添加了缓存目录。

我尝试改变 composer.json 即:

{
    "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>\AppData\Roaming\Composer

我还做了一个 iisreset,以防 iis 正在缓存东西。

所以,任何关于我哪里出错的线索。我知道我可以更改 php.ini,但这对我来说违反了 php 提供的安全性。我更愿意告诉 Composer 去表现并做我告诉它做的事情。


这是我使用的命令行及其结果,无论 config.phar 中的任何设置或 composer.phar 中的“config”部分如何,都会发生相同的错误。php.ini 有 open_basedir = "C:\inetpub\wwwroot":

C:\inetpub\wwwroot\PHPcomposer>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:\inetpub\wwwroot)


 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]
4

1 回答 1

0

您需要创建一个目录 c:\pathTo\composer 并从这里下载composer.phar到它

然后在运行 php 之前在批处理文件中设置 COMPOSER_HOME 和 COMPOSER_CACHE_DIR:

作曲家.bat

@ECHO off
SET cwd=%cd%
PUSHD "c:\pathTo\php-5.4.28"
SET COMPOSER_HOME=c:\pathTo\composer
SET COMPOSER_CACHE_DIR=c:\pathTo\composer
"c:\pathTo\php-5.4.28\php.exe" -c "c:\pathTo\phpIniDir" -ddisable_functions="" -ddisable_classes="" -n "c:\pathTo\composer\composer.phar" --working-dir="%cwd%" %* 
POPD
于 2014-05-01T12:36:37.100 回答