Kod PHP jest zwracany zamiast wykonywany

3

Mam L-Ubuntu 11.04. Zainstalowałem Apache2 i próbuję symulować serwer w moim lokalnym systemie plików, przechodząc do localhostprzeglądarki.

Problem polega na tym, że nie mogę uzyskać php do wykonania na localhost. Kod PHP jest po prostu drukowany w przeglądarce (zamiast zostać wykonany i wydrukowany wynik).

  • libapache2-mod-php5 jest zainstalowany i najnowsza wersja.
  • Moduł Apache php5 jest włączony.

Jak mogę uruchomić PHP na localhost?

Hermann Ingjaldsson
źródło
1
1. Problem polega na [...] na localhost. Czy to znaczy, że działa z innego miejsca? 2. [...] Wydaje się, że nie mogę zmusić php do wykonania [...] Co dokładnie się dzieje?
Dennis
1. Tak, działa, gdy mam taką strukturę folderów na serwerze. Ale jeśli skopiuję stronę na komputer lokalny i włożę ją do localhost ... bez php. 2. To, co się dzieje, polega na tym, że kod php jest po prostu drukowany bezpośrednio, a nie interpretowany.
Hermann Ingjaldsson
Spróbuj skopiować pliki /etc/apache2/mods-available/php5.*z serwera na komputer domowy i uruchom ponownie apache2. Dla pewności najpierw wykonaj kopie zapasowe.
Dennis
To wynajęte miejsce na serwerze i niestety nie mam dostępu do tego folderu.
Hermann Ingjaldsson

Odpowiedzi:

4

Plik konfiguracyjny /etc/apache2/mods-available/php5.confkontroluje, które pliki Apache rozpoznaje jako skrypty php (na podstawie ich rozszerzeń).

Domyślnie (w PHP 5.3.2) plik zawiera następujący kod:

<FilesMatch "\.ph(p3?|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

Wpływa to na pliki z następującymi rozszerzeniami:

  • .php
  • .php3
  • .phtml

Z naszej dyskusji na czacie wiem, że twoje pliki mają htmlrozszerzenie. Serwer został skonfigurowany do traktowania .htmlplików jako plików php, ale Twój komputer domowy nie. To pozostawia dwie opcje:

  1. Zmień nazwę .htmlplików zawierających kod php na jedno z powyższych rozszerzeń.

  2. Zamień linię

    <FilesMatch "\.ph(p3?|tml)$">
    

    w twoim php5.confprzez

    <FilesMatch "\.(ph(p3?|tml)|html?)$">
    

    i ponownie załaduj apache, wykonując następujące polecenie:

    sudo service apache2 reload
    

    Oprócz wspomnianych wcześniej rozszerzeń nowa konfiguracja wpływa również na:

    • .htm
    • .html
Dennis
źródło
1

działa apache?

po otwarciu hosta lokalnego musisz zobaczyć „To działa!” strona. jeśli nie działa apache, możesz użyć/etc/init.d/apache2 start

Być może moduł php nie jest włączony. Umożliwić

a2enmod php5

po

/etc/init.d/apache2 reload

Możesz użyć

tail -f /var/log/apache2/error.log

aby zobaczyć dzienniki błędów.

Kelebek
źródło
apache działa, a moduł jest włączony. Ale kiedy uruchamiam to polecenie ogona, dostaję „[środa 16 maja 13:24:11 2012] [błąd] [klient 127.0.0.1] Plik nie istnieje: /var/www/favicon.ico [środa 16 maja 13:24 : 30 2012] [zawiadomienie] złapało SIGTERM, zamykając [Środa 16 13:25:25 2012] [zawiadomienie] Apache / 2.2.17 (Ubuntu) PHP / 5.3.5-1ubuntu7.8 ze skonfigurowaną łatką Suhosin - wznawianie normalnej pracy [Śr 16 maja 13:25:57 2012] [błąd] [klient 127.0.0.1] Plik nie istnieje: /var/www/favicon.ico "
Hermann Ingjaldsson
błąd favicon jest dziwny, ponieważ ten plik obrazu jest zdecydowanie tam.
Hermann Ingjaldsson
czy sprawdzasz uprawnienia?
kelebek
problem został rozwiązany, więc nie obchodzi mnie to. ale dzięki.
Hermann Ingjaldsson
0

Musisz zainstalować moduł php.

apt-get install libapache2-mod-php5
Kelebek
źródło
jest już zainstalowany i w najnowszej wersji.
Hermann Ingjaldsson