Запустите composer через браузер с PHP - PullRequest
0 голосов
/ 16 октября 2019

Этот пост связан с этим: Запустите 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) 

1 Ответ

0 голосов
/ 16 октября 2019

Вам не нужно запускать composer на рабочем сервере.

Вы можете запустить composer в проекте на компьютере с аналогичным программным обеспечением (ОС, версия php). Затем вы можете скопировать уже созданный каталог проекта с папкой vendor в нем на рабочий сервер.

Обычно вы можете сначала скопировать его в zip / gzip, а затем передать, а затем разархивировать / ungzip. Для последующих обновлений что-то вроде rsync может быть быстрым решением для обновления только тех частей папки проекта, которые изменились.

Возможно, вы захотите иметь сценарий, который сначала копирует каталог разработки, а затем очищает любые личные учетные данные (например, пароли к любым SaaS-решениям, которые вы используете для разработки), а затем автоматически создает и переносит их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...