Я пытаюсь перейти на 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, я понятия не имею, как это исправить.
Хотя 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
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