it-swarm.com.ru

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

  • версия для ОС El Capitan 10.11
25
Arthur

Удостоверься что:

  • Вы установили 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.

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

Поиск проблемы

  • Когда вы что-то не работаете, проверьте журналы в режиме реального времени через:

    tail -f /usr/local/var/log/Apache2/*error*
    

    Затем запустите/перезагрузите сервер.

    Примечание: когда закончите, нажмитеControl-Cвыйти tail.

13
kenorb

Хотя 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 и изменить их PHP ini-файл. Оба из которых изложены в их FAQ .

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

12
Jason McCreary

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

С выпуском macOS Sierra модуль Apache теперь не создается по умолчанию. Если вы хотите собрать его в своей системе вам нужно установить php с опцией --with-Apache. Смотрите brew options php70 для более подробной информации.

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

brew reinstall php70 --with-Apache
4
Flo Schild

Запуск $ 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/Versions/A/LDAP\n in /usr/local/opt/php70/libexec/Apache2/libphp7.so

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

brew reinstall php70 --without-ldap

3
HPierce

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

LoadModule php5_module libexec/Apache2/libphp5.so
3
dmac

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

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

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

3
Ben Cummins

Сегодня я обнаружил новый путь для загрузки разных библиотек php в файл httpd.conf (/usr/local/etc/httpd/httpd.conf): 

### OLD VERSION (NOT WORKING NOW)  ###
#LoadModule php5_module    /usr/local/opt/php56/libexec/Apache2/libphp5.so
#LoadModule php7_module    /usr/local/opt/php70/libexec/Apache2/libphp7.so
#LoadModule php7_module    /usr/local/opt/php71/libexec/Apache2/libphp7.so
#LoadModule php7_module    /usr/local/opt/php72/libexec/Apache2/libphp7.so

### NEW VERSION ###
#LoadModule php5_module    /usr/local/opt/php56/lib/httpd/modules/libphp7.so
#LoadModule php7_module    /usr/local/opt/php70/lib/httpd/modules/libphp7.so
#LoadModule php7_module    /usr/local/opt/php71/lib/httpd/modules/libphp7.so
LoadModule php7_module    /usr/local/opt/php72/lib/httpd/modules/libphp7.so
1
vincent

Для людей, которые могут столкнуться с этой проблемой, убедитесь, что вы можете перезапустить Apache с помощью «apachectl restart». В моем случае мне пришлось сначала остановить все процессы httpd с помощью команды «httpd stop», а затем запустить Apache с помощью «apachectl start».

0
Naresh Dhiman

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

LoadModule php5_module libexec/Apache2/libphp5.so

Правка на:

LoadModule php7_module libexec/Apache2/libphp7.so
0
Wordica