시스템 업그레이드 후 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.