반응형
Apache 서버에서 발생한 문제를 해결하는 방법
오류
$ /usr/local/apache2/bin/apachectl -t
httpd: Syntax error on line 53 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied
이 오류는 Apache 서버가 /usr/local/apache2/modules/libphp5.so 파일을 로드하려고 할 때 발생하는데 이 파일의 메모리 보호 설정과 관련된 문제가 발생한 것입니다. 이 문제는 주로 SELinux(Security-Enhanced Linux)가 활성화된 시스템에서 발생합니다. SELinux는 특정 파일에 대한 접근 권한을 엄격하게 관리하며 메모리 보호 설정을 엄격하게 제한할 수 있습니다.
1. setenforce 명령어로 SELinux를 일시적으로 비활성화
SELinux를 일시적으로 Permissive 모드로 전환합니다. Permissive 모드에서는 SELinux 규칙이 적용되지 않으며 오류가 발생하는 대신 경고 메시지만 출력됩니다.
sudo setenforce 0
Apache를 다시 시작하고 문제가 해결되었는지 확인합니다.
sudo /usr/local/apache2/bin/apachectl restart
2. chcon 명령어로 파일의 보안 컨텍스트 수정
SELinux가 특정 파일에 대해 적절한 보안 컨텍스트를 적용하지 않았을 수 있습니다. 이를 수정하기 위해 chcon 명령어를 사용하여 적절한 보안 컨텍스트를 설정합니다.
libphp5.so 파일에 대해 httpd_exec_t 유형의 보안 컨텍스트를 적용합니다. 이는 Apache가 해당 파일을 올바르게 로드할 수 있도록 합니다.
sudo chcon -t httpd_exec_t /usr/local/apache2/modules/libphp5.so
다시 Apache를 시작합니다.
sudo /usr/local/apache2/bin/apachectl restart
3. SELinux의 설정을 영구적으로 변경하기
setenforce 0 명령어로 문제를 해결한 경우 SELinux를 영구적으로 Permissive 모드로 변경하려면 /etc/selinux/config 파일을 편집해야 합니다. 하지만 이는 보안상 권장되지 않으므로 권한 문제를 올바르게 해결하는 것이 좋습니다.
$ restorecon -v /usr/local/apache2/modules
$ cd /usr/local/apache2/modules/
$ restorecon -v libphp5.so
restorecon reset /usr/local/apache2/modules/libphp5.so context root:object_r:usr_t:s0->system_u:object_r:lib_t:s0
$ chcon -t texrel_shlib_t libphp5.so
$ /usr/local/apache2/bin/apachectl -t
Syntax OK
728x90
반응형
'리눅스' 카테고리의 다른 글
라우팅 프로토콜의 일반적인 설명 (0) | 2013.09.07 |
---|---|
[리눅스] phpmyadmin 설치 (0) | 2013.09.04 |
mount 명령어 (1) | 2013.09.04 |
PHP 5.2.8을 소스 파일로부터 컴파일하여 설치하는 방법 (0) | 2013.09.03 |
[Apache] apache(httpd-2.2.12) 설치 (1) | 2013.09.03 |