php - php composer运行安装库不起作用
问题描述
我尝试创建一个 PHP 类来安装一个新的作曲家库。
它删除了里面的所有其他库composer.json
您是否有任何想法添加一个库而不删除所有库?
谢谢你
public static function install(string $packages)
{
if ($packages == self::dump()) {
return false;
}
putenv('COMPOSER_HOME=' . BASE_DIRECTORY . 'External/vendor/bin/composer');
self::createComposerJson($packages);
// Setup composer output formatter
$stream = fopen('php://temp', 'w+');
$output = new StreamOutput($stream);
// Programmatically run `composer install`
$application = new Application();
$application->setAutoExit(false);
$application->run(new ArrayInput(array('command' => 'install')), $output);
// remove composer.lock
if (file_exists(static::$root . 'composer.lock')) {
unlink(static::$root . 'composer.lock');
}
// rewind stream to read full contents
rewind($stream);
return stream_get_contents($stream);
}
/**
* @param $packages
* @return false|int
*/
protected static function createComposerJson($packages) {
$array = [
array(
'config' => array('vendor-dir' => self::VENDOR_DIR),
'require' => $packages,
//
// TODO:
// windowsazure requires PEAR repository
//
'repositories' => array(array(
'type' => 'pear',
'url' => 'http://pear.php.net'
)),
'preferred-install' => 'dist'
)
];
$composer_json = str_replace("\/", '/', json_encode($array));
return file_put_contents(static::$root . 'composer.json', $composer_json, FILE_APPEND | LOCK_EX);
}
结果是 composon.json 的结果。这儿存在一个问题
{
"config": {
"vendor-dir": "includes/ClicShopping/External/vendor"
},
"require": {
"phpmailer/phpmailer": "^6.0",
"guzzlehttp/guzzle": "^6.3",
"setasign/fpdf": "1.8.1",
"phpxmlrpc/phpxmlrpc": "^4.0",
"sensiolabs/security-checker": "^6.0",
"composer/composer": "^1.9"
}
}
[{"config":{"vendor-dir":"vendor"},"require":"stripe/stripe-php","repositories":[{"type":"pear","url":"http://pear.php.net"}],"preferred-install":"dist"}]
解决方案
推荐阅读
- react-native - 如何根据其中的文本调整原生文本组件的大小?
- css - 如何从 materillize 中的日期选择器更改开始年份
- android - Xamarin.Android 从 TextureView 获取帧
- javascript - 使用ajax从php数组中获取js数组,没有连接
- php - 我如何在 laravel 中调用 ajax 文件
- asp.net - 如何在 IIS 上的单个域上托管多个网站而不影响其他网站的性能?
- django - Django:如何在一段时间(例如 6 个月)后自动将布尔字段重置为默认值,以使页面的完全访问权限过期
- python - PDF 下载不适用于 Android Captive Portal Browser
- java - 没有在 vaadin 框架中获得 sessin 值
- ember.js - 在 ember route-action helper 中获取操作的价值