Как переопределить путь 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
- открыть файл .bash_profile (находится в папке текущего пользователя) с помощью доступного текстового редактора.
- добавить путь как показано ниже:
экспорт PATH= / path/to/your/php/installation / bin:оставить/остаток/из/с/материал/нетронутый/:$PATH
- сохранить .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.