오랜만에 APM을 설치할 일이 생겨서 서버를 설정하고 테스트하던 중
아주 어이없게 html 이나 php가 다운로드되는 일이 발생하였다.
이것은 php 7.x 이전 버전의 설정방법으로 설정하는 경우 발생되는 현상으로 7.x 버전 이상에서는 설정 방법이 달라짐을 알 수 있었다.
보통 html이나, php 파일의 확장자를 갖은 웹 소스를 작성하는 경우가 많고, 이 두파일은 URL을 통해 직접 호출되는 형태라
AddType 에 지정하여 php가 파싱한 결과를 웹에 연결하도록 하는게 그동안의 방법이였다.
언제부터 바뀐건지 정확히는 모르겠으나(이 환경으로 개발할 일이 요즘 없어서...)
많은 답변에서 다들 알 수없다는 글들을 많이 봐온 관계로, 이 글에 직접 해결방법을 제시하고자 합니다.
설치환경은 Apache 2.X, php 7.x 등 기타 조합이다
1. yum으로 설치하는 경우 /etc/httpd/ 폴더가 apache 루트폴더가 된다.
2. /etc/httpd/conf/httpd.conf 에서 도큐먼트 서비스를 위한 설정을 적절히 하고, AddType에 어떤 설정을 하지 않도록 한다.
3. /etc/httpd/conf/httpd.conf 아래쪽에 보면 /etc/httpd/conf.d/* 의 파일들을 로드하는게 있는지 확인한다.
4. /etc/httpd/conf.d/php.conf 파일을 열어 아래와 같이 수정한다.
<IfModule !mod_php5.c>
<IfModule !mod_php7.c>
# Enable http authorization headers
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
<FilesMatch \.(php|phar)$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
</IfModule>
</IfModule>
이 부분을 찾아 아래처럼 수정한다.
<IfModule !mod_php5.c>
<IfModule !mod_php7.c>
# Enable http authorization headers
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
<FilesMatch \.(php|phar|html)$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
</IfModule>
</IfModule>
마찬가지로 아래부분을 찾아 "|html"을 추가해준다.
<IfModule mod_php7.c>
#
# Cause the PHP interpreter to handle files with a .php extension.
#
<FilesMatch \.(php|phar|html)$>
SetHandler application/x-httpd-php
</FilesMatch>
5. php-fpm 에서도 html 파일에 php 코드를 담을 것이란것을 선언해줘야한다.
# vi /etc/php-fpm.d/www.conf
;security.limit_extensions = .php .php3 .php4 .php5 .php7
security.limit_extensions =
위와같이 php-fpm 의 환경설정을 변경한다. 변경하지 않으면 php 코드는 .php 파일만 허용된다.
변경 후에는 php-fpm 서비스와 apache를 재구동한다.
# service php-fpm restart
# service httpd restart
6. 추가로 리눅스 시스템이 apache 가 파일을 읽어 서비스할 수 있도록 DocumentRoot 폴더의 권한을 허용해준다.
chcon -v -R --type=httpd_sys_content_t /home/www/html
또 웹 소스에서 서버의 특정 폴더에 파일을 저장하는경우가 있다면 아래와 같이 저장할 수 있도록 권한을 허용해야한다.
chcon -v -R --type=httpd_sys_rw_content_t /home/www/attached
이제 필요한 페이지가 잘 열리는 것을 확인할 수 있다.
'개발관련 정보 > 서버' 카테고리의 다른 글
기상청 동네예보 활용하기 php 소스 (0) | 2021.05.11 |
---|