10

我最终尝试安装 PEAR,以便可以轻松安装 PHPUnit。我想建立一个 Mac、Apache、MySQL、PHP、PHPUnit 开发环境,这样我就可以在本地进行测试。我已经有 Apache、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

我改成Installation prefix/usr/local按回车继续,输入Y也安装PEAR_Frontend_Web-beta, PEAR_Frontend_Gtk2, MDB2。最终,一切都安装好了。

下一个...

在第一次尝试时,我认为include_pathphp.ini 文件被注释掉了,但由于我已经更改了这一行,而且这不是我第一次尝试安装,我收到以下消息:

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 自动更新我的包含路径:

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

我按 Enter 继续,并收到以下消息:

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 正在尝试创建自己的临时目录以进行安装,然后它将在完成后将其删除。所以我不应该创建这个符号链接,因为它会在安装完成后尝试删除临时目录。

4

3 回答 3

16

这里有几件事可能会出错,这些只是猜测。

首先,您需要担心两个包含路径。第一个是您的 PHP 包含路径。PEAR 库(大部分)只是 PHP 代码,特别打包。当您安装 PEAR 模块时,您正在下载该库所需的所有 PHP 代码,以及您正在安装的库所依赖的任何其他 PEAR 库(对不起那句话,但我不确定是否有更好的说法那)。此包含路径在您的 php.ini 文件中设置(一个文件用于您的命令行 php,另一个用于 yoru Web 服务器 php;通常是同一个文件)。

您需要担心的第二个包含路径是您的 UNIX/shell 包含路径。当您从终端输入命令时,这是您的计算机将在其中搜索命令的路径。'pear' 命令是一个命令行命令。

所以,我们需要确保

  1. 您网站的 php.ini 文件在其包含路径中包含 PEAR 目录
  2. 命令行 php 应用程序的 php.ini 文件在其包含路径中包含 PEAR 目录
  3. 您的 shell 应用程序(终端,可能是您在 OS X 上的 BASH)在其包含路径中有 PEAR 目录

因此,对于数字 1,在您的服务器上放置一个包含函数调用的 PHP 页面

phpinfo();

这将列出有关您的服务器的一堆信息。查找 php.ini 的位置。在文本编辑器中打开此文件,查找 include_path 变量,并将路径添加到您的 PEAR 目录(不要删除其他路径,只需添加您的路径)。

对于数字 2,从命令行运行以下命令

php -r "phpinfo();" | grep '.ini'

会打印出一堆行,寻找类似“加载的配置文件”之类的行。在文本编辑器中打开此文件,查找 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 都会执行此文件。我们要将 /usr/local/bin 添加到您的 PATH 中,这意味着当您尝试运行命令时,您的计算机将在此文件夹中搜索该命令。将以下行添加到 .bash_profile 的底部

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

这或多或少等同于以下 PHP 代码

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

您将添加 /usr/local/bin 作为第一个以冒号分隔的位置来查找命令,然后将其余现有路径添加到它。添加该行后,关闭终端,重新打开它,然后键入

pear

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

祝你好运!

于 2009-03-10T06:41:19.257 回答
2

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

:-)

于 2009-05-01T07:47:28.693 回答
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"
;*****
于 2009-11-04T23:29:01.697 回答