14.04 업뎃후 웹출력시 php 소스 그대로 출력 되는 현상

우분투 버전 12에서 14로 업그레이드 하고 난 뒤의 문제 입니다.

소프트웨어 업데이트 및 설정을 새로운 버전에 맞게 자동 변경 된 상태로

우선 php.ini 파일에 short_open_tag 는 On 상태입니다.

기본적인 /var/www 폴더로 설정 되었을땐 php가 제대로 출력되는데

기존 가상호스트 파일을 로드 한후 사이트 접속을 하면 php 파일의 소스가 그대로 노출이 되는 현상이 나오네요

기존 호스트 설정 파일과 가상 호스트 설정 파일은 다른점이 없는데도 왜그런지 모르겠네요…

다른점이라면 기존 호스트 파일에서 홈 디렉토리는 /var/www 이지만 가상호스트에는 /home/계정명 의 폴더 입니다.

혹시 업데이트 후에 따로 설정 해줘야 할 부분이 있었던건지 궁금합니다.

일단 일정이 바쁜 관계로 아래 설정 부분을 확인해 보시고 의문점이 있으시면 댓글 주십시오.

[code:3ii258jd]<FilesMatch &#46;php$>
SetHandler application/x-httpd-php
</FilesMatch>

  &lt;FilesMatch &quot;\&#46;ph(p&#91;2-6&#93;?|tml)$&quot;&gt;
      SetHandler application/x-httpd-php
  &lt;/FilesMatch&gt;

  &lt;FilesMatch &quot;\&#46;phps$&quot;&gt;
      SetHandler application/x-httpd-php-source
  &lt;/FilesMatch&gt;[/code:3ii258jd]

형식은 다를수 있지만 의미는 같습니다. 확장자 파싱후에 다시 아파치 재시작 후 페이지를 호출해 보십시오.

[quote="workman729":36ejjulm]일단 일정이 바쁜 관계로 아래 설정 부분을 확인해 보시고 의문점이 있으시면 댓글 주십시오.

[code:36ejjulm]<FilesMatch &#46;php$>
SetHandler application/x-httpd-php
</FilesMatch>

  &lt;FilesMatch &quot;\&#46;ph(p&#91;2-6&#93;?|tml)$&quot;&gt;
      SetHandler application/x-httpd-php
  &lt;/FilesMatch&gt;

  &lt;FilesMatch &quot;\&#46;phps$&quot;&gt;
      SetHandler application/x-httpd-php-source
  &lt;/FilesMatch&gt;[/code:36ejjulm]

형식은 다를수 있지만 의미는 같습니다. 확장자 파싱후에 다시 아파치 재시작 후 페이지를 호출해 보십시오.[/quote:36ejjulm]

[code:36ejjulm]

This file replaces old system MIME types and sets them only in the

Apache webserver

application/x-httpd-php phtml pht php

application/x-httpd-php3 php3

application/x-httpd-php4 php4

application/x-httpd-php5 php

<FilesMatch ".+&#46;ph(p[345]?|t|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>

application/x-httpd-php-source phps

<FilesMatch ".+&#46;phps$">
SetHandler application/x-httpd-php-source
# Deny access to raw php sources by default
# To re-enable it’s recommended to enable access to the files
# only in specific virtual host or directory
Order Deny,Allow
Deny from all
</FilesMatch>

Deny access to files without filename (e.g. ‘.php’)

<FilesMatch "^&#46;ph(p[345]?|t|tml|ps)$">
Order Deny,Allow
Deny from all
</FilesMatch>

To enable PHP CGI site-wide, just uncomment following lines, however

as a security measure, it’s recommended to enable PHP just in the

specific virtual servers or just specific directories

#ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
#<Directory "/usr/lib/cgi-bin">

AllowOverride None

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Order allow,deny

Allow from all

#</Directory>
#Action application/x-httpd-php /cgi-bin/php5

[/code:36ejjulm]

현재 php5-cgi.conf 파일의 설정 내용입니다.

써주신 내용으로 php만 단독으로 핸들러 설정을 해보았는데 똑같은 반응이네요…

달리 설정 해야 할 부분이 또 있을까요?

모두 Deny from all 인데요! (403 에러로 나오지 않나요?)
그리고 모듈 설정 부분도 확인해 보십시오. 설정 부분을 보여 주시면 감사하겠습니다.

[quote="workman729":ed8utkbd]모두 Deny from all 인데요! (403 에러로 나오지 않나요?)
그리고 모듈 설정 부분도 확인해 보십시오. 설정 부분을 보여 주시면 감사하겠습니다.[/quote:ed8utkbd]

mods-enabled 폴더에 php5.conf의 설정 파일입니다.

[code:ed8utkbd]
<FilesMatch ".+&#46;ph(p[345]?|t|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch ".+&#46;phps$">
SetHandler application/x-httpd-php-source
# Deny access to raw php sources by default
# To re-enable it’s recommended to enable access to the files
# only in specific virtual host or directory
Order Deny,Allow
Deny from all
</FilesMatch>

Deny access to files without filename (e.g. ‘.php’)

<FilesMatch "^&#46;ph(p[345]?|t|tml|ps)$">
Order Deny,Allow
Deny from all
</FilesMatch>

Running PHP scripts in user directories is disabled by default

To re-enable PHP in user directories comment the following lines

(from <IfModule ...> to </IfModule>.) Do NOT set it to On as it

prevents .htaccess files from disabling it.

<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_flag engine Off
</Directory>
</IfModule>

[/code:ed8utkbd]

답변 달아주셔서 감사합니다!!

모듈 설정 부분이라 함은 어떤 부분인지 말씀 해주시면 첨부 하도록 하겠습니다!

다운로드 현상은 확장자의 실행을 거부로 설정하셨기 때문입니다.

Deny라함은 접근 금지, 거부 뭐 그런 뜻이구요! (사전적으로도 그런뜻인지…^^)
거부되어 있으니 실행이 되지 않을 겁니다.

allow로 바꿔 보십시오.
모두 부분은 따로 모듈 설정 파일이 있을 겁니다. 어디에 있는지 금방 생각이 나지 않는 데
저는 컴파일 버전을 주로 사용하기 때문입니다…^^

그냥 모듈이 올라와 있는가 해서요? libphp5.so 가 올라와 있는지 궁금해서요…^^

[quote="workman729":jzxwbwmg]다운로드 현상은 확장자의 실행을 거부로 설정하셨기 때문입니다.

Deny라함은 접근 금지, 거부 뭐 그런 뜻이구요! (사전적으로도 그런뜻인지…^^)
거부되어 있으니 실행이 되지 않을 겁니다.

allow로 바꿔 보십시오.
모두 부분은 따로 모듈 설정 파일이 있을 겁니다. 어디에 있는지 금방 생각이 나지 않는 데
저는 컴파일 버전을 주로 사용하기 때문입니다…^^

그냥 모듈이 올라와 있는가 해서요? libphp5.so 가 올라와 있는지 궁금해서요…^^[/quote:jzxwbwmg]

네 libphp5.so는 올라와 있구요

Deny 설정된 부분은 phps 파일 부분이라서 따로 손대지 않았구요 php파일이 다운로드 되는게 아니라 소스가 그대로 출력 되는 현상입니다.

하아… 희안하네요;;;

이전에 쓴 글의 내용은 갈로를 쓰나 안쓰나 같은 내용입니다.

이점 정정해야 할 것 같습니다. 혹 호출하신 페이지의 확장자가 .html이 아닌가요?
물론 그럴리는 없을 것이라 판단 되지만 혹시나 해서 말씀 드립니다.

그렇다면 .html 부분도 추가해 주십시오.

<FilesMatch ".+.htm(l)$">
SetHandler application/x-httpd-php
</FilesMatch>

지금 똑같이 적용해 실행해 봐도 저는 정상적으로 나옵니다.
위의 html 확장자가 아니라면 모듈 부분에 mod_mime.so의 주석이 해제되어 있지 않다면
파싱이 안될 수도 있으니 확인해 보십시오.

14.04로 업그레이드 되면서 뭔가 꼬인것 같네요 ㅠㅠ

설정은 모두 다 되어 있는데 안되네요;; 도움 주셔서 감사합니다!

apache2 와 php5를 삭제후에 새로 설치 해봐야겠네요 많은 도움이 되었습니다!

저도 얼마전에 업글 후 소스가 출력되어 재설치를 거듭한 끝에 살펴보니

아파치 버전업으로 인한 기본경로가 /var/www/html로 바뀌어서 설정파일 경로 문제였던 기억이 납니다.

정확한 답을 드리지 못해서 죄송합니다^^;