如何在Mac OS X 10.5 Leopard上设置PEAR

10

我最终想要安装PEAR,以便轻松地安装PHPUnit。我想建立一个Mac、Apache、MySQL、PHP、PHPUnit开发环境,以便在本地进行测试。我已经安装好了Apach、MySQL和PHP。现在我需要的只是PHPUnit,这意味着我需要PEAR来安装它。

我已经搜索了很多地方,在如何在Mac OS X 10.5上安装PEAR方面有几种不同的变体“教程”。然而,我似乎无法让它们中的任何一个工作!有人成功过吗?我并不完全确信我是否已经按照应该设置的方式设置好了一切,因此,如果您能包括“默认”Mac OS X 10.5包含路径,或者简单说明一下每个东西应该放在哪里,我将不胜感激。

按照教程,我执行以下操作:

curl http://pear.php.net/go-pear > go-pear.php
sudo php -q go-pear.php

我按回车键直到到达一个包含7个路径的列表:

1. Installation prefix ($prefix) : /Users/andrew
2. Temporary files directory     : $prefix/temp
3. Binaries directory            : $prefix/bin
4. PHP code directory ($php_dir) : $prefix/PEAR
5. Documentation base directory  : $php_dir/docs
6. Data base directory           : $php_dir/data
7. Tests base directory          : $php_dir/tests

我将“安装前缀”更改为“/usr/local”,按回车键继续,输入“Y”以安装“PEAR_Frontend_Web-beta、PEAR_Frontend_Gtk2、MDB2”。最终,所有东西都被安装好了。

接下来......

第一次尝试时,我认为php.ini文件中的“include_path”已经被注释掉了,但由于我已经更改了这一行,并且这不是我第一次尝试安装,因此我收到以下消息:

WARNING!  The include_path defined in the currently used php.ini does not
contain the PEAR PHP directory you just specified:
</usr/local/PEAR>
If the specified directory is also not in the include_path used by
your scripts, you will have problems getting any PEAR packages working.

Would you like to alter php.ini </private/etc/php.ini>? [Y/n] : 
我输入Y,然后让pear自动更新我的include路径。
php.ini </private/etc/php.ini> include_path updated.

Current include path           : .:/usr/share/pear
Configured directory           : /usr/local/PEAR
Currently used php.ini (guess) : /private/etc/php.ini

我按下回车键继续执行,然后收到以下信息:

The 'pear' command is now at your service at /usr/local/bin/pear

** The 'pear' command is not currently in your PATH, so you need to
** use '/usr/local/bin/pear' until you have added
** '/usr/local/bin' to your PATH environment variable.

Run it without parameters to see the available actions, try 'pear list'
to see what packages are installed, or 'pear help' for help.

For more information about PEAR, see:

  http://pear.php.net/faq.php
  http://pear.php.net/manual/

Thanks for using go-pear!

PHP Warning:  rmdir(/usr/local/temp): Not a directory in /Users/andrew/go-pear.php on line 1237

Warning: rmdir(/usr/local/temp): Not a directory in /Users/andrew/go-pear.php on line 1237

更新: 我想我知道为什么出现了最后两个警告。之前,我尝试通过创建指向 /tmp 的符号链接来解决临时目录问题,但如果我理解正确,PEAR 正在尝试创建自己的临时目录进行安装,然后在完成后将其删除。所以我不应该创建这个符号链接,因为在安装完成后会尝试删除临时目录。


你能描述一下你遇到的问题吗? - hhafez
3个回答

16

这里可能出了几个问题,以下只是猜测。

首先需要处理的是两个包含路径。第一个是你的PHP包含路径。PEAR库(大部分)只是PHP代码,经过特殊封装。当你安装一个PEAR模块时,你下载了所有该库所需的PHP代码,以及其他被安装的PEAR库所依赖的内容(抱歉这个句子有点拗口,但我不确定有更好的表达方式)。这个包含路径设置在你的php.ini文件中(一个用于命令行php的文件,另一个用于你的web服务器php;通常是同一个文件)。

第二个需要考虑的包含路径是UNIX / shell包含路径。这是你的计算机在你从终端输入命令时搜索命令的路径。'pear' 命令是一个命令行命令。

因此,我们需要确保:

  1. 你网站的php.ini文件中包含了PEAR目录的包含路径
  2. 你的命令行php应用程序的php.ini文件中包含了PEAR目录的包含路径
  3. 你的shell应用程序(终端,如果你使用的是 OS X,则是Bash)包含了PEAR目录的路径

因此,对于第一项,需要在你的服务器上放置一个PHP页面,其中包含该函数调用。

phpinfo();
这将列出关于您的服务器的大量信息。查找php.ini文件的位置。在文本编辑器中打开此文件,查找include_path变量,并添加到您的PEAR目录的路径(不要删除其他路径,只需添加您的路径)。
对于第二个问题,请从命令行运行以下内容。
php -r "phpinfo();" | grep '.ini'

会输出很多行内容,找到类似“Loaded Configuration File”的那一行。用文本编辑器打开此文件,查找include_path变量,并将路径添加到您的PEAR目录中(不要删除其他路径,只需添加自己的路径)。

最后,我认为您的问题是要确保pear命令行命令在您的shell/bash路径中。这就是这个错误所指的。

** The 'pear' command is not currently in your PATH, so you need to

在您的主目录下应该有一个名为“.bash_profile”的文件。它是一个隐藏文件,因此不会在Finder中显示出来。请使用文本编辑器打开它。如果因为这是一个隐藏文件而遇到麻烦,可以使用命令行pico编辑器。使用Ctrl-X从pico保存。

cd ~
pico .bash_profile

每次打开终端窗口时,您的shell都会执行此文件。我们将向您的PATH中添加/usr/local/bin,这意味着当您尝试运行命令时,计算机将在此文件夹中搜索该命令。将以下行添加到.bash_profile的底部:

export PATH=/usr/local/bin:$PATH

这基本上相当于以下PHP代码

$PATH = '/usr/local/bin:'.$PATH

您正在将 /usr/local/bin 添加为首个以冒号分隔的命令查找路径,然后将现有的其他路径添加到其中。添加完此行后,请关闭终端窗口,重新打开终端窗口,然后键入:

pear

这应该会给你一个有效的pear命令列表,但更重要的是让你知道pear已经在你的路径中。

祝你好运!


当您键入“/usr/local/bin/pear”时会发生什么? - Alana Storm
如果您能添加您的php.ini include_path语法,那就太好了。我已经让它有点工作了,但是仍然遇到一些包含文件中断的问题。 - bryan kennedy
太棒了!所有这些检查都应该在PEAR自身的安装说明中记录。 - Víctor López García
由于现在的OSX系统中不再自带pear,因此需要根据您机器上的pear路径添加路径。例如,如果您正在运行XAMPP,则可能需要运行以下命令: export PATH=/Applications/XAMPP/xamppfiles/bin:$PATH - Saurabh Hooda

2
我明白了。您必须在想要安装pear的位置运行go-pear.php,因此如果希望将pear二进制文件安装在/usr/local/bin下,则需要在/usr/local下运行它。 :-)

0

用户“Bryan Kennedy”(上文提到)想知道在“php.ini”中更改“include_path”的语法。

(我遇到了与OP类似的问题,但是通过这篇文章的帮助,我已经解决了这个问题。)

对“php.ini”的更改将如下所示...

include_path=".:/path_to_pear_dir/PEAR"

这就是当你允许“go-pear.php”进行更改时的样子...

;***** Added by go-pear
include_path=".:/usr/local/bin/PEAR"
;*****

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接