Как переопределить путь 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 51

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 и мой МАМП использует 5.3.6
Вы также можете проверить с помощью which php который выведет путь к вашему текущему исполняемому файлу php.

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

чтобы новый путь (будь то MAMP или brew install of 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 PATH для моей установки XAMPP на Mac OSX

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

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

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

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

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

если вы хотите извлечь эту curerent версию в переменной 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 PATH=/Applications/MAMP/bin/php/php$PHP_VERSION/bin:$PATH

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