An alternative to Danack's solution, is to include "composer/composer"
as a
dependency in your composer.json
, and just use it's API, instead of extracting
the contents from composer.phar
.
composer.json
...
"require-dev": {
"composer/composer": "dev-master",
}
...
Run composer install
manually, so you'll be able to require it on the following script:
composer_install.php
<?php
require 'vendor/autoload.php'; // require composer dependencies
use ComposerConsoleApplication;
use SymfonyComponentConsoleInputArrayInput;
// ComposerFactory::getHomeDir() method
// needs COMPOSER_HOME environment variable set
putenv('COMPOSER_HOME=' . __DIR__ . '/vendor/bin/composer');
// call `composer install` command programmatically
$input = new ArrayInput(array('command' => 'install'));
$application = new Application();
$application->setAutoExit(false); // prevent `$application->run` method from exitting the script
$application->run($input);
echo "Done.";
When you access the script from your browser, the command should run as expected.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…