Skrypt PHP nie działa na serwerze Apache

54

Właśnie przeinstalowałem Apache i PHP5, ale kiedy odwiedzam mój katalog główny doc, to po prostu pobiera plik do pobrania. A kiedy próbuję documentroot /index.php, po prostu pobiera plik PHP.

Mam zainstalowany PHP, ale Apache nie chce go uruchamiać.
Ludzie sugerowali dodanie wiersza „Załaduj moduł” do mojego, httpd.confale nie mam tego pliku.

użytkownik2919631
źródło

Odpowiedzi:

103

Pisanie na maszynie:

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

zainstaluje wszystko, czego potrzebujesz i uruchomi serwer apache z obsługą PHP.

Aby sprawdzić, czy moduł php jest załadowany, wpisz:

a2query -m php5

jeśli nie jest włączony, załaduj:

sudo a2enmod php5

i zrestartuj Apache:

sudo service apache2 restart

Aktualizacja php7.x (testowana na Ubuntu 16.04, 16.10, 18.04, 18.10 )

Dzięki komentarzom aktualizuję odpowiedź dla php7.x.

Zainstalować:

sudo apt-get install apache2 php7.x libapache2-mod-php7.x 

Zweryfikować:

a2query -m php7.x

Obciążenie:

sudo a2enmod php7.x

Uruchom ponownie apache:

sudo service apache2 restart
girardengo
źródło
Lepiej byłoby użyć a2enmodniż ręcznie skopiować plik między dostępnymi modami a włączonymi modami. a2enmodtworzy dowiązanie symboliczne, więc będziesz mieć tylko jedną kopię konfiguracji.
jkt123
@ jkt123 masz rację. dziękuję za radę, edytuję swoją odpowiedź.
girardengo
W moim przypadku jest napisane: „BŁĄD: moduł php5 nie istnieje!” jest zainstalowany
Marian Klühspies
3
Ubuntu 16.04 z php7 Mam realizowane następujące polecenia w kolejności apt-get install libapache2-mod-php, a2query -m php7.0,service apache2 restart
marlo
Ubuntu 14.04: # a2query -m php7.0 php7.0 (włączone przez administratora strony) Nadal kod php nie jest wykonywany
Ashish Karpe
19

Inną częstą przyczyną jest to, że krótkie tagi php <?nie są włączone przez domyślną konfigurację php.ini, więc po aktualizacji lub ponownej instalacji to ustawienie może zostać wyłączone, a kod php może zależeć od niego. Spróbuj wymienić <?z <?php.

( Kredyt )

tufelkinder
źródło
13

Ubuntu 16.04 zostało przeniesione do PHP 7. To jedno polecenie wykona za Ciebie zadanie:

sudo apt-get install apache2 php libapache2-mod-php

Oto libapache2-mod-phpmeta-pakiet instalujący libapache2-mod-php7.

daltonfury42
źródło
2

Otwórz php.iniw nanoterminalu:

sudo nano /etc/php/php5.6/apache2/php.ini

Następnie zmień:

short_open_tag = Off

do

short_open_tag = On

Następnie zapisz, a następnie uruchom ponownie Apache2:

sudo systemctl restart apache2
Satrio Prasojo
źródło
1
Lub napraw skrypty PHP :-)This directive determines whether or not PHP will recognize code between <? and ?> tags as PHP source which should be processed as such. It is generally recommended that <?php and ?> should be used and that this feature should be disabled [...]
Nicolas Raoul
1

Natrafiłem na ten sam problem, ale mój szczególny problem był wyjątkowy. Działałem w katalogu użytkownika (używając mod_userdir) - co oznacza, że ​​uzyskujesz dostęp do mojej strony za pomocą http://host.name.com/~username/example.php

Jest to domyślnie wyłączone w php * .conf w moim katalogu z włączonymi modami. Musiałem go zmodyfikować, aby skomentować:

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

Trudno było to rozgryźć…

Cóż, wątpię, żeby ktokolwiek miał TEN szczególny problem, ale pomyślałem, że dodam go, ponieważ było to dla mnie kłopotliwe, a MOŻE Ktoś robi to samo. Chyba nikt już nie korzysta z ~ / użytkownika, oprócz mnie.

Oczywiście po tym musisz ponownie uruchomić apache.

Jiminy Idiot
źródło
0

Moja sprawa była trochę inna. Uaktualniłem z Ubuntu 19.04 do 19.10. Podczas aktualizacji zainstalował php 7.3 (gdzie już zainstalowano php 7.2). Po zainstalowaniu 2 wersji a2query -m powrót php7.3 Żaden moduł nie pasuje do php7.3 .

Rozwiązanie, które znalazłem, pochodzi z how-to-install-php-7-3-on-ubuntu .

Aby ustawić PHP 7.0 jako domyślny, uruchom

update-alternatives --set php /usr/bin/php7.0

Aby ustawić PHP 7.2 jako domyślny, uruchom

update-alternatives --set php /usr/bin/php7.2

Aby ustawić PHP 7.3 jako domyślny, uruchom

update-alternatives --set php /usr/bin/php7.3

Zanim będziemy mogli skonfigurować Apache do korzystania z PHP 7.3, musimy wyłączyć starą wersję PHP 7.0, pisząc

a2dismod php7.2

Teraz włącz nowo zainstalowaną wersję PHP 7.3 za pomocą następującego polecenia:

a2enmod php7.3

Uruchom ponownie serwer WWW Apache, aby zmiany odniosły skutek:

sudo systemctl restart apache2
Adeel Raza Azeemi
źródło