Как обновить PHP в Mac OS X?

99

Мне кажется, это ужасно тупой вопрос, но, как ни странно, эта проблема плохо документирована.

Я хотел бы обновить PHP, но есть несколько проблем:

  • Нет встроенного менеджера пакетов. MacPorts не распознает php как установленный пакет, потому что он не устанавливал сам PHP.
  • Запуск locate phpуказывает на наличие, вероятно, множества зависимостей.
  • Я не знаю, КАК был установлен php, поскольку он был включен в ОС, поэтому я не знаю, следует ли мне устанавливать из исходников или загружать двоичные файлы. Я также не знаю, как правильно удалить предыдущую версию без нарушения зависимостей.

Я бегаю на Леопарде. У меня такое чувство, что Apple не хочет, чтобы вы обновлялись. Решит ли покупка Snow Leopard и апгрейд эту проблему (и будущие подобные)?

босс
источник

Ответы:

90

Вы можете попробовать PHP-пакет Марка Лиянаге. Он поставляется в красивом пакете установщика Mac OS X, который можно дважды щелкнуть. Он держит его в актуальном состоянии.

http://php-osx.liip.ch/

Кроме того, хотя обновление до Snow Leopard не поможет вам обновлять PHP в будущем, оно, вероятно, даст вам более новую версию PHP. Я использую OS X 10.6.2 и PHP 5.3.0.

Скотт Сондерс
источник
Спасибо!! Я волновался, что этот процесс будет сложнее.
Гэвин
10
Обратите внимание, что этот пакет не отменяет исходную версию PHP на Mac, поэтому он не работает из коробки, вам нужно добавить новый каталог в PATH. Инструкции, как заставить его работать, находятся на этой странице (я был достаточно глуп, чтобы пропустить это в первый раз).
Coded Monkey
1
Вот Это Да! Потратив часы на попытки заставить процесс установки через Homebrew работать, я попробовал это. Очень быстро, очень просто, и это действительно сработало прямо из коробки! Спасибо!
Magnus W
Однозначно лучший вариант. Так безболезненно (если вы не забываете убедиться, что ваше $PATHверное, как указано @CodedMonkey)
Дарра Энрайт
2
Также стоит упомянуть, что, несмотря на установку в отдельном каталоге, установщик настраивает Apache так, чтобы все ваши веб-приложения использовали только что установленную версию php. Итак, трюк с PATH полезен, только если вы запускаете php из командной строки. Если вы хотите запускать веб-приложения, установщик позаботится обо всем.
fiacobelli
51

Я использую это: https://github.com/Homebrew/homebrew-php

Команда такая:

$ xcode-select --install

$ brew tap homebrew/dupes
$ brew tap homebrew/versions
$ brew tap homebrew/homebrew-php

$ brew options php56
$ brew install php56

Затем настройте в своем .bash_profileили.bashrc

# Homebrew PHP CLI
export PATH="$(brew --prefix homebrew/php/php56)/bin:$PATH"
Таро Алан
источник
Обратите внимание, что это не обновит встроенный PHP, а установит новый. У меня возникли серьезные проблемы с установкой двух версий, несмотря на путаницу ...
Джулиан Ф. Вайнерт,
Я попробовал это, и у меня было много проблем, например, сбой bash при запуске, мне пришлось его переустановить. Будьте осторожны при использовании этих команд и следите за тем, что Brew предлагает вам делать при обработке этих строк.
Brac
Обратите внимание, что homebrew / dupes и homebrew / versions теперь устарели.
medinasod
14

Я думаю, что один простой способ сделать это:

1 - Проверьте, где находится ваш текущий PHP:

$ which php
$ /usr/local/bin/php

Ты видишь? Обычно наши команды, которые мы запускаем, представляют собой ссылку в / usr / local / bin, поэтому ...

2 - Отключить текущую ссылку PHP

unlink /usr/local/bin/php

Если вы предпочитаете, прежде чем отключать его, проверьте путь, а затем удалите файлы php (выполните ls -al /usr/local/bin| grep php, а затем rm -rfпо желаемому пути)

3 - Установите PHP 7.1

curl -s http://php-osx.liip.ch/install.sh | bash -s 7.1

4 - Создать новую ссылку (используя установленную вами php 7.1 bin)

ln /usr/local/php5-7.1.9-20170914-100859/bin/php /usr/local/bin/php

Как я уже сказал, я думаю, это простой способ.

Пауло Виктор
источник
8

Нет встроенного менеджера пакетов. MacPorts не распознает php как установленный пакет, потому что он не устанавливал сам PHP.

Вы все еще можете установить его с помощью MacPorts. sudo port install php52(или любую другую версию) установит PHP.

Он не перезапишет версию, предоставленную Apple. Он установит его под /opt/local. Вы можете добавить /opt/localв начало $PATHфайла и использовать версию MacPorts в конфигурации Apache.

мипади
источник
как узнать название пакета версии php?
David
6

Опция 1

Как рекомендовано здесь , этот сайт предоставляет удобный обновленный лайнер.

Это не перезаписывает базовую версию PHP в вашей системе, а вместо этого чисто устанавливает ее в / usr / local / php5.

Вариант # 2

Я предпочитаю просто установить через Homebrew .

пользователь456584
источник
1
Вы имеете в виду это ? В идеале вы бы суммировали все здесь, знаете ли, для избыточности на случай разрыва связи и для простоты! Также стоит отметить, что он также не заменит яблочный php. ; P
cregox
3

Прежде чем продолжить, у меня есть последняя версия (v5.0.15) OS X Server (да, ужасно, я знаю ... однако веб-сервер, похоже, работает нормально) . Я искал много дней подряд, пытаясь обновить (или хотя бы заставить Apache указать) новую версию PHP. Мой mcryptне работал вместе с другими расширениями, и я бесчисленное количество раз устанавливал и переустанавливал PHP из http://php-osx.liip.ch/ и других руководств, пока я, наконец, не заметил небольшую часть информации, написанной в комментарии в одном из много разных .confфайлов, которые хранит OS X Server, это то, что OS X Server загружает свой собственный .confфайл перед тем, как загрузить Apache httpd.conf (расположенный по адресу /etc/apache2/httpd.conf) . Файл сервера находится:

/Library/Server/Web/Config/apache2/httpd_server_app.conf

Когда вы открываете этот файл, вы должны закомментировать эту строку следующим образом:

#LoadModule php5_module libexec/apache2/libphp5.so

Затем добавьте правильный путь (который уже должен быть установлен, если вы установили его по ссылке http://php-osx.liip.ch/ ) :

LoadModule php5_module /usr/local/php5/libphp5.so

После этой модификации мой PHP наконец загрузил правильную установку PHP. При этом, если что-то пойдет не так, это может быть связано с тем, что OS X настроена на работу с собственной установкой PHP во время установки OS X. Чтобы вернуться, просто отмените указанное выше изменение.

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

Rasclatt
источник
1
Этот комментарий сэкономил мне много времени!
GuyGizmo 02
2

Обновление до Snow Leopard не решит вашу основную проблему поддержания PHP в актуальном состоянии. Apple не всегда обновляет стороннее программное обеспечение, которое она связывает с обновлениями ОС. И надеяться на то, что Apple предоставит вам необходимое исправление ошибок / обновление безопасности, - значит напрашиваться на проблемы.

Кроме того, я бы рекомендовал установить через MacPorts (и выполнить настройку, необходимую для его использования вместо PHP от Apple), а не пытаться обновить PHP, поставляемый Apple, на месте. Все, что вы делаете, /usr/binрискует быть перезаписанным каким-нибудь будущим обновлением Apple.

Дэйв Бачер
источник
Обновление безопасности Apple 2010-002 обновляет PHP Leopard до версии 5.2.12.
Dave Bacher
PHP 5.3.1 поставляется с Snow Leopard.
JAL
2

Экономия на нажатиях клавиш, это работало на MacOS Sierra:

$ brew install homebrew/php/php71

$ /usr/local/opt/php71/bin/php -v
PHP 7.1.4 (cli) (built: Apr 14 2017 15:02:16) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
Сиз Тиммерман
источник
2

Проверьте текущую версию php в терминале с помощью следующей команды:

$ php -v

Вы видите текущую версию php в терминале, а следующая команда запускается в терминале, если вы хотите обновить свою версию php с помощью php concat с версией, которая нравится как,

$ brew install homebrew/php/php71

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

$ php -v

Теперь вы видите текущую версию php в терминале .... спасибо

yekyawaung
источник
0

Используйте эту команду:

curl -s http://php-osx.liip.ch/install.sh | bash -s 7.0
Aghaie
источник
0

Вы можете использовать curl для обновления версии php.

curl -s http://php-osx.liip.ch/install.sh | bash -s 7.3

Последний шаг:

export PATH=/usr/local/php5/bin:$PATH

Проверить обновленную версию

php -v
Шуво Хабиб
источник
-1

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

см. этот учебник, который может быть вам полезен

http://www.computersnyou.com/2012/09/how-to-upgrade-php-in-mac-osx-compiling.html

риюш
источник
21
Вам следует избегать простой ссылки на ресурс без обобщения его содержания здесь. Когда ссылка прерывается, ваш ответ теряет актуальность.
Скотт
1
И да ... ссылка не работает! :-D
emale
-2

для обновления php7 до последней стабильной версии brew upgrade php7 или для php5.X до последней стабильной версии

brew upgrade php56

используйте brew listдля проверки установленной версии

Саураб Чандра Патель
источник