我有一台安装了雪豹系统的电脑,里面似乎已经预装了带有PEAR的PHP。我启用了PHP,但是找不到PEAR的任何迹象。因此,我安装了它,现在phpinfo()显示它已经被安装。
include_path .:/usr/lib/php/share/pear
当我输入任何pear命令时,仍然出现以下错误:
$ sudo pear
我遇到了一个错误:sudo: pear: 命令未找到。
我缺少了什么?
我有一台安装了雪豹系统的电脑,里面似乎已经预装了带有PEAR的PHP。我启用了PHP,但是找不到PEAR的任何迹象。因此,我安装了它,现在phpinfo()显示它已经被安装。
include_path .:/usr/lib/php/share/pear
当我输入任何pear命令时,仍然出现以下错误:
$ sudo pear
$ locate bin/pear
这里应该列出一个或多个内容,其中一个看起来像pear的路径。假设它说的是 /usr/local/bin/pear
。那么你下一条命令是:
$ sudo /usr/local/bin/pear
有两个需要注意的地方:
sudo /usr/local/bin/pear
和 sudo /usr/local/php5/bin/pear
。我曾经在 Mac OS X 上看到 pear 出现在这两个位置中的任意一个。如果您真的不知道它在哪里,但确定它在某个地方,而且您有足够的耐心,可以尝试像这样彻底但效率低下的方法:sudo find / -name pear
,但是这可能需要很长时间才能运行。我建议至少准备花费数小时。我认为这只适用于非常绝望的情况。(在生产服务器上运行可能是个坏主意。) - Trottsudo /usr/lib/php/bin/pear
,或者你可以按照 @hayashi-kei 的说明,但使用以下行添加:export PATH=/usr/lib/php/bin:$PATH
。 - Trott为了使pear命令正常工作,您需要更新系统的$PATH变量。使用以下命令编辑bash profile文件(如果您有textmate):
mate ~/.bash_profile
并且添加这一行:
export PATH=/usr/local/pear/bin:$PATH
如果您直接在 PHP
上安装了 pear(例如 MAMP
),则应将 pear
复制到 /usr/local/bin
:
cp /php5.3.2/pear /usr/local/bin/pear
PATH
,并在shell中测试"pear
"。我曾遇到类似的问题,需要在sudoers中更新secure_path,因为它会覆盖用户的$PATH。
检查sudo中的secure_path
[root@host ~]# sudo -V | grep 'Value to override'
Value to override user's $PATH with: /sbin:/bin:/usr/sbin:/usr/bin
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin