【问题标题】:How can I easily switch between PHP versions on Mac OSX?如何在 Mac OSX 上轻松切换 PHP 版本?
【发布时间】:2016-04-26 20:00:23
【问题描述】:

我想在 PHP 5.3 到 PHP 7.0 上测试我的应用程序。

我可以在哪里以及如何安装这些版本,以及如何通过运行一个小脚本来切换它们?

【问题讨论】:

  • 在虚拟机中开发(vagrant、docker等)。它使您可以使用/切换环境而不会弄乱您的操作系统安装
  • @JimL 这不是一个好主意,你在使用 VM 时会有很糟糕的体验。
  • @xetra-su 我不使用 Mac OS,但我认为体验与在 Linux 上的体验非常相似,我对此没有任何问题。是什么让它变得如此糟糕?

标签: php macos


【解决方案1】:

如果您同时安装了两个版本的 PHP,您可以使用 linkunlink brew 命令在版本之间切换。

例如,在 PHP 7.4 和 PHP 7.3 之间切换

brew unlink php@7.4
brew link php@7.3

PS:两个版本的 PHP 都已安装,这些命令才能正常工作。

【讨论】:

  • 嘿 Goke,这真的很有帮助。谢谢。
  • 我发现这很有帮助
  • 我已将其概括为一个 shell 脚本,请参阅 gist.github.com/infostreams/3753a31205e3b6c47039046e9fa40ba5 。这允许我在我的机器上拥有许多(许多)版本的 PHP(所有版本都在 5.6 和 8.1 之间),并且只需键入“php 5.6”或“php 8.0”即可进行更改。像一种享受一样工作。
【解决方案2】:

我找到了this very good tutorial,了解如何在 OSX 上安装和切换 php 版本。

我可以像这样切换版本

$ sphp 7.0 => PHP 7.0
$ sphp 7.3 => PHP 7.3
$ sphp 7.4 => PHP 7.4

正是我想要的!

【讨论】:

  • 教程有moved to here
  • 这真的很有帮助,谁能帮我配置mysql数据库?
  • 这很好,但看看 Goke Obasa 的回答
  • 我也支持 Goke 的回答。
【解决方案3】:

示例:让我们从 php 7.4 切换到 7.3

brew unlink php@7.4
brew install php@7.3
brew link php@7.3

如果你得到Warning: php@7.3 is keg-only and must be linked with --force 然后尝试:

brew link php@7.3 --force

【讨论】:

  • 我认为这不能正常工作。一旦我这样做了,它仍然在 phpinfo() 的 7.4 上运行
  • 您看到的可能是您的 php 的网络服务器版本,而不是命令行版本。更新您的 nginx 或 apache 以使用新版本的 php。
【解决方案4】:

使用brew

显示当前版本

$ php -v

更改为不同的版本
(例如,从 5.5.x 更改为 7.0.latest):

$ brew unlink php55
$ brew install php70

【讨论】:

  • 提示:如果 home brew 不允许您建立新链接,请使用这些标志 --force --overwrite
【解决方案5】:

如果您使用 homebrew 安装 PHP,则可以非常轻松地在版本之间切换。假设您希望 php56 指向版本 5.6.17,您只需这样做:

brew switch php56 5.6.17

【讨论】:

  • 错误:未知命令:切换
【解决方案6】:

我认为unlink & link php版本是不够的,因为我们经常使用php和apache(httpd),所以需要在切换php版本后更新httpd.conf。

我已经编写了用于在httpd.conf 中自动禁用/启用php_module 的shell 脚本,请查看第46 行到第54 行https://github.com/dangquangthai/switch-php-version-on-mac-sierra/blob/master/switch-php#L46

跟随我的脚步:

1) 通过 brew 检查安装的 php 版本,确保一切正常

> brew list | grep php
#output
php56
php56-intl
php56-mcrypt
php71
php71-intl
php71-mcrypt

2) 运行脚本

> switch-php 71 # or switch-php 56
#output
PHP version [71] found
Switching from [php56] to [php71] ... 
Unlink php56 ... [OK] and Link php71 ... [OK]
Updating Apache2.4 Configuration /usr/local/etc/httpd/httpd.conf ... [OK]
Restarting Apache2.4 ... [OK]
PHP 7.1.11 (cli) (built: Nov  3 2017 08:48:02) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

3) 最后,当您收到上述消息时,请在我的笔记本电脑中查看httpd.conf

vi /usr/local/etc/httpd/httpd.conf

你可以看到附近的 LoadModule 线

LoadModule php7_module /usr/local/Cellar/php71/7.1.11_22/libexec/apache2/libphp7.so
#LoadModule php5_module /usr/local/Cellar/php56/5.6.32_8/libexec/apache2/libphp5.so

4) 打开httpd://localhost/info.php

希望对你有帮助

【讨论】:

    【解决方案7】:
    brew link --overwrite php@7.3
    

    非常适合我:-)

    【讨论】:

    • 不应该先用brew unlink php@7.0取消链接当前版本的php吗?
    【解决方案8】:

    我喜欢switcher idea,因为我目前正在使用不同的版本,所以您需要的是

       brew install brew-php-switcher
    

    然后brew-php-switcher version

    例如brew-php-switcher 7.4

    【讨论】:

      【解决方案9】:

      如何:

      • 查找已安装的 PHP 版本
      • 从默认 PHP 包切换到版本化包
      % brew search php
      brew-php-switcher   php-cs-fixer        php@7.3             phplint             phpstan             pup
      php ✔               php-cs-fixer@2      php@7.4 ✔           phpmd               phpunit
      php-code-sniffer    php@7.2             phpbrew             phpmyadmin          pcp
      
      % brew unlink php
      % brew link php@7.4
      

      【讨论】:

        【解决方案10】:

        如果您使用的是 homebrew,则它允许安装公式的多个版本。 因此,

        1. brew unlink 用于从使用中分离公式版本。
        2. brew link 用于将公式版本附加到用法中。

        例如,如果您同时安装了 php 7.4 和 8.0,并且假设您当前使用的是 7.4,并且想要在它们之间切换,那么可以这样做:

        brew unlink php@7.4

        brew link php@8.0

        【讨论】:

          猜你喜欢
          • 2019-06-08
          • 2019-04-19
          • 1970-01-01
          • 1970-01-01
          • 2013-08-06
          • 1970-01-01
          • 1970-01-01
          • 2020-06-05
          • 1970-01-01
          相关资源
          最近更新 更多