Как переопределить путь 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: Здесь какое выходное эхо $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
Ответы
Ответ 1
Каждый раз, когда вы сохраняете конфигурацию MAMP (раздел PHP), он сохраняет текущую версию PHP в файле ~/.profile
и создает псевдоним для php, pear и pecl, чтобы указать текущую настроенную версию.
Однако вам нужно обновить свой терминал (открыть другой сеанс), чтобы обновить этот файл. Вы также можете набрать 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.
Ответ 2
В домашней папке /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.
Ответ 3
Тот факт, что ранее принятый ответ относится к 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 "[email protected]"
}
mysqladmin() {
/Applications/MAMP/Library/bin/mysqladmin "[email protected]"
}
export -f mysql
export -f mysqladmin
Я использовал функции вместо псевдонимов, потому что псевдонимы не передаются дочерним процессам или, по крайней мере, в контексте сценария оболочки. Единственный недостаток, который я обнаружил, это то, which mysql
и which mysqladmin
больше не будут возвращать ничего, что является обломом. Если вы хотите проверить, какой mysql используется, и убедиться, что все в двух вариантах, используйте вместо этого mysql --version
.
Примечание: @julianromera указывает, что zsh не поддерживает экспорт функций, поэтому в этом случае лучше всего использовать псевдоним, например, alias mysql='/Applications/MAMP/Library/bin/mysql'
. Просто имейте в виду, что ваши псевдонимы могут быть недоступны из подоболочек (например, при выполнении сценария оболочки).
Ответ 4
Я обнаружил, что на Mavericks 10.8 не было .bash_profile, и мои пути были расположены в /etc/paths
Чтобы новый путь (будь то маска или brew установка php) вступил в силу, он должен быть выше значения по умолчанию /usr/bin/php в этом файле путей. например.
/Applications/MAMP/bin/php/php5.3.6/bin
/usr/bin
Внесите изменения, откройте новое окно терминала и запустите "какой php", который должен теперь указывать на ваш обновленный путь
Ответ 5
вы все равно можете запустить двоичный файл mysql, который не будет найден таким образом
open terminal, type
touch ~/.bash_profile; open ~/.bash_profile
отредактируйте, как указано ниже, сохраните, запустите и перезапустите терминал или поочередно
source ~/.bash_profile
выполнить новый PATH без перезапуска терминала
и в порядке вышеприведенного сообщения 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"
веселит
Ответ 6
Если вам нужно набрать
/Applications/MAMP/bin/php5.3/bin/php
в командной строке, затем добавьте
/Applications/MAMP/bin/php5.3/bin
для вашего PATH, чтобы иметь возможность вызывать php из любого места.
Ответ 7
Это работало для меня:
sudo mv /usr/bin/php /usr/bin/~php
sudo ln -s /Application/XAMPP/xamppfiles/bin/php /usb/bin/php
Ответ 8
Иногда легче сделать это:
sudo ln -s /Applications/MAMP/bin/php/php5.6.10/bin/php /usr/bin/php;
Версия Mamps PHP во время публикации была php5.6.10
, поэтому убедитесь, что вы изменили ее на версию, которую вы используете.
Вы будете в один миг.
Ответ 9
Для пользователей XAMPP вы можете использовать это:
# Use XAMPP version of PHP
export PATH=/Applications/XAMPP/xamppfiles/bin:$PATH
source ~/.bash_profile
И вы можете проверить это с помощью:
php -v
Ответ 10
Возможно, слишком поздно комментировать, но вот что я сделал, когда у меня возникли проблемы с настройкой php PATH для моей установки XAMPP на Mac OSX
- Откройте файл .bash_profile (найденный в текущей папке пользователя) с помощью доступного текстового редактора.
- Добавьте путь, как показано ниже:
export PATH =/path/to/your/php/installation/bin: оставить/отдохнуть/из//материал/нетронутый/: $PATH
- Сохраните свой .bash_profile и заново запустите свой Mac.
Объяснение: Терминал /Mac пытается выполнить поиск в PATHS, о котором он знает, в надежде найти программу, когда пользователь запускает программу из "Терминала", следовательно, трюк здесь заключается в том, чтобы заставить терминал найти php, пользователь намеревается, указав его на пользовательскую версию PHP в некоторой папке bin, установленную пользователем.
Работал для меня:)
P.S Я все еще потерял овец вокруг моего нового Компьютера;)
Ответ 11
Это не идеальное решение, так как вам нужно управлять двумя ini файлами, однако мне удалось обойти это на окнах, скопировав файл php ini в mamp из папки conf на ваш активный php версии в папке bin.
[MAMP INSTALL]\conf\[ACTIVE PHP VERSION]\php.ini
скопировать в
[MAMP INSTALL]\bin\php\[ACTIVE PHP VERSION]
Ответ 12
Чтобы комплимент текущего принятого ответа, если вы предполагаете, что MAMP использует самую последнюю версию php5 по умолчанию, вы можете добавить grep 'php5' посередине:
PHP_VERSION= `ls /Applications/MAMP/bin/php/ | sort -n | grep 'php5' | tail -1`
и вам гарантированно получить последний php5, независимо от версии MAMP.
Ответ 13
Последняя версия MAMP (версия 5+) предлагает простой способ сделать версию MAMP PHP доступной для командной строки. Просто выберите "PHP" в боковом меню и установите флажок "Сделать эту версию доступной в командной строке". Очень просто! Смотрите прикрепленный скриншот :)
![screenshot]()