让Composer从供应商目录中为archive_tar自动加载PEAR的代码(例如PEAR.php)?

时间:2014-03-17 17:40:33

标签: php composer-php pear

我有一台安装了PEAR的开发机器(在/usr/share/php/PEAR.php中)和一个没有安装PEAR的生产系统。

在生产包装盒上,我收到了这个错误,我无法使用开发机器:

A PHP Error was encountered
Severity: Warning
Message: require_once(PEAR.php): failed to open stream: No such file or directory
Filename: Archive/Tar.php
Line Number: 42
Fatal error: require_once(): Failed opening required 'PEAR.php' (include_path='.:') in /www/application/vendor/pear/archive_tar/Archive/Tar.php on line 42

见第42行:https://github.com/pear/Archive_Tar/blob/master/Archive/Tar.php#L42

我不想在生产箱上安装PEAR,因为它已在系统范围内安装。如果我可以从作曲家本身安装PEAR.php及其所有相关文件,对我来说似乎更清晰。

我能找到的与Composer和PEAR相关的所有问题都与从Composer安装软件包有关。

但我想要做的是让Composer 从项目的供应商目录中自动加载PEAR代码,这样我就不必全局安装PEAR了。生产系统。

这里有一个几乎完全相同的问题:How do I get PEAR.php with Composer?

但看起来他接受了自己的答案,甚至没有解决问题。

我的composer.json看起来像:

{
    "require": {
        "pear/archive_tar": "*",
    }
}

似乎,如果我的建议是可能的,我会添加" pear / pear"或需要的东西,它会将PEAR代码本身安装在项目目录中,但我找不到这样的包。

2 个答案:

答案 0 :(得分:1)

最终找到了一个Github的要点,其中有人列出了#梨;梨/梨"作为你需要的包裹:

}
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.php.net"
        }
    ],
    "require": {
        "pear-pear/PEAR": "*",
        "pear/archive_tar": "*"
    }
}

答案 1 :(得分:0)

我找到了秘诀:作曲家似乎并没有真正尊重“梨子”。作为pear.php.net的别名。所以,如果你想要梨(但不是pear2)风格的依赖,那么这里是我的代码片段:

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

请注意,网址必须为' https'或作曲家会抱怨和/或失败。