PHP nie działa w Apache2 po aktualizacji systemu

14

Niedawno zaktualizowałem mój system z Karmic do Lucid. To wymagało aktualizacji Apache i PHP.

Teraz mój serwer nie jest w stanie obsłużyć plików PHP, jakakolwiek nawigacja do nich powoduje pobieranie, a nie parsowanie.

Moduł PHP jest wciąż ładowany w modach Apache i mam go AddType application/x-httpd-php .phpw httpd.conf.

Brak dostępu do znaczących komunikatów w dzienniku dostępu Apache lub dzienników błędów, więc jestem zakłopotany.

Każda pomoc będzie mile widziana. Dzięki.

Jivings
źródło

Odpowiedzi:

17

/var/log/apache2/error.log powinien wyświetlać następujący wiersz, jeśli PHP zostało pomyślnie załadowane:

[Wt 30 sierpnia 12:53:36 2011] [zawiadomienie] Apache / 2.2.14 (Ubuntu) PHP / 5.3.2-1ubuntu4.9 ze skonfigurowaną łatką Suhosin - wznawianie normalnych operacji

Zwróć uwagę na datę, jeśli jest to coś z 2009 roku, coś źle skonfigurowałeś.

AddType jest bezużyteczny, musisz użyć:

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

Zobacz także instrukcjami wyświetlanymi na php.net dla Apache 2.x .

Nie powinno być potrzeby ręcznego dodawania tego, libapache2-mod-php5instaluje pakiet /etc/apache2/mods-available/php5.confzawierający:

<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>

Ponieważ jest to plik konfiguracyjny, możliwe, że nie został zainstalowany wraz z aktualizacją. Aby naprawić to wyczyść , a następnie zainstaluj ponownie:

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

Aby włączyć PHP, musisz uruchomić:

sudo a2enmod php5

Uruchom ponownie serwer sieciowy po:

sudo /etc/init.d/apache2 restart

Inne rzeczy do zrobienia:

  • sprawdź w ustawieniach sprzeczne ustawienia /etc/apache2.
  • zbudowałeś Apache ze źródła?
  • Uruchom, sudo apache2ctl configtestaby sprawdzić konfigurację pod kątem błędów składniowych
  • Otwórz http: // localhost / server-info, aby sprawdzić załadowaną konfigurację i moduły. W tym statuscelu należy załadować moduł. Jeśli korzystasz z serwera zdalnego, musisz dodać siebie do Allow fromlisty /etc/apache2/mods-enabled/status.confi ponownie uruchomić serwer później
Lekensteyn
źródło
Znakomity. AFK już teraz, ale przetestuje to dziś wieczorem. Dzięki.
Jivings
Po wyczyszczeniu i ponownej instalacji moduł jest ładowany w trybie modów, ale wciąż mam ten sam problem ... Nie mogę znaleźć niczego, co byłoby w konflikcie, a dołączenie plików conf jest zdecydowanie obecne w apache.conf. Czy masz jakieś inne pomysły? Dzięki.
Jivings
@ Jivings: dodano kilka pomysłów na debugowanie
Lekensteyn
Nadal nie mogę tego rozgryźć. Odkryłem jednak coś jeszcze ciekawszego. Wygląda na to, że PHP działa dobrze dla jednego z skonfigurowanych wirtualnych hostów, chociaż wszystko, co robi, to zdefiniowanie dokumentu root w / var / www. Jak to jest możliwe?!
Jivings
1
Nadal będziesz musiał opróżnić pamięć podręczną przeglądarki i ponownie uruchomić apache.
Francesco
3

Cóż, po tym, jak nic więcej nie działało i Apache robiło się bardzo zagmatwane, w końcu po prostu wyczyściłem wszystkie pakiety Apache i ponownie je zainstalowałem.

Wygląda na to, że teraz działa dobrze, kto wie, co było z tym nie tak ...

EDYTOWAĆ

Dowiedziałem się, co było nie tak, kiedy ponownie konfigurowałem ustawienia konfiguracji Apache. [Ten wpis na blogu] [1] wyjaśnia to.

Okazuje się, że chociaż moduł userdir nie jest aktywnie używany, reszta plików stron znajduje się w moim folderze ~ / public_html, a php został wyłączony dla wszystkich tam zawartych.

Myślę, że to musiał być najnowszy dodatek do modułu php, który nie był obecny w moich ustawieniach Karmic.

Jivings
źródło
1
Powinno to być związane z problemem konfiguracji. Przy uaktualnieniach nie /etcsą kopiowane żadne pliki (przynajmniej ktoś miał problem z /etc/init.d/apache2tym, że nie został utworzony przy ponownej instalacji, tylko podczas czyszczenia + instalacji)
Lekensteyn
Dziwne, że zadziałało to przed aktualizacją mojego systemu, a potem ...
Jivings
prawdopodobnie wtedy nastąpi zmiana funkcji. Nie można oczekiwać, że każda aktualizacja będzie respektować stare ustawienia konfiguracji. Niektóre modyfikacje miałyby sens dla większości, ale nie dla innych.
Lekensteyn,
W rzeczy samej. Dziękuję za pomoc w
dotarciu
1

php5.confplik w /etc/apache2/mods-enabledma kilka linii na dole, które utrzymują php z wykonaniem wnętrza katalogu użytkownika, więc w zależności od konfiguracji, może to być również Twój problem. Możesz po prostu skomentować te linie i przeładować apache2

Jeff
źródło