Включение threadsafe php7.0.8 с Apache2.4.18 и Ubuntu 16.04.3 (рабочий стол) для LAMP

Я новичок в 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 .

Прежде чем я начну ковыряться под капотом, Я хотел бы спросить сообщество, есть ли более предпочтительное решение? Мое доверие к людям, которые собирают пакеты по умолчанию, вселяет в меня надежду они построили что-то, что сшивает их вместе.

0
задан 27 November 2016 в 13:24

1 ответ

Существует несколько способов подключить 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, таким образом, существует кривая обучения.

0
ответ дан 27 November 2016 в 13:24
  • 1
    я поместил его для указания на него как на команду – sandana niranjan 6 September 2018 в 00:14

Другие вопросы по тегам:

Похожие вопросы: