Я новичок в Ubuntu и был бы признателен за помощь в преодолении блока по настройке LAMP с версиями программного обеспечения в заголовке этого поста (в данный момент я верю по состоянию на 11/2016). Проблема заключается в невозможности настроить Apache 2 с модами php7.
Я использую пакеты по умолчанию, установленные с помощью «tasksel install lamp-server», но загруженный пакет Apache2, похоже, не установлен так, как настроено для модов php7. Например, файлы «php7.0conf» и «php7.0load» не были скопированы в папку «etc / apache2 / mods-enabled». Использование "libapache2-mod-php7.0" также, по-видимому, не включает моды php7.0. Единственная найденная мною инструкция по включению модов php7.0 - это "a2enmodphp7.0", которая копирует файлы php7 "conf" и "load" в папку Apache2 с поддержкой модов, но затем Apache2 не может перезапуститься со следующей ошибка:
" Apache работает с многопоточным MPM, но ваш PHP-модуль не скомпилирован для работы с потоками. Необходимо перекомпилировать PHP. AH00013: предварительная настройка завершилась неудачно
httpd. service: процесс управления завершен, code = exited status = 1 "
Я получаю тот же результат, загружая Apache2 индивидуально (используя« apt-get install apache2 »), а затем« apt-get libapache2-mod- php7.0 "и" a2enmodphp7.0 ".
Мои исследования показывают, что это известная несовместимость между Apache2 и php7. Вики на Apache говорят, что Apache запускает многопоточный MPM, в то время как PHP7 не скомпилирован, чтобы быть потокобезопасным. Он предлагает обходной путь, используя ручные изменения в файлах конфигурации Apache. См. Раздел 4.3 https://wiki.archlinux.org/index.php/LAMP#PHP .
Прежде чем я начну ковыряться под капотом, Я хотел бы спросить сообщество, есть ли более предпочтительное решение? Мое доверие к людям, которые собирают пакеты по умолчанию, вселяет в меня надежду они построили что-то, что сшивает их вместе.
Существует несколько способов подключить PHP к Apache. Их называют API сервера или SAPIs. Для использования модуля Apache , mod_php является один такой SAPI. Но некоторые модули PHP (например, модуль MySQL) еще не могут обработать работу с несколькими потоками, они не ориентированы на многопотоковое исполнение . mod_php является относительно плотным соединением между Apache и PHP, таким образом, Вы не можете использовать поточную обработку MPM и не ориентированные на многопотоковое исполнение модули PHP одновременно.
у Вас есть две опции: первая опция состоит в том, чтобы переключить на непоточную обработку MPM, будучи prefork
. Это, вероятно, шло бы с потерей производительности.
вторая опция, переключатель к SAPI, который как не сильно связывается, как fcgi
или PHP-FPM
. Они в основном работают как их собственные демоны, таким образом, Apache, о котором не должен заботиться MPM, ориентированы ли какие-либо модули в, скажем, демоне PHP-FPM на многопотоковое исполнение или нет. Но установить их необходимо сделать больше, чем просто установка пакет с apt
, таким образом, существует кривая обучения.