Я обновился до Ubuntu Server 14.04, ожидая, что установка apache по умолчанию будет использовать новое событие MPM, но вместо этого я нахожу старый преформ, потребляющий память.
Я успешно настроил событие MPM в Arch Linux, но мне не удалось это сделать в Ubuntu. Я продолжаю получать:
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP
Я уже установил php-fpm
и настроил apache2 для его использования, но так как файлы конфигурации для apache2 отличаются в Ubuntu, я не совсем уверен, действительно ли я Я делаю это в нужном месте.
Есть идеи, как сделать поток PHP безопасным, чтобы я мог использовать apache2 event-mpm? (без необходимости вручную перекомпилировать php, конечно)
Для отключения event MPM
можно сделать sudo a2dismod mpm_event
и после этого включить prefork
, необходимо сделать sudo a2enmod mpm_prefork
.
Наконец апач перезапуска:
sudo service apache2 restart
Можно установить несколько путей к Apache для передачи с PHP параллельно. Возможно, у Вас есть (все еще) старый установленный mod_php, дополнительно на fastcgi/php-fpm.
Вы видите, какие модули Ваш Apache загрузил во времени выполнения
apache2ctl -M
В случае необходимости, используйте sudo
для получения прав пользователя root. Если Вы видите php5_module (shared)
среди модулей, Ваш Apache в настоящее время использует, старый mod_php все еще установлен и блокирует Вас от использования mpm_worker
или mpm_event
.
Ищите следующее в разделах Загрузочных модулей Вашего апачского конфигурационного файла:
LoadModule mpm_event_module modules/mod_mpm_event.so
И замените его следующим модулем:
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
Это работало на меня.
Первая проверка, если Вам установили этот пакет:
dpkg -l | grep libapache2-mod-php5
, Если у Вас есть он просто, удаляют его:
apt-get remove libapache2-mod-php5
Для меня после полностью работают над debian:
a2dismod mpm_prefork && a2enmod mpm_event
aptitude remove libapache2-mod-php5
php_
, Опция в Вашем VHost инкапсулирует <IfModule mod_php5.c></IfModule>
, в других отношениях апачский не перезапустит service apache2 restart
cd Desk
и затем нажмите, TAB тогда входят. Тогда сделайте мои шаги.
– FireFaced
23 October 2015 в 08:53
под debian, я сделал следующее как корень:
отключают предварительное ветвление mpm
a2dismod mpm_prefork
, включают событие mpm, или безотносительно mpm Вы мог бы предпочесть. обратите внимание, что я учреждаю мероприятие mpm, не рекомендовался для апачских 2.2 или ранее
a2enmod mpm_event
для отключения php5 загрузки модуля, но без удаления.
a2dismod php5
для тестирования полной правильности получающейся апачской конфигурации. ошибки должны были бы быть разрешены согласно ответ из @sulther выше.
apache2ctl -t
апач перезапуска
systemctl restart apache2
в случае, если php все еще необходим, ориентированная на многопотоковое исполнение версия должна быть установлена. см.: https://удача www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-freebsd-12-0