Обновление до PHP 7 или 7.1 на macOS Sierra или на OSX 10.6 - 10.11
MacOS Sierra поставляется с PHP 5.6, OSX 10.11 El Capitan с PHP 5.5.x и OSX 10.8 Mountain Lion поставляется с PHP версии 5.3, есть простой способ обновления до новой стабильной версии 5.6 или более старой стабильной версии PHP или даже последней PHP версия 7.
Последняя версия PHP и инструкции по установке руководстве находятся на этом сайте PHP Packaged, который поддерживает OSX и известен как надежный.
Загрузка и установка PHP 7.0
Откройте терминал и запустите:
curl -s http://php-osx.liip.ch/install.sh | bash -s 7.0
или для 7.1
curl -s http://php-osx.liip.ch/install.sh | bash -s 7.1
Вы получаете сообщение об ошибке, в случае если установленный у вас php является более новой версией
Поскольку PHP 7 - 7.1 это довольно новая версия, могут быть проблемы. Ваш путь может быть извилист и тернист))).
PHP установится в /usr/local/php5
Проверьте версию php, создав файл php с именем phpinfo.php в вашем корневом каталоге сайта с одной строкой:
<?php phpinfo();?>
Перейдите к этому файлу и посмотрите свою версию PHP.
Или набрав в терминале
php -v
Если вместо этого вы просто хотите обновить до последнего 5.6 PHP ... Откройте терминал и выполните команду -
curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6
И все! Одна команда в терминале, но это позволит загрузить и установить PHP 5.6 в:
/usr/local/php5/
Теперь о конфигурации Apache.
Это если Server.app у нас отсутствует:
Для любой версии PHP, установленной вами, 7 или 5.6, сценарий установки также отключит предыдущий PHP 5, если он был включен в конфигурационном файле Apache.
/etc/apache2/httpd.conf .
Новая версия включена в Apache с самого начала, новая установка закомментирует предыдущий модуль PHP.
#LoadModule php5_module libexec/apache2/libphp5.so
Он загрузит новую версию PHP из файла /etc/apache2/other/+php- osx.conf.
Поэтому, чтобы отменить установку, раскомментируйте старый PHP-модуль в httpd.conf и удалите новую конфигурацию.
http://php-osx.liip.ch/#faq
Чтобы отобразить новую версию PHP в терминале можно снова набрать:
php -v
И вам нужно обновить .bash_profile добавив строку:
export PATH=/usr/local/php5/bin:$PATH;
Обновление PHP в Server.app
А теперь о обновлении сервера
После каждого обновления Server.app следует проверить и, возможно, изменить настройки веб-сервера, чтобы убедиться, что веб-служба использует нужную версию Liip PHP.
Конфигурационный файл у нас другой:
/Library/Server/Web/Config/apache2/httpd_server_app.conf
То есть возможен вариант когда вы обновили версию PHP но Server.app находит и включает предыдущую
Вот строка, которая в httpd_server_app.conf загружает версию PHP, предоставляемую Apple:
LoadModule php5_module libexec/apache2/libphp5.so
Если вы просто хотите Закомментировать эту строку, и вы обновляетесь до PHP 5.6, сделайте это так:
#LoadModule <тут-ваш-коммент> php5_module libexec/apache2/libphp5.so
В противном случае Server.app может попытаться повторно включить эту строку, когда вы установите флажок «enable PHP» на панели Web-сервера.
Затем либо замените его следующей строкой, либо просто добавьте строку:
LoadModule php5_module /usr/local/php5/libphp5.so
И в PHP 5.6 это работает.
Но в PHP 7 путь другой
Нужно добавить строку
LoadModule php5_module /usr/local/php5/libphp7.so
Кроме того при обновлении PHP в Server.app обычных команд рестарта Apache не достаточно.
Что мы там использовали?
Для старта:
sudo apachectl start
Для остановки:
sudo apachectl stop
И для рестарта:
sudo apachectl restart
А чтобы посмотреть версию Apache:
httpd -v
Тут же нам нужно презапустить сервер. Что можно сделать через серверную утилиту, или в терминале:
sudo serveradmin stop web
И стартовать:
sudo serveradmin start web
Удаление
Измените в /etc/apache2/httpd.conf
LoadModule php5_module /usr/local/php5/libphp5.so
на
LoadModule php5_module libexec/apache2/libphp5.so
а также удалите файлы +php-osx.conf и +entropy-php.conf в директории /etc/apache2/other
и удалите /usr/local/php5-*
Переустановка
Для полной переустановки новой версии нужно удалить ее строку в файле /usr/local/packager/registry.log.
sudo $EDITOR /usr/local/packager/registry.log
А если вы забыли версию и все что делали просто удалите этот файл:
sudo rm -rf /usr/local/packager/registry.log