使用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)