Как переопределить путь PHP, чтобы использовать путь MAMP? - PullRequest
52 голосов
/ 10 ноября 2010

После того, как я полностью испортил мою конфигурацию PHP на MAC, пытаясь заставить работать модуль SOAP (-bash: / usr / bin / php: Нет такого файла или каталога ....) Теперь я должен использовать MAMP, но каждый раз я должен набирать путь

Applications/MAMP/bin/php5.3/bin/php to do command line.

Как просто ввести php вместо всего пути на MAC? Я дважды проверил, и у меня нет файла с именем .profile или bash_profile

Спасибо

PS: вот что выводит echo $ PATH:

echo $PATH
/Applications/MAMP/Library/bin/:/Applications/MAMP/bin/php5/bin/:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin

Ответы [ 13 ]

128 голосов
/ 18 мая 2012

В вашей домашней папке /Users/David, например, вы можете создать .bash_profile.Здесь вы можете экспортировать переменные и затем добавить их в свой путь.

Откройте файл, чтобы отредактировать его в вашем любимом редакторе, я использую vim.

Затем вы можете добавить свой путь

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

Вы хотите, чтобы ваш бит опережал $PATH, поскольку он уже включает /usr/bin, в котором живет системный PHP.Таким образом, система всегда сначала найдет вашу версию MAMP.

Сохраните этот файл, а затем перезагрузите терминал, и вы увидите, что вы должны получить версию MAMP.

Для проверки я использую php -v поскольку OSX Lion использует 5.3.10, а мой MAMP использует 5.3.6
Вы также можете протестировать, используя which php, который выведет путь к вашему текущему исполняемому файлу php.

104 голосов
/ 01 мая 2015

Тот факт, что ранее принятый ответ относится к php 5.3.6, в то время как текущая версия MAMP поставляется с 7.2.1 по умолчанию (по состоянию на начало 2018 года), указывает на то, что это не очень устойчивое решение. Вы можете автоматически обновить путь, добавив дополнительную строку в .bash_profile, чтобы получить последнюю версию PHP из /Applications/MAMP/bin/php/ и экспортировать ее по своему пути. Вот как я это делаю:

# Use MAMP version of PHP
PHP_VERSION=`command ls /Applications/MAMP/bin/php/ | sort -n | tail -1`
export PATH=/Applications/MAMP/bin/php/${PHP_VERSION}/bin:$PATH

(используйте source ~/.bash_profile после внесения изменений, чтобы убедиться, что они вступают в силу.)

Как уже упоминалось, вы, вероятно, также захотите изменить свою оболочку для использования исполняемого файла MAMP mysql, который находится в /Applications/MAMP/Library/bin. Однако я не рекомендую экспортировать эту папку, потому что там есть куча других исполняемых файлов, таких как libtool, которым вы, вероятно, не хотите отдавать приоритет над версиями, установленными в вашей системе. Эта проблема помешала мне недавно установить пакет узла (libxmljs), как описано здесь .

Моим решением было определить и экспортировать mysql и mysqladmin в виде функций:

# Export MAMP MySQL executables as functions
# Makes them usable from within shell scripts (unlike an alias)
mysql() {
    /Applications/MAMP/Library/bin/mysql "$@"
}
mysqladmin() {
    /Applications/MAMP/Library/bin/mysqladmin "$@"
}
export -f mysql
export -f mysqladmin

Я использовал функции вместо псевдонимов, потому что псевдонимы не передаются дочерним процессам или, по крайней мере, в контексте сценария оболочки. Единственный недостаток, который я обнаружил, заключается в том, что выполнение which mysql и which mysqladmin больше не даст ничего, что является обломом. Если вы хотите проверить, какой mysql используется, и убедиться, что все работает по-другому, используйте mysql --version.

Примечание: @julianromera указывает, что zsh не поддерживает экспортные функции, поэтому в этом случае лучше использовать псевдоним, например alias mysql='/Applications/MAMP/Library/bin/mysql'. Просто помните, что ваши псевдонимы могут быть недоступны из подоболочек (например, при выполнении сценария оболочки).

12 голосов
/ 11 июня 2014

Я обнаружил, что на Mavericks 10.8 не было .bash_profile и мои пути были расположены в / etc / paths

Чтобы новый путь (будь то установка mamp или brew для php) вступил в силу, он должен быть выше / usr / bin / php по умолчанию в этом файле путей. например.

/Applications/MAMP/bin/php/php5.3.6/bin
/usr/bin 

ПОСЛЕ изменения, откройте новое окно терминала и запустите 'what php', который теперь должен указывать на ваш обновленный путь

8 голосов
/ 24 октября 2014

вы все равно можете столкнуться с двоичным файлом mysql, не найденным таким образом.

open terminal, type
touch ~/.bash_profile; open ~/.bash_profile

отредактируйте, как указано ниже, сохраните, полностью и перезапустите терминал или поочередно

source ~/.bash_profile

, чтобы выполнить новыйПУТЬ без перезапуска терминала

и в порядке, описанном выше в посте DavidYell, также добавьте следующее.Вы можете складывать различные переменные, экспортируя их, а затем экспортировать один PATH, который я продемонстрировал ниже

export MAMP_PHP=/Applications/MAMP/bin/php/php5.6.2/bin
export MAMP_BINS=/Applications/MAMP/Library/bin
export USERBINS=~/bins
export PATH="$USERBINS:$MAMP_PHP:$MAMP_BINS:$PATH"

cheers

3 голосов
/ 03 октября 2018

Каждый раз, когда вы сохраняете конфигурацию MAMP (раздел PHP), он сохраняет текущую версию PHP в файле ~/.profile и создает псевдоним для php, pear и pecl, чтобы указать текущую настроенную версию. (Примечание: вам нужно проверить опцию «Сделать эту версию доступной в командной строке» в MAMP)

Однако вам нужно обновить свой терминал (открыть другой сеанс), чтобы обновить этот файл. Вы также можете набрать source ~/.profile, чтобы обновить псевдонимы вручную.

Если вы хотите извлечь эту текущую версию в переменную PHP_VERSION - как описано выше - для дальнейшего использования, вы можете сделать:

export PHP_VERSION=`grep "alias php" ~/.profile | cut -d"/" -f6 | cut -c4-`

И тогда у вас будет $ PHP_VERSION, доступный с текущей версией MAMP.

Наконец, если вы хотите запустить свой php, используя текущую настроенную версию на mamp , вам просто нужно добавить к ~/.bash_profile следующее:

export PHP_VERSION=`grep "alias php" ~/.profile | cut -d"/" -f6 | cut -c4-`
export PHPRC="/Library/Application Support/appsolute/MAMP PRO/conf/" #point to your php.ini folder to use the same php settings
export PATH=/Applications/MAMP/bin/php/php$PHP_VERSION/bin:$PATH

Теперь даже сценарий, использующий /usr/bin/env php, будет читать правильную версию из конфигурации Mamp.

3 голосов
/ 10 ноября 2010

Если вам нужно набрать

/Applications/MAMP/bin/php5.3/bin/php

в командной строке, затем добавьте

/Applications/MAMP/bin/php5.3/bin

на ваш PATH, чтобы иметь возможность звонить php из любой точки.

2 голосов
/ 27 августа 2016

Для пользователей XAMPP вы можете использовать это:

# Use XAMPP version of PHP
export PATH=/Applications/XAMPP/xamppfiles/bin:$PATH
source ~/.bash_profile

И вы можете проверить это с помощью:

php -v
2 голосов
/ 31 марта 2015

Этот работал для меня:

sudo mv /usr/bin/php /usr/bin/~php
sudo ln -s /Application/XAMPP/xamppfiles/bin/php /usb/bin/php
1 голос
/ 27 ноября 2016

Возможно, слишком поздно комментировать, но вот что я сделал, когда столкнулся с проблемами с настройкой php PATH для моей установки XAMPP на Mac OSX

  1. Откройте файл .bash_profile (находится в текущей папке пользователя)) с помощью доступного текстового редактора.
  2. Добавьте путь , как показано ниже:

export PATH = / path / to / your / php / Installation/ бен отпуск / отдых / из / / вещей / нетронутый / : $ PATH

Сохраните ваш .bash_profile и перезапустите ваш Mac.

Объяснение: Terminal / Mac пытается запустить поиск по PATHS , о которых он знает, в надежде напри нахождении программы, когда пользователь запускает программу из «Терминала», следовательно, хитрость заключается в том, чтобы заставить терминал находить php, который намеревается сделать пользователь, указав ему на какую-то версию PHP пользователяПапка bin, установленная пользователем.

У меня сработало:)

PS Я все еще потерянная овца вокруг моего нового компьютера;)

1 голос
/ 09 июля 2015

Иногда это проще сделать:

sudo ln -s /Applications/MAMP/bin/php/php5.6.10/bin/php /usr/bin/php;

Mamps версия PHP на момент публикации была php5.6.10, поэтому убедитесь, что вы изменили ее на версию, которую выВы используете.

Вы будете в один миг.

...