시스템 업그레이드 후 Apache2에서 PHP가 작동하지 않습니다


14

최근에 내 시스템을 Karmic에서 Lucid로 업그레이드했습니다. 이것은 아파치와 PHP가 업데이트되었다고 생각합니다.

이제 내 서버가 PHP 파일을 처리 할 수 ​​없으며 파일을 탐색하면 파싱이 아닌 다운로드가 트리거됩니다.

PHP 모듈은 여전히 ​​Apache mods-enabled로로드되어 있으며 AddType application/x-httpd-php .phphttpd.conf에 있습니다.

Apache 액세스 또는 오류 로그에 의미있는 메시지가 없으므로 문제가 발생합니다.

도움을 주시면 감사하겠습니다. 감사.

답변:


17

/var/log/apache2/error.log PHP가 성공적으로로드 된 경우 다음과 같은 행을 표시해야합니다.

[화요일 : 2011 년 8 월 30 일 12:53:36] [알림] Suhosin-Patch가 구성된 Apache / 2.2.14 (우분투) PHP / 5.3.2-1 우분투 4.9-정상적인 작업 재개

날짜에주의를 기울이고, 2009 년 이후의 것이면 잘못 구성한 것입니다.

AddType 쓸모가 없습니다.

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

Apache 2.x 용 php.net설치 지침 도 참조하십시오 .

패키지를 수동으로 추가 할 필요가 없습니다. 패키지 libapache2-mod-php5는 다음을 /etc/apache2/mods-available/php5.conf포함합니다.

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    # 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_value engine Off
        </Directory>
    </IfModule>
</IfModule>

conffile이므로 업그레이드와 함께 설치되지 않았을 수 있습니다. 해당 제거 를 수정 한 후 다시 설치하려면 다음을 수행하십시오.

sudo apt-get purge libapache2-mod-php5
sudo apt-get install libapache2-mod-php5

PHP를 활성화하려면 다음을 실행해야합니다.

sudo a2enmod php5

다음 후 웹 서버를 다시 시작하십시오.

sudo /etc/init.d/apache2 restart

다른 것들 :

  • 에서 충돌하는 설정을 확인하십시오 /etc/apache2.
  • 소스에서 Apache를 빌드 했습니까?
  • sudo apache2ctl configtest구문 오류에 대한 구성을 확인하기 위해 실행
  • http : // localhost / server-info 를 열어 로드 된 구성 및 모듈을 확인하십시오. 이를 위해 status모듈을로드해야합니다. 원격 서버를 실행하는 경우 Allow from목록에 자신을 추가 /etc/apache2/mods-enabled/status.conf하고 나중에 서버를 다시 시작해야합니다

훌륭한. AFK는 당장 오늘 밤에 이것을 테스트 할 것입니다. 감사.
Jivings

제거하고 다시 설치하면 모듈이 mods 사용 가능으로로드되지만 여전히 같은 문제가 있습니다 ... 충돌되는 것을 찾을 수 없으며 conf 파일의 포함이 apache.conf에 분명히 있습니다. 다른 아이디어가 있습니까? 감사.
Jivings

@Jivings : 일부 디버깅 아이디어가 추가되었습니다.
Lekensteyn

여전히 알아낼 수 없습니다. 그러나 나는 더 흥미로운 것을 발견했다. / var / www에 documentRoot를 정의하기 만하면 PHP가 설정된 가상 호스트 중 하나에서 제대로 작동하는 것 같습니다. 이것이 어떻게 가능한지?!
Jivings

1
여전히 브라우저의 캐시를 비우고 아파치를 다시 시작해야합니다.
Francesco

3

아무것도 작동하지 않았고 Apache가 매우 혼란스러워지면 마침내 모든 Apache 패키지를 제거하고 다시 설치했습니다.

문제가 무엇인지 아는 사람은 지금 잘 작동하는 것 같습니다 ....

편집하다

Apache 구성 설정을 다시 설정할 때 무엇이 ​​잘못되었는지 알았습니다. [이 블로그 항목] [1]에서 설명합니다.

userdir 모듈이 활발히 사용되지는 않지만 나머지 사이트 파일은 ~ / public_html 폴더에 있으며 PHP는 모든 것이 비활성화되어 있습니다.

내 Karmic 설정에 없었던 PHP 모듈에 최근에 추가되었을 것입니다.


1
구성 문제와 관련이 있어야합니다. 업그레이드시 아무 파일 /etc도 복사 되지 않습니다 (적어도 누군가는 /etc/init.d/apache2다시 설치할 때 생성되지 않는 문제 , 퍼지 + 설치에서만 발생 함)
Lekensteyn

시스템 업그레이드 이전에 효과가
있었지만

아마도 기능이 변경되었을 것입니다. 모든 업그레이드가 이전 구성 설정을 준수하는 것은 아닙니다. 일부 수정은 대다수에게는 의미가 있지만 일부는 그렇지 않습니다.
Lekensteyn

과연. 어쨌든 그것의 바닥에 도달하도록 도와 주셔서 감사합니다. :)
Jivings

1

php5.conf에서 파일이 /etc/apache2/mods-enabled때문에 구성에 따라, 사용자 디렉토리의 내부를 실행에서 PHP를 유지 하단에 몇 줄을 가지고,이 또한 문제가 될 수 있습니다. 이 줄을 주석 처리하고 apache2 다시로드 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.