2014-01-25 95 views
0

我已經在Windows Vista 64機器上安裝了php和composer。我有一段時間讓Composer接受指令來使用指定的目錄,而不是默認的C:\ Users \\ AppData \ Roaming \ Composer。php composer open_basedir限制,我如何設置主路徑?

我試圖建立一個config.json文件即:

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

,這完全忽略了。甚至爲了好玩而添加了cache-dir。

我試圖改變composer.json即:

​​

,仍然我得到的消息影響了open_basedir限制,指的是

C:\Users\<user>\AppData\Roaming\Composer 

我還做了一個IISRESET,以防萬一的iis緩存的東西。

因此,任何線索我到哪裏去錯了。我知道我可以修改php.ini,但對我來說這違反了php提供的安全性。我寧願告訴作曲家行爲,並做我告訴它做的事情。


這裏是我使用的命令行和它的結果,無論在config.phar或composer.phar的「配置」部分中的任何設置會發生同樣的錯誤。 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] 
+0

請說明您在執行簡單的,未配置的作曲家運行時收到的錯誤消息。當我試圖重現這個問題,並且看到相同的信息時,我知道我正處在正確的軌道上。同時解釋您正在使用的命令,即複製並粘貼命令行。 – Sven

+1

最後,我放棄並禁用了open_basedir的php.ini設置。有點警察了,但是鞭打死馬有什麼意義? – user3230847

回答

0

你需要創建一個目錄c:\ pathTo \作曲家和here

下載composer.phar進去然後設置COMPOSER_HOME和COMPOSER_CACHE_DIR運行PHP,在批處理文件之前:

composer.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