brew link更换php版本失败问题

在MacOS下安装并使用PHP可能会遇到需要更换PHP版本的情况。此时可以使用brew link命令来更换版本。但是,有时候该命令可能会出现失败的情况。本文将讨论这种问题的原因和解决方法。

1. brew link的使用

brew link命令可以将使用brew安装的软件包链接到/usr/local/bin目录中,使其可被系统访问到。使用该命令可更换PHP版本。

以将版本为php 7.1.6链接到/usr/local/bin中为例,首先安装所需的PHP版本:

brew install php@7.1.6

此时,我们还需要运行以下命令将PHP链接到/usr/local/bin中:

brew link php@7.1.6 --force

如上述命令所示,我们指定要链接的软件包为php@7.1.6,并使用--force选项强制执行操作。此命令执行成功后,我们可以通过运行以下命令来查看已安装的PHP版本:

php -v

2. brew link失败的原因

有时候,当我们尝试执行brew link命令时,可能会出现以下错误信息:

Linking /usr/local/Cellar/php@7.1/7.1.6... Error: Could not symlink sbin/php-fpm

/usr/local/sbin is not writable.

该错误的原因是/usr/local/sbin目录不可写。

3. 解决方法

要解决该问题,我们需要更改/usr/local/sbin目录的权限。具体操作如下:

1. 使用以下命令查看当前目录的owner以及permissions:

ls -ld /usr/local/sbin/

该命令将会输出以下信息:

drwxr-xr-x 3 root wheel 96 Jun 20 2018 /usr/local/sbin/

该输出表明该目录当前的owner为root,group为wheel,权限为rwxr-xr-x,即该目录属于root用户,wheel组可以读写,其他用户可以读。

2. 更改目录的owner为当前用户:

sudo chown -R $(whoami) /usr/local/sbin/

该命令将会将该目录的owner更改为当前用户。

3. 修改目录的权限为777:

sudo chmod -R 777 /usr/local/sbin/

该命令将会将该目录的权限更改为rwxrwxrwx,即所有用户都可以读写该目录。

4. 执行brew link命令:

brew link php@7.1.6 --force

此时,我们再次尝试执行brew link命令即可成功执行。

总结

在使用MacOS下使用brew安装和更换PHP版本时,如果出现brew link命令失败的情况,一种可能的原因是/usr/local/sbin目录不可写。为了搞定这个问题,我们需要将该目录的owner更改为当前用户,并将其权限更改为777。按照上述步骤操作后,再次尝试使用brew link即可成功执行。

后端开发标签