使用PHP运行composer accross broswser

使用PHP运行composer accross broswser,php,composer-php,Php,Composer Php,该职位与此相关: 我的问题是如何在没有终端的情况下安装库,并考虑到一些主机不接受exec命令 总之,用户只需单击按钮即可使用库安装应用程序 多谢各位 我尝试了两种解决方案: use Composer\Console\Application; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\StreamOutput; putenv('COMPOSER_H

该职位与此相关:

我的问题是如何在没有终端的情况下安装库,并考虑到一些主机不接受
exec
命令

总之,用户只需单击按钮即可使用库安装应用程序

多谢各位

我尝试了两种解决方案:

  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);
结果是:(不工作且未安装任何设备)

第二种方法:

  $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);
结果是:(不工作且未安装任何设备)


您不需要在生产服务器上运行composer

您可以在具有类似软件(OS、php版本)的计算机上的项目中运行composer。然后,您可以将包含供应商文件夹的已生成项目目录复制到生产服务器

通常您可以先压缩/解压缩它,然后传输,然后解压缩/解压缩。对于后续更新,rsync之类的东西可能是只更新项目文件夹中已更改部分的快速解决方案


您可能需要一个脚本,该脚本首先复制您的开发目录,然后清除任何个人凭据(例如,用于开发的任何SaaS解决方案的密码),然后自动执行编写和传输。

可能重复@fonini。您看我的第一句话吗,它不是重复的。浏览器中的run composer是与browserI中带有PHP脚本的run composer的链接,我相信如果没有exec,您将无法运行任何命令。
  $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)