Как использовать версию PHP MAMP вместо версии по умолчанию в OSX

Я хотел бы использовать версию PHP MAMP вместо установленной по умолчанию на моем Mac. Я пытался с помощью

ln -s /Applications/MAMP/bin/php5.3/bin/php php

но я получаю ошибку "Файл существует". Какой лучший способ обойти это, чтобы я мог просто ввести php вместо полного пути?

10 ответов

Решение

Я не рекомендовал бы пытаться изменить версию PHP по умолчанию, которая вызывается из командной строки. Это может привести к поломке других частей вашей системы, а также к возникновению проблем в будущем, если вы решите обновить свою ОС.

Существует альтернатива, которая может удовлетворить ваши потребности. Вы можете создать псевдоним для своей копии MAMP php 5.3. В моем случае я назвал псевдоним phpmamp. Откройте свой терминал и введите:

alias phpmamp='/Applications/MAMP/bin/php5.3/bin/php'

Теперь, введя phpmamp в командной строке, вы запустите MAMP php interperter. Проверьте это, набрав:

phpmamp --help

Скорее всего, вы захотите сохранить этот и любой другой псевдоним в ~/.bash_profile Это позволит псевдонимам сохраняться при перезагрузке. В противном случае псевдоним должен сохраняться только для конкретного сеанса терминала, в котором вы находитесь. Дополнительная информация о создании .bash_profile файл можно найти здесь:

http://www.redfinsolutions.com/redfin-blog/creating-bashprofile-your-mac

Я создал символическую ссылку в исходном месте php.

1. Найдите свою версию OSX PHP с:

which php

Результат должен быть:

/opt/local/bin/php

2. Сделайте резервную копию (переместите) ваш оригинальный бинарный файл php:

sudo mv /opt/local/bin/php /opt/local/bin/php.bak

3. Создайте символическую ссылку:

sudo ln -s /Applications/MAMP/bin/php/php5.4.4/bin/php /opt/local/bin/php

4. Запустите новую версию PHP:

php -v

PS:

Для того чтобы это работало на Эль-Капитане

  • Перезагрузите ваш Mac в RecoveryMode (удерживайте Cmd+R при загрузке)
  • Откройте терминал и введите: csrutil disable
  • перезагружать
  • или: sudo ln -s /Applications/MAMP/bin/php/php5.4.4/bin/php /opt/local/bin/php
    или же sudo ln -s /Applications/MAMP/bin/php/php5.4.4/bin/php /usr/bin/php
  • Снова перезагрузитесь в RecoveryMode и снова включите безопасность: csrutil enable

Я предпочитаю не вмешиваться в текущие файлы, поэтому я просто добавляю папку bin MAMP PHP к $PATH переменная env.

Вы можете редактировать ~/.bash_profile и добавьте следующую строку в начало

export PATH="/Applications/MAMP/bin/php/php5.6.1/bin:$PATH"

Просто измените версию PHP на текущую версию, которую вы используете.

Не забывай делать source ~/.bash_profile после редактирования файла.

2021 - Для тех, кто использует ohmyzsh, файл для редактирования:

      /Users/your_user/.zshrc

Итак, вы можете отредактировать этот файл и добавить путь:

      export PATH=/Applications/MAMP/bin/php/php8.0.0/bin:$PATH

Идеально работает с Big Sur

Я не был доволен результатами / решениями, которые нашел до сих пор в сети, потому что конфиги php.ini не загружались должным образом во всех случаях и во всех системах, особенно когда вам нужны такие модули, как ioncube и другие (это еще более запутанно на MAMP Pro). Вот почему я создал свои собственные псевдонимы версии php (с настройками), поэтому в качестве примера я пришел к следующему решению (на основе MAMP Pro, не забудьте настроить пути php.ini в соответствии с вашими потребностями):

Отредактируйте ваш.bash_profile

vim ~/.bash_profile

И добавьте следующие записи:

alias php55="/Applications/MAMP/bin/php/php5.5.26/bin/php -c '/Library/Application Support/appsolute/MAMP PRO/conf/php5.5.26.ini'"
alias php56="/Applications/MAMP/bin/php/php5.6.10/bin/php -c '/Library/Application Support/appsolute/MAMP PRO/conf/php5.6.10.ini'"
alias php56cgi="/Applications/MAMP/bin/php/php5.6.10/bin/php-cgi -c '/Library/Application Support/appsolute/MAMP PRO/conf/php5.6.10.ini'"

Повторно инициализируйте файл.bash_profile в текущем сеансе терминала (иначе вы не увидите никаких изменений, если не перезапустите терминал):

source ~/.bash_profile

Если у вас установлено несколько дополнительных модулей, вы можете протестировать их с помощью php56 -v и получить выходные данные модулей ioncube и т. Д. В противном случае проверьте это с помощью php56 -i | grep "yourModuleNameOrSomethingElse"

Теперь вы можете легко использовать в своем терминале одну из версий php, например "php56", со всеми загруженными конфигами. Так что он идеально подходит для тестирования и сборки ваших приложений на всех итерациях версий, включая правильные конфигурации php.ini через терминал.

Для обычных пользователей MAMP, конфиги должны находиться в /Applications/MAMP/conf/, я думаю. Удачного программирования.

Для Mac OS Catalina. Найдите каталог /Users/<user_name>/.zprofile

и добавить (например)

MAMP PRO PHP

экспорт PATH="/Applications / MAMP / bin / php / php7.4.2 / bin:$PATH"

после перезагрузки в терминале

какой php

новая версия php /Applications/MAMP/bin/php/php7.4.2/bin/php

Если ваш терминал использует zsh (oh-my-zosh), как показано во вложении. проверить изображение Сделайте следующее.

Mac Big Sur использует для терминала "zsh" Oh-my-zosh. Итак, я сделал следующее.

  1. открыть терминал.
  2. проверьте, есть ли у вас файл .zshrc в пути к вашему профилю (/Users / yourProfileName)
  3. если у вас нет файла .zshrc, создайте его с помощью команды (~ touch .zshrc).
  4. добавьте эти строки:export MAMP_PHP= / Applications / MAMP / bin / php / php7.4.12 / binexport PATH="$MAMP_PHP:$PATH"
  5. сохраните файл. закройте терминал и снова откройте его. Теперь запустите "which php".

дайте мне знать, если вам понадобится помощь.

Последняя версия MAMP (версия 5+) предлагает простой способ сделать версию MAMP PHP доступной для командной строки. Просто выберите "PHP" в боковом меню и установите флажок "Сделать эту версию доступной в командной строке". Очень просто!:)

Скриншот

Что ж, ошибка "файл существует", вероятно, связана с тем, что вы попытались создать символическую ссылку с именем файла, который уже был там. Я предполагаю, что вы были в каталоге, содержащем версию php, которую вы пытались заменить, или это была вторая попытка, и вы сначала не удалили существующую ссылку. Я согласен с другими в том, что касается "замены / модификации" версии php по умолчанию.

Исходя из второй части вопроса, наилучшего способа обойти необходимость ввода полного пути, ответы, предполагающие наличие псевдонима, точно соответствуют этому. Когда задействовано несколько версий, это означает, что для запуска версии, которую вы хотите запустить, нужно вызвать что-то отличное от php.

У меня есть скрипт, который позволяет мне "выбрать" версию php, с которой я хотел бы работать, и затем создает sym-ссылку на эту версию и позволяет мне просто ввести "php" в качестве команды, когда я хочу ее использовать. Я написал блог об этом здесь, где вы можете получить сценарий. Основываясь на ответе @ioCron, мне может понадобиться пересмотреть мой скрипт, чтобы учесть различные папки конфигурации, связанные с каждой версией.

Ну, ничего из этого не работало для меня с OSX10.12.5

у меня есть Mac порты php70, установленные в / opt / local / bin

какой php показал:

/usr/bin/php

Я установил псевдонимы, локальные пути и т. Д., Которые в основном работали для меня, но другие программы не работали (например, composer), поэтому для меня было решено добавить:

/opt/local/bin
/opt/local/sbin

в файл / etc / paths

тогда все заработало!

Другие вопросы по тегам