pecl 报错 [ Could not open input file: /usr/lib/php/peclcmd.php]

前提:

System: macOS Sierra(OSX 10.12.1)
PHP -v: mac 自带 php 5.6.25

问题

终端运行pecl报错

# run pecl
pecl
# error
Could not open input file: /usr/lib/php/peclcmd.php

报这个错的原因是pecl命令找不到peclcmd.php文件,可以看下pecl命令脚本。

查找pecl命令脚本路径

# 查看pecl命令脚本路径
which pecl
/usr/local/bin/pecl

查看pecl脚本


# 查看脚本
vim /usr/local/bin/pecl

#!/bin/sh

# first find which PHP binary to use
if test "x$PHP_PEAR_PHP_BIN" != "x"; then
  PHP="$PHP_PEAR_PHP_BIN"
else
  if test "/usr/bin/php" = '@'php_bin'@'; then
    PHP=php
  else
    PHP="/usr/bin/php"
  fi
fi

# then look for the right pear include dir
if test "x$PHP_PEAR_INSTALL_DIR" != "x"; then
  INCDIR=$PHP_PEAR_INSTALL_DIR
  INCARG="-d include_path=$PHP_PEAR_INSTALL_DIR"
else
  if test "/usr/lib/php" = '@'php_dir'@'; then
    INCDIR=`dirname $0`
    INCARG=""
  else
    INCDIR="/usr/lib/php"
    INCARG="-d include_path=/usr/lib/php"
  fi
fi

exec $PHP -C -n -q $INCARG -d date.timezone=UTC -d output_buffering=1 -d variables_order=EGPCS -d safe_mode=0 -d register_argc_argv="On" $INCDIR/peclcmd.php "$@"

在脚本最后peclcmd.php文件,脚本中使用的peclcmd.php路径是/usr/lib/php/peclcmd.php,可是这个路径并没有这个文件。可可以用 ll /usr/lib/php/peclcmd.php查看,得到
ls: /usr/lib/php/peclcmd.php: No such file or directory

解决

先查找peclcmd.php文件的路径

find / -name peclcmd.php
# 输出如下结果
find: /dev/fd/Jack: No such file or directory
find: /dev/fd/Jack: No such file or directory
/usr/share/pear/peclcmd.php

得知peclcmd.php的路径为/usr/share/pear/peclcmd.php

然后将此路径软连接到pecl命令需要的路径/usr/lib/php/peclcmd.php

ln -s /usr/share/pear/peclcmd.php /usr/lib/php/peclcmd.php
JackSun

JackSun

I'm a coder.

You may also like...