Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用composer安装PECL软件包?_Php_Composer Php_Pear_Pecl - Fatal编程技术网

Php 如何使用composer安装PECL软件包?

Php 如何使用composer安装PECL软件包?,php,composer-php,pear,pecl,Php,Composer Php,Pear,Pecl,我希望使用Composer安装一个PEAR包(特别是pecl.php.net中的mongodb) 我可以使用以下composer.json从主“pear”通道安装软件包: { "repositories": [{ "type": "pear", "url": "https://pear.php.net" }], "require": { "pear-pear/http": "*" } } (注意:来自的原始示例不起作用)

我希望使用Composer安装一个PEAR包(特别是pecl.php.net中的mongodb)

我可以使用以下composer.json从主“pear”通道安装软件包:

{ "repositories": [{
            "type": "pear",
            "url": "https://pear.php.net"
        }],
    "require": { "pear-pear/http": "*" }
}
(注意:来自的原始示例不起作用)

但我得到了:

在任何版本中都找不到请求的pear pecl/mongodb包,包名中可能有输入错误

…当我尝试设置“pecl”频道时:

"require": { "pear-pecl/mongodb": "*" }
我可以通过pear列表频道看到pecl频道:

$pear列表频道
注册频道:
====================
通道别名摘要
net phpdocs php文档团队
pear.php.net pear php扩展和应用程序
存储库
net pecl php扩展社区库

我可以用pear安装相同的软件包,pecl/mongodb是一个二进制驱动程序。我看不出composer如何能够在本地将其安装到项目中。我认为您无法通过composer安装任何PECL扩展

Composer可以管理项目的PHP依赖项,这些依赖项需要包含一个有效的
Composer.json
文件,才能标识为包

如果你检查一下,你就看不到这样的东西了。这是一个C语言项目,需要作为运行时扩展进行编译和安装


PECL扩展不打算安装在项目上,这样做也没有意义;但是需要为PHP运行时安装并启用。当您运行pear install pecl/mongodb时,您正在为使用相同运行时的所有项目安装二进制扩展

PECL包无法与Composer一起安装,因为PECL.php.net存储库已损坏(请参阅和相关票据)

可以使用以下命令将其添加到composer.json

{ "repositories": [
        {   "type": "pear",
            "url": "https://pecl.php.net"
        }],
    "require": {
       "pear-pecl/mongodb": "*"
    }}

但是安装失败,因为

中的XML被破坏了,所以Composer只适用于项目本地包,而PEAR是纯PHP和C包的混合体,两者都安装在系统范围内?听起来很奇怪,是的,很奇怪。但PEAR和PECL比作曲家早。您可以使用composer全局安装某些软件包(请参见
--global
)。如果它是一个有效的包(例如,有一个
composer.json
定义),您甚至可以安装非PHP文件。但PECL扩展是二进制的,将在运行时级别安装。作曲家帮不了你。并且没有一个<代码>作曲家.JSON< /Cord>文件,因此编写不考虑它们“包”。