【问题标题】:sudo: pear: command not foundsudo:梨:找不到命令
【发布时间】:2013-09-02 00:52:59
【问题描述】:

我有雪豹,它显然预装了带有梨的 php。我启用了 php,但找不到 PEAR 的任何迹象。所以我已经安装了它,现在 phpinfo() 显示它的安装

include_path .:/usr/lib/php/share/pear

当我输入任何 pear 命令时

$ sudo pear

我得到一个错误:sudo: pear: command not found

我错过了什么?

【问题讨论】:

标签: php macos pear


【解决方案1】:

给这只猫剥皮的方法有很多,但如果你安装了 locate (你可能会这样做),我会输入这个:

$ locate bin/pear

这应该列出一件或多件事情,其中​​一件看起来像是通往梨的道路。假设它说类似/usr/local/bin/pear。那么你的下一个命令是:

$ sudo /usr/local/bin/pear

我想到了两个警告:

  1. locate 可能会列出多个可执行的 pear 文件。如果是这种情况,根据您使用的 PHP 选择正确的 PHP 可能很重要。
  2. 您可能希望将pear 所在的目录添加到您的PATH 环境变量中。

【讨论】:

  • locate 没有安装...我知道路径是 /usr/lib/php/share/pear 但奇怪的是即使我去那个目录我仍然无法运行梨
  • 这不是 pear 命令行二进制文件的安装目录。当您在终端提示符中键入 locate bin/pear 时会发生什么?我见过的每一个 Mac OS X 安装都默认安装了 Locate,所以看到你说它没有安装我很惊讶。如果确实没有安装,请尝试whereis pear
  • 如果一切都失败了,你可以试试sudo /usr/local/bin/pearsudo /usr/local/php5/bin/pear。我已经看到梨在 Mac OS X 上的两个位置都出现了。如果您真的不知道它在哪里,但确定它就在某个地方,并且您可以非常耐心地尝试一些东西彻底但效率低下,例如:sudo find / -name pear,但这可能需要很长时间才能运行。我准备至少给它几个小时。我怀疑,那只是在真正绝望的时候。 (在生产服务器上运行可能是个坏主意。)
  • so locate 说:定位数据库(/var/db/locate.database)不存在。
  • 酷!因此,现在您可以在想要使用它时始终输入sudo /usr/lib/php/bin/pear,或者您可以按照@hayashi-kei 的说明进行操作,但使用该行添加:export PATH=/usr/lib/php/bin:$PATH
【解决方案2】:

您需要更新系统 $PATH 变量才能使 pear 命令正常工作。使用以下内容编辑 bash 配置文件(如果您有 textmate):

mate ~/.bash_profile

并在这一行中添加:

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

然后重新加载您的终端,它现在应该可以工作了

已编辑: 感谢您强调我的错误小跑。我已经更改了路径以找到垃圾箱的大致位置(取决于选择安装它的位置)

【讨论】:

  • 所以我确实有 textmate 但当然我找不到 mate 命令。我添加了 .bash_profile 的路径,但它是一个新文件,所以可能是我在错误的地方做的,因为它仍然无法正常工作
  • 我相当肯定 /usr/lib/php/share/pear 不是实际命令行二进制文件的路径,所以我认为这不会起作用。 include_path 是诸如 include() 和 require() 之类的 PHP 文件的位置。发现命令行二进制文件存储在同一目录中,这将是非常令人惊讶和彻底的面子。
【解决方案3】:

如果你已经在PHP(例如MAMP)上直接安装了pear,你应该将pear复制到/usr/local/bin

cp /php5.3.2/pear /usr/local/bin/pear

然后导出 var PATH,并在 shell 中使用“pear”进行测试。

【讨论】:

    【解决方案4】:

    我遇到了类似的问题,需要在 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
    

    如果$PATH 被我们覆盖visudo 并编辑/etc/sudoers

    Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-06
      • 2012-03-30
      • 2021-09-05
      • 2014-11-25
      • 2018-09-15
      • 2017-12-19
      • 1970-01-01
      • 2019-04-05
      相关资源
      最近更新 更多