Home >Backend Development >PHP Tutorial >Let's talk about brew link's failure to change php version

Let's talk about brew link's failure to change php version

藏色散人
藏色散人forward
2021-11-11 14:23:043941browse

This article will talk about the failure of brew link to change the php version. I hope it will be helpful to friends in need!

Problem description:

I installed three php versions through brew

php 5.6
php 7.4
php 8.0

$ php -v

PHP 8.0.3 (cli) (built: Mar  4 2021 20:45:17) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.3, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.3, Copyright (c), by Zend Technologies

Disable 8.0 and use 7.4

$ brew unlink php@8.0 && brew link php@7.4
Unlinking /usr/local/Cellar/php/8.0.3... 0 symlinks removed.
Linking /usr/local/Cellar/php@7.4/7.4.16... 264 symlinks created.
$ php -v

It’s still the same version

It’s the same when I opened a new terminal 8.0.3

PHP 8.0.3 (cli) (built: Mar  4 2021 20:45:17) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.3, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.3, Copyright (c), by Zend Technologies

The operation is quite satisfactory

Where is the setting?

Analysis and solution:

You can try to install a PHP selector

brew update
brew upgrade

Reference documentation

https://github.com/shivammathur/homebrew-php

Install the specified php brew install shivammathur/php/php@7.3

Link php version brew link --overwrite --force php@7.3

If an error occurs

Warning: Already linked: <Cellar Path>
To relink:
  brew unlink <formula> && brew link <formula>

Execute

brew unlink php@7.3
brew link --overwrite --force php@7.3

RestartService

apache brew services restart httpd
nginx brew services restart nginx

Installation Result

To enable PHP in Apache add the following to httpd.conf and restart Apache:
    LoadModule php7_module /usr/local/opt/php@7.0/lib/httpd/modules/libphp7.so
    <FilesMatch \.php$>
        SetHandler application/x-httpd-php
    </FilesMatch>
Finally, check DirectoryIndex includes index.php
    DirectoryIndex index.php index.html
The php.ini and php-fpm.ini file can be found in:
    /usr/local/etc/php/7.0/
php@7.0 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.
If you need to have php@7.0 first in your PATH run:
  echo &#39;export PATH="/usr/local/opt/php@7.0/bin:$PATH"&#39; >> ~/.zshrc
  echo &#39;export PATH="/usr/local/opt/php@7.0/sbin:$PATH"&#39; >> ~/.zshrc
For compilers to find php@7.0 you may need to set:
  export LDFLAGS="-L/usr/local/opt/php@7.0/lib"
  export CPPFLAGS="-I/usr/local/opt/php@7.0/include"
To have launchd start shivammathur/php/php@7.0 now and restart at login:
  brew services start shivammathur/php/php@7.0
Or, if you don&#39;t want/need a background service you can just run:
  php-fpm

Welcome to discuss!

Recommended learning: "PHP Video Tutorial"

The above is the detailed content of Let's talk about brew link's failure to change php version. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:segmentfault.com. If there is any infringement, please contact admin@php.cn delete