Подтвердить что ты не робот

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
4b9b3361

Ответ 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