在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即可成功执行。