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, он отлично работает.
Здесь pastebin http://pastebin.com/950yC7wA моего apache2/httpd.conf, я понятия не имею, как это исправить.
- версия osx El Capitan 10.11
Ответы
Ответ 1
Убедитесь, что:
-
Вы установили 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.
Ответ 2
В то время как 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. Оба из них обозначены в FAQ.
Если вы хотите пошаговое руководство, посмотрите последнее сообщение на Обновление PHP на Mac OS X.
Ответ 3
Запуск $ apachectl -t
покажет все проблемы с вашей текущей конфигурацией. Когда я побежал, я получил следующее:
httpd: Ошибка синтаксиса в строке 171/private/etc/apache2/httpd.conf: Не удается загрузить /usr/local/opt/php 70/libexec/apache2/libphp7.so в server: dlopen (/usr/local/opt/php70/libexec/apache2/libphp7.so, 10): Символ не найден: _ldap_control_find\n Ссылка на: /usr/local/opt/php 70/libexec/apache2/libphp7.so\n Ожидается в: /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP\n в /usr/local/opt/php 70/libexec/apache2/libphp7.so
Я могу подтвердить это обходное решение, опубликованное в github, установка пакета без поддержки LDAP предотвратит эту ошибку:
brew reinstall php70 --without-ldap
Ответ 4
Не прямое решение вашей проблемы, но у меня было бесчисленное множество проблем с php на OS X. Совсем недавно пытался получить библиотеки OCI, работающие после обновления до El Capitan.
Я отказался от попыток использовать его сейчас и начал использовать докер для своего развития. Я считаю это гораздо лучшим решением, и вы даже можете настроить несколько сред на одной и той же базе кода, которая действительно полезна для тестирования разных версий.
Docker действительно легко настраивается на OS X и имеет огромный набор готовых контейнеров, доступных в репозитории, вы просто устанавливаете и устанавливаете точку монтирования в исходный каталог и используете порт, к которому он дает доступ.
Ответ 5
Если вы используете Apache в OS X Sierra, php7 больше не поставляется с модулем apache по умолчанию.
С выпуском macOS Sierra модуль Apache теперь не построен по умолчанию. Если вы хотите создать его в своей системе вам нужно установить php с параметром --with-apache. Подробнее см. brew параметры php70.
Попробуйте переустановить с помощью флага:
brew reinstall php70 --with-apache
Ответ 6
У меня была та же проблема, и она исчезла, когда я прокомментировал эту строку в /etc/apache2/httpd.conf
LoadModule php5_module libexec/apache2/libphp5.so
Ответ 7
Я знаю, что это очень старая тема, но когда вы обновляете PHP. Вам также нужно обновить Apache confing - например:
LoadModule php5_module libexec/apache2/libphp5.so
измените на:
LoadModule php7_module libexec/apache2/libphp7.so