기본 아파치 설치가 새로운 이벤트 MPM을 사용할 것으로 예상하면서 Ubuntu Server 14.04로 업그레이드했지만 대신 이전 메모리를 먹는 프리 포크를 찾습니다.
Arch Linux에서 이벤트 MPM을 성공적으로 설정했지만 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의 구성 파일이 다르기 때문에 올바른 위치에서 수행하는지 확실하지 않습니다.
apache2 event-mpm을 사용할 수 있도록 PHP 스레드를 안전하게 만드는 방법에 대한 아이디어가 있습니까? (물론 PHP를 수동으로 다시 컴파일하지 않아도 됨)
답변
비활성화하려면 event MPM
다음을 수행 sudo a2dismod mpm_event
한 후 활성화 prefork
해야합니다 sudo a2enmod mpm_prefork
.
마지막으로 아파치를 다시 시작하십시오.
sudo service apache2 restart
답변
이것은 나를 위해 일했습니다.
먼저이 패키지가 설치되어 있는지 확인하십시오.
dpkg -l | grep libapache2-mod-php5
가지고 있다면 그냥 제거하십시오.
apt-get remove libapache2-mod-php5
답변
Apache가 PHP와 병렬로 통신하는 여러 가지 방법을 설치할 수 있습니다. 어쩌면 fastcgi / php-fpm에 이전 mod_php를 설치했을 수도 있습니다.
Apache가 런타임에 어떤 모듈을로드했는지 확인할 수 있습니다.
apache2ctl -M
필요한 경우 sudo
루트 권한을 얻는 데 사용하십시오 . 당신이 볼 경우 php5_module (shared)
아파치가 현재 사용하고있는 모듈 중, 기존의 방법 mod_php가 여전히 설치 및 사용에서 블록을한다 mpm_worker
나 mpm_event
.
답변
나를 위해 데비안에서 완전히 작업하십시오.
- 프리 포크 비활성화, 이벤트 활성화 :
a2dismod mpm_prefork && a2enmod mpm_event
- mod-php5를 제거하십시오 :
aptitude remove libapache2-mod-php5
- 에
php_
의해 VHost 캡슐화에 각 옵션이 있으며<IfModule mod_php5.c></IfModule>
, 그렇지 않으면 아파치가 다시 시작되지 않습니다. - 해야 할 것
service apache2 restart
답변
Apache 구성 파일의 Load Modules 섹션에서 다음을 찾으십시오.
LoadModule mpm_event_module modules/mod_mpm_event.so
그리고 다음 모듈로 교체하십시오.
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
답변
php5 모듈은 prefork mpm을 필요로하며 prefork를 비활성화하려면 php5를 비활성화해야합니다.
데비안에서 루트로 다음을 수행했습니다.
프리 포크 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
행운을 빕니다