Обновление php с помощью homebrew привело к осложнениям

#php #laravel #terminal #homebrew #mamp

#php #laravel #терминал #homebrew #mamp

Вопрос:

Моя версия php была 7.1.33, но для установки конкретного проекта Laravel мне нужна была как минимум версия 7.2. Я использую Mac с установленной High Sierra (10.13). Итак, я установил homebrew, а затем это:

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 где находится загруженный файл конфигурации.

В браузере phpinfo из Mamp вместо этого выдает мне эти пути:

php.ini: /Applications/MAMP/bin/php/php7.2.8/conf
загруженный конфигурационный файл: /Applications/MAMP/bin/php/php7.2.8/conf/php.ini

При попытке «composer install» в указанном проекте я получаю сообщение об ошибке, что я не могу установить некоторые расширения. Эти расширения перечислены в php.ini Mamp, но не в /usr /local /etc /php / 7.2 / php.ini, который дал мне терминал.

Я в замешательстве, что делать для решения этой проблемы, я не смог правильно установить php 7.2?
Есть ли у кого-нибудь идеи, что именно пошло не так или как я могу использовать правильный php.ini (файл Mamp, где перечислены расширения) в терминале при установке composer проекта?

Ответ №1:

Если вы просто хотите проигнорировать ошибку composer, добавьте конфигурацию платформы в свой composer.json.

Например:

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

Комментарии:

1. У меня есть все расширения в «require»-части. В чем разница, если поместить это в конфигурацию платформы?

2. конфигурация платформы позволяет вам эмулировать нужную платформу, чтобы вы могли просто устанавливать пакеты, соответствующие этим требованиям платформы

Ответ №2:

Дело в том, что MAMP будет использовать свою собственную версию PHP и конфигурационные файлы и будет игнорировать установленные brew. Ваш терминал, с другой стороны, сделает обратное.

Итак, вам нужно сообщить вашей системе использовать MAMP php, добавив его папку bin в path:

 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 из своего path, проверьте свой ~/.bash_profile файл


Если вы хотите, чтобы системный php и MAMP php были разделены, вы могли бы использовать другую команду для mamp PHP:

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

а затем вызовите composer, используя его:

 phpmamp composer install
  

Комментарии:

1. Как мне удалить его со своего пути? Я довольно новичок в консоли / терминале

2. Вам нужно вручную отредактировать ваш ~/.bash_profile файл, ближе к концу вы найдете строку, содержащую » export PATH="/usr/local/opt/php@7.2/bin:$PATH «. Удалите его и сохраните файл. Затем закройте и снова откройте свой терминал

3. Спасибо за вашу помощь, я попробую это 🙂

4. К сожалению, второй вариант не сработал. «composer» рассматривается как входной файл, и я получаю это: «Не удалось открыть входной файл».

Ответ №3:

Я просто вручную установил необходимые мне расширения, обновление php работало нормально.