我正在开发一个使用PEAR包的项目。因为您永远不知道您的托管服务提供商将安装哪个版本的PEAR包(特别是因为我需要将修补程序应用于其中一个软件包),所以我想把我的项目的PEAR源代码放入SVN,所以其他开发人员可以立即拥有依赖项。
但是与PEAR相关的一切似乎都有绝对的目录!运行“pear config-create.peed.conf”来设置新的PEAR目录甚至失败并显示错误消息:
根目录必须是绝对路径
我检查了其他一些服务器上的pear配置文件,它们似乎也有绝对路径。
每当开发人员将其检出自己的机器,或者我们将其全部导出到服务器时,我们都不知道绝对路径是什么。
有没有办法设置它?
答案 0 :(得分:3)
我无法让我的托管服务提供商安装我想要的PEAR库。以下是我将PEAR作为源代码树的一部分。
创建remote.conf与手册略有不同。假设我想在项目的vendor/PEAR
中安装PEAR。你会这样做:
#from the root of the project
$ cd vendor ; mkdir PEAR ; cd PEAR
$ pear config-create <absolute path to project>/vendor/PEAR/ remote.conf
$ pear -c remote.conf channel-update pear.php.net
$ pear -c remote.conf install --alldeps pear
$ pear -c remote.conf install --alldeps <libname>
Voila ...... PEAR是源代码树的一部分。
remote.conf
中的路径是绝对的,但库本身仍然可以工作。它只是更新,不会在任何地方工作。您需要从与其创建的路径相同的路径更新它 - 在上述情况下,来自vendor/PEAR
。vendor/PEAR
(我有代码,只要问你是否需要。)答案 1 :(得分:2)
如果你有PHP 5.3.1使用Pyrus,PEAR2安装程序。 pyrus管理的安装可以随心所欲地移动。
下载pyrus -
$> wget http://pear2.php.net/pyrus.phar
创建一个目录来存储pyrus安装的软件包:
$> mkdir mylibs
安装包 -
$> php pyrus.phar mylibs install pear/Net_URL
您安装的软件包现在位于mylibs/php/Net/URL.php
请注意,我们传递了mylibs目录以指示要安装到的目录,以及通道名称“pear”(pyrus中的默认值为pear2.php.net)。为方便起见,如果chmod + x,可以从cli执行pyrus.phar文件。
您可以将mylibs
目录移动到任何您想要的位置。甚至将它提交到您的存储库。
PEAR website上有很多文档。
答案 2 :(得分:1)
我完全确定这是否能解答您的问题,但您可以在命令行上指定PEAR存储库的位置,以便您可以使用以下命令创建本地存储库:
pear install --force --installroot=/path/to/my/pear/ PEAR
然后您可以使用以下方法安装其他软件包:
pear install --installroot=/path/to/my/pear/ SomePackage
要在应用程序中使用本地存储库,您必须确保include_path
指向本地存储库,而不是默认(全局安装)存储库。所以你希望它看起来像这样:
include_path = ".:/path/to/my/pear/usr/share/php"
回复:
实际上,他希望避免使用绝对路径,以便可以从多台计算机中检出解决方案,而不依赖于每个计算机都安装了存储库的路径。
- Carlos Lima
好像你是对的。在这种情况下,我建议您不要将PEAR存储库检入SVN存储库,而是使用部署脚本在服务器上安装/更新存储库。只需确保安装特定版本。 (你做有自动部署,对吗?)