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?


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

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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.