Как переопределить путь PHP для использования пути MAMP?

после завинчивания полностью моей конфигурации 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

12 ответов


тот факт, что ранее принятый ответ относится к 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 после внесения изменений убедитесь, что они принимают эффект.)

как уже упоминалось, вы, вероятно, также захотите изменить свою оболочку, чтобы использовать исполняемый файл mysql MAMP, который находится в /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 используется, и убедиться, что все copacetic, используйте .

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


в папке /Users/David для exmaple вы можете создать .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.


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

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

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

после изменения откройте новое окно терминала и запустите "какой php", который теперь должен указывать на ваш обновленный путь


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

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

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

source ~/.bash_profile

выполнить новый путь без перезапуска терминала

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

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"

ура


Если вам нужно ввести

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

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

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

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


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

sudo mv /usr/bin/php /usr/bin/~php
sudo ln -s /Application/XAMPP/xamppfiles/bin/php /usb/bin/php

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

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

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

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


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

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

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

php -v

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

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

экспорт PATH= / path/to/your/php/installation / bin:оставить/остаток/из/с/материал/нетронутый/:$PATH

  1. сохранить .bash_profile и повторно запустите свой Mac.

объяснение: Terminal / Mac пытается запустить поиск на пути его знает, в надежде найти программу, когда пользователь инициирует программа из "терминала", следовательно, трюк здесь состоит в том, чтобы заставить терминал найти php, пользователь намерен, указывая на пользовательскую версию PHP в некоторой папке bin, установленной пользователем.

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

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


Это не идеальное решение, поскольку вам нужно управлять двумя ini-файлами, однако мне удалось обойти это в windows, скопировав файл php ini в mamp из папки conf в активную версию php в папке bin.

[MAMP INSTALL]\conf\[ACTIVE PHP VERSION]\php.ini

скопировать

[MAMP INSTALL]\bin\php\[ACTIVE PHP VERSION]


чтобы дополнить текущий принятый ответ, если вы предполагаете, что MAMP использует самую последнюю версию php5 по умолчанию, вы можете добавить grep 'php5' в середине:

PHP_VERSION= `ls /Applications/MAMP/bin/php/ | sort -n | grep 'php5' | tail -1`

и вы гарантированно получите самый последний php5 независимо от версии MAMP.


каждый раз, когда вы сохраняете конфигурацию MAMP, она сохраняет текущую версию PHP на ~/.profile file и создает псевдоним для php, pear и pecl, чтобы указать на текущую настроенную версию.

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

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

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 PATH=/Applications/MAMP/bin/php/php$PHP_VERSION/bin:$PATH

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