Установка нескольких версий PHP в Mac OS Catalina 10.5.x


Предварительные условие для инструкции:
  1. Установка HomeBrew в MacOS 10.15 Catalina
  2. Установка и настройка Apache в MacOS 10.15 Catalina

Привет,  в этой статье я опишу как установить PHP несколько версий PHP в Mac OS Catalina и связать их в уже установленным Apache2.

Поехали.

Вплоть до конца марта 2018 года все вариации, связанные с PHP, подхватывались Homebrew/php тапой, но она устарела, и теперь мы можем использовать только то, что доступно в пакете Homebrew/core.

В этом пакете у нас доступны только официально поддерживаемые версии PHP такие как PHP 7.2, PHP 7.3, PHP 7.4.  А что же с 5,6 7,0 и 7,1 спросите вы?  Они объявлены устаревшими, так как их жизненный цикл (lifecycle) истек. Конечно у большинства разработчиков могут быть довольно весомые аргументы в пользу этих версий.

Добавляем deprecated tap для установки устаревших версий PHP

brew tap exolnet/homebrew-deprecated

Установка нескольких версий PHP

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

brew install --build-from-source ph[email protected]
brew install --build-from-source [email protected]
brew install --build-from-source [email protected]
brew install [email protected]
brew install [email protected]
brew install [email protected]

Файлы конфигураций

по следующим маршрутам можно найти и отредактировать php.ini для каждой версии отдельно

/usr/local/etc/php/5.6/php.ini
/usr/local/etc/php/7.0/php.ini
/usr/local/etc/php/7.1/php.ini
/usr/local/etc/php/7.2/php.ini
/usr/local/etc/php/7.3/php.ini
/usr/local/etc/php/7.4/php.ini

Переключение между версиями

brew unlink [email protected] && brew link --force --overwrite [email protected]

где для unlink указывается версия PHP которую вы хотите отключить у себя, а для link версия которую требуется подключить

Добавляем PHP в конфигурацию Apache2

Открываем в любом текстовом редакторе файл /usr/local/etc/httpd/httpd.conf

Раскоментируем следующие строки:

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

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

LoadModule php5_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp5.so
#LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so
#LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so
#LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so
#LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so
#LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so

Нам потребуется строка подключения модуля каждой версии PHP которые мы установили. В дальнейшем после переключения версии PHP командой которая описана выше, нам нужно будет зайти в файл конфигурации Apache и оставить раскоментированную только ту строку которая соответствует версии PHP в которую мы только что переключились

Далее находим в файле конфигурации Apache следующие строки

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

Заменяем их на

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

<FilesMatch .php$>
    SetHandler application/x-httpd-php
</FilesMatch>

Таким образом apache начнет хэндлить наши php файлы и отправлять их интерпретатору.

Перезапуск Apache 2

После всех манипуляций выше следовало бы перезапустить процесс apache чтобы сделанные нами изменения вступили в силу. Перезапускаем командами

sudo apachectl -k stop
sudo apachectl start

или

sudo apachectl -k restart

 Проверяем установку PHP

Для того чтобы проверить что все работает корректно, создадим файлик info.php в нашей дериктории Sites в который напишу строку с phpinfo() функцией. Она выведет нам на экран текущую версию PHP которая включена у Apache.
Выполняем команду

echo "<?php phpinfo();" > ~/Sites/info.php

Переходим по ссылке  http://localhost/info.php

Если вы видите вывод функции phpinfo значит вы все настроили правильно!

Добавить комментарий

Ваш адрес email не будет опубликован.