【问题标题】:Updating php with homebrew led to complications用自制软件更新 php 会导致并发症
【发布时间】:2020-12-13 00:01:40
【问题描述】:

我的 php 版本是 7.1.33,但为了安装特定的 Laravel 项目,我至少需要 7.2 版本。我正在使用安装了 High Sierra (10.13) 的 Mac。 所以我安装了自制软件,然后:

brew install php@7.2
echo 'export PATH="/usr/local/opt/php@7.2/bin:$PATH"' >> ~/.bash_profile
brew link php@7.2

根据php -v(在laravel项目的目录中)我的版本是7.2.33,MAMP使用的是7.2.8,所以我认为这很好。

which php 显示我:/usr/local/bin/php

php --ini 给了我/usr/local/etc/php/7.2 我的php.ini 所在的位置和/usr/local/etc/php/7.2/php.ini 加载的配置文件所在的位置。

在浏览器中,Mamp 的 phpinfo 给了我这些路径:

php.ini: /Applications/MAMP/bin/php/php7.2.8/conf
加载的配置文件:/Applications/MAMP/bin/php/php7.2.8/conf/php.ini

在所述项目中尝试“composer install”时,出现无法安装某些扩展的错误。这个扩展列在 Mamp 的 php.ini 中,但不在终端给我的 /usr/local/etc/php/7.2/php.ini 中。

我很困惑如何解决这个问题,我是否未能正确安装 php 7.2?
有谁知道到底出了什么问题,或者在安装项目的作曲家时如何在终端中使用正确的 php.ini(Mamp 的,其中列出了扩展名)?

【问题讨论】:

    标签: php laravel terminal homebrew mamp


    【解决方案1】:

    我只是手动安装了我需要的扩展,更新 php 工作正常。

    【讨论】:

      【解决方案2】:

      事实上,MAMP 将使用自己的 PHP 版本和配置文件,而忽略 brew 安装的那些。另一方面,您的终端会做相反的事情。

      所以你需要通过将 bin 文件夹添加到路径来告诉你的系统使用 MAMP php:

      brew unlink php@7.2
      export PATH="/Applications/MAMP/bin/php/php7.2.8/bin:$PATH" >> ~/.bash_profile
      

      注意:您应该从路径中删除 /usr/local/opt/php@7.2/bin,检查您的 ~/.bash_profile 文件


      如果你想保持系统 php 和 MAMP php 分开,你可以为 mamp PHP 别名一个不同的命令:

      alias phpmamp="/Applications/MAMP/bin/php/php7.2.8/bin/php"
      

      然后使用它调用作曲家:

      phpmamp composer install
      

      【讨论】:

      • 如何从我的路径中删除它?我对控制台/终端很陌生
      • 您需要手动编辑您的~/.bash_profile 文件,您会发现最后一行包含“export PATH="/usr/local/opt/php@7.2/bin:$PATH”。删除它并保存文件。然后关闭并再次打开您的终端
      • 感谢您的帮助,我会尝试的:)
      • 遗憾的是,第二个选项不起作用。 “作曲家”被视为输入文件,我得到这个:“无法打开输入文件”
      【解决方案3】:

      如果你只想忽略作曲家错误;将平台配置添加到您的 composer.json。

      例如:

      {
          "config": {
              "platform": {
                  "ext-mailparse": "1.0",
                  "ext-intl": "1",
                  "lib-icu": "4.2.1",
                  "php": "7.4.8",
                  "ext-gettext": "1"
              }
          },
          "require": {
          ...
          }
      }
      

      【讨论】:

      • 我在“require”部分有所有的扩展。放在配置平台有什么区别?
      • 平台配置让你模拟你想要的平台,这样你就可以安装具有这些平台要求的包
      猜你喜欢
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 2021-01-08
      • 2018-09-12
      相关资源
      最近更新 更多