PHP7, установленный Homebrew, не работает с Apache на macOS

Я пытаюсь перейти на php7, который я установил через homebrew.

В CLI php -v возвращается

PHP 7.0.10 (cli) (built: Aug 21 2016 19:14:33) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies 

Но для localhost, firefox выдает страницу загрузки проблемы, и я не могу просмотреть localhost / phpinfo.php; если я поменяю строки модуля на php5, он отлично работает.

Вот пастебин http://pastebin.com/950yC7wA моего apache2 / httpd.conf, я понятия не имею, как это исправить.

  • Версия osx El Capitan 10.11

Хотя Homebrew – отличный инструмент, он иногда не нужен.

Я упоминаю в своих сообщениях об установке Apache, PHP и MySQL в Mac OS X , OS X поставляется с предустановленной Apache и PHP. Таким образом, вам просто нужно настроить и включить их.

К сожалению, с Mac OS 10.11 ( El Capitan ) версия PHP по-прежнему равна 5.5. Я предполагаю, что это изменится с 10.12 ( Sierra ), поскольку PHP 5.5 является EOL. Однако это может быть только PHP 5.6.

Для установки PHP 7 я рекомендую использовать PHP OSX . Они предлагают установку пакетов для версий PHP с 5.3 по 7.1 (последняя версия). Он доступен для Mac OS 10.6+ ( Snow Leopard ).

Поскольку это установка пакета, она работает из коробки с установкой по умолчанию Apache. Вам нужно будет только обновить PATH и изменить их ini-файл PHP. Оба из них изложены в их FAQ .

Если вы хотите получить более пошаговое руководство, ознакомьтесь с моей недавней публикацией по обновлению PHP в Mac OS X.

Убедись, что:

  • Вы установили PHP с поддержкой модуля Apache (см.: brew options php71 ).

    Например, --with-httpd22 или --with-httpd24 .

  • Вы следовали инструкциям от brew info php71

     ==> Caveats To enable PHP in Apache add the following to httpd.conf and restart Apache: LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so <FilesMatch .php$> SetHandler application/x-httpd-php </FilesMatch> Finally, check DirectoryIndex includes index.php DirectoryIndex index.php index.html 
  • Вы перезапустили Apache с помощью перезапуска sudo apachectl restart .

Если что-то не работает, проверьте журналы с помощью: tail -f /usr/local/var/log/apache2/*error* .

Пошаговое руководство см. В разделе: Настройка Apache, MySQL и PHP с использованием Homebrew на macOS Sierra .

Запуск $ apachectl -t покажет любые проблемы с вашей текущей конфигурацией. Когда я побежал, я получил следующее:

httpd: Ошибка синтаксиса в строке 171 /private/etc/apache2/httpd.conf: Не удается загрузить /usr/local/opt/php70/libexec/apache2/libphp7.so в сервер: dlopen (/ usr / local / opt / php70 /libexec/apache2/libphp7.so, 10): Символ не найден: _ldap_control_find \ n Ссылка из: /usr/local/opt/php70/libexec/apache2/libphp7.so\n Ожидается в: / System / Library / Frameworks / LDAP.framework / Версии / A / LDAP \ n в /usr/local/opt/php70/libexec/apache2/libphp7.so

Я могу подтвердить это обходное решение, опубликованное в github , установка пакета без поддержки LDAP предотвратит эту ошибку:

 brew reinstall php70 --without-ldap 

Не прямое решение вашей проблемы, но у меня было бесчисленное множество проблем с php на OS X. Совсем недавно пытался получить библиотеки OCI, работающие после обновления до El Capitan.

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

Docker действительно легко настраивается на OS X и имеет огромный набор готовых контейнеров, доступных в репозитории, вы просто устанавливаете и устанавливаете точку монтирования в исходный каталог и используете порт, к которому он дает доступ.

Если вы используете Apache в OS X Sierra, php7 больше не поставляется с модулем apache.

С выпуском macOS Sierra модуль Apache теперь не построен по умолчанию. Если вы хотите создать его в своей системе, вам нужно установить php с параметром –with-apache. Подробнее см. Параметры заварки php70.

Попробуйте переустановить с помощью флага:

 brew reinstall php70 --with-apache 

У меня была такая же проблема, и она ушла, когда я прокомментировал эту строку в /etc/apache2/httpd.conf

 LoadModule php5_module libexec/apache2/libphp5.so 

Я знаю, что это очень старая тема, но когда вы обновляете PHP, вам также нужно обновить Apache confing – например:

 LoadModule php5_module libexec/apache2/libphp5.so 

изменить на:

 LoadModule php7_module libexec/apache2/libphp7.so