php composer open_basedir restriction, how do I set the home paths?

209

I have installed php and composer on a Windows Vista 64 machine. I am having a devil of a time getting Composer to accept a directive to use a specified directory other than the default C:\Users\\AppData\Roaming\Composer.

I tried to set up a config.json file viz:

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

and this was completely ignored. even added cache-dir for fun.

I tried altering the 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/"
    }    
}

and still I am getting an open_basedir restriction in effect message referring to

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

I also did a iisreset, just in case iis was caching stuff.

So, any clues as to where I am going wrong. I know I can alter php.ini, but that to me is violating the security that php is offering. I would prefer to tell Composer to behave and do what I tell it to do.


Here is the command line I used and the result of it, the same error occurs regardless of any settings in config.phar or the "config" section in composer.phar. The php.ini has 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]
863

Answer

Solution:

You need to Create a directory c:\pathTo\composer and download composer.phar into it from here

Then setup COMPOSER_HOME and COMPOSER_CACHE_DIR before running php, in a batch file:

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

People are also looking for solutions to the problem: android - how to remove hidden junk character after php json encode

Source

Didn't find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

Ask a Question

Write quick answer

Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

Similar questions

Find the answer in similar questions on our website.