Этот пост связан с этим: Запустите composer с PHP-скриптом в браузере
Моя проблема состоит в том, чтобы решить, как установить библиотеку без терминала, и принять во внимание, что некоторые хостинги делаютне принимать команду exec
.
В итоге пользователь может просто нажать кнопку, чтобы установить приложения с библиотекой
Спасибо.
Я попробовал 2 решения:
use Composer\Console\Application;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\StreamOutput;
putenv('COMPOSER_HOME=' . self::$root); // /www/mywebsite/shop/
putenv('COMPOSER_CACHE_DIR=' . CORE::BASE_DIRECTORY . '/Work/Cache/Composer/');
putenv('COMPOSER_HTACCESS_PROTECT=0');
сначала с этим кодом
$stream = fopen('php://temp', 'w+');
$output = new StreamOutput($stream);
$application = new Application();
$application->setAutoExit(false);
$code = $application->run(new ArrayInput(array('command' => 'install tinify/tinify')), $output);
$result = stream_get_contents($stream);
var_dump($code);
var_dump($result);
Результат: (не работает и ничего не установлено)
int(1) string(0) ""
Второй подход:
$input = new ArrayInput(array('command' => 'install tinify/tinify'));
$application = new Application();
$application->setAutoExit(false); // prevent `$application->run` method from exitting the script
$result = $application->run($input);
var_dump($result);
Результат: (не работает и ничего не установлено)
int(1)