Informacje o systemie operacyjnym i serwerze:
- CentOS 6.4 (finał)
- Apache 2.2.15
- PHP 5.5.1
Wcześniej miałem zainstalowane php 5.3.x, ale zdecydowałem się na aktualizację. Najpierw odinstalowałem php 5.3.x, a następnie zainstalowałem php 5.5.1, ale po zakończeniu instalacji apache nie przeanalizował plików php, po prostu je pobrał. Sprawdziłem tutaj podobne pytania w stackoverflow, ale żadne z nich do tej pory mi nie pomogło.
Dla przypomnienia mam następujące wiersze w moich httpd.conf i php.conf, które powinny sprawić, że php będzie działał, ale nie:
AddHandler application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php-source .phps
AddHandler php5-script .php
Naprawdę doceniłbym każdą pomoc. Dziękuję Ci.
EDYTOWAĆ:
Mam te linie w pliku php.conf
<IfModule !worker.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
LoadModule php5_module modules/libphp5-zts.so
</IfModule>
EDYTOWAĆ:
Usuwając
AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
apache nie pobiera już pliku. Teraz Apache pokazuje kod źródłowy, ale nie wszystko to tylko część. dodałem
AddType text/html .php
ale bez szczęścia.
httpd.conf
czy moduł php jest komentowany, czy nieOdpowiedzi:
Prawidłowy AddType dla php to application / x-httpd-php
Upewnij się również, że moduł PHP jest załadowany
Kiedy konfigurujesz apache, spróbuj wyświetlić stronę z innej przeglądarki - miałem dni, kiedy chrome uparcie buforuje wynik i ciągle pobiera kod źródłowy, podczas gdy w innej przeglądarce jest dobrze.
źródło
/etc/httpd/conf/httpd.conf
Trafiłem dziś na ten problem i żadne z opisanych rozwiązań nie zadziałało. Oto kolejna możliwa przyczyna:
Jeśli masz coś takiego
w
.htaccess
pliku folderu treści WWW może spowodować, że skrypty PHP przestaną działać. W moim przypadku serwer nie znałx-mapp-php6
typu, ponieważ ten.htaccess
plik był czymś, co zaimportowałem z innego hosta internetowego, kiedy przesyłałem zawartość witryny.Samo usunięcie
AddHandler
linii z.htaccess
pliku rozwiązało to za mnie.źródło
AddHandler application/x-httpd-php54 .php54 .php
trzeba było usunąć.Po wielu zmaganiach w końcu rozwiązałem problem.
Jeśli pojawi się monit o pobranie
.php
pliku zamiast jego wykonania, oto idealne rozwiązanie: Zakładam, że masz już zainstalowane PHP5 i nadal pojawia się ten błąd.To jest to.
Ale jeśli nadal otrzymujesz błąd:
Config file php5.conf not properly enabled: /etc/apache2/mods-enabled/php5.conf is a real file, not touching it
następnie wykonaj następujące czynności:
Okazuje się, że pliki nie powinny być przechowywane w
mods-enabled
, ale raczej powinny być przechowywane wmods-available
. Następnie powinno zostać utworzone łącze symboliczne z włączoną obsługą modów, wskazujące na plik przechowywany w mods-available.Najpierw usuń oryginał:
Następnie utwórz dowiązanie symboliczne:
Mam nadzieję, że twój problem został rozwiązany.
źródło
Proszę spojrzeć na swoje dyrektywy addtype.
Wydaje mi się, że Apache informuje przeglądarkę, że wysyła dokument typu aplikacji / php dla skryptów z rozszerzeniami takimi jak .php5. W rzeczywistości Apache powinien powiedzieć przeglądarce, że skrypt wyświetla tekst / html.
Spróbuj tego:
Odnośnie powyższej sugestii, że powinieneś powiedzieć przeglądarce, że drukujesz skrypt PHP: Wydało mi się to niezwykłym pomysłem. Przeszukałem go w Google i stwierdziłem, że w sieci jest dużo dyskusji na ten temat. Najwyraźniej są przypadki, w których możesz chcieć powiedzieć, że wysyłasz skrypt PHP (nawet jeśli Apache ma wykonać skrypt i emitować tekst / html), a są też przypadki, w których przeglądarka po prostu nie rozpoznaje tego konkretnego Mime Rodzaj.
Wyczyszczenie pamięci podręcznej przeglądarki jest zawsze dobrym pomysłem.
Na wypadek, gdyby było to pomocne, oto kopia mojego pliku /etc/httpd/conf.d/php.conf z serwera z systemem CentOS 5.9:
# # PHP is an HTML-embedded scripting language which attempts to make it # easy for developers to write dynamically generated webpages. # <IfModule prefork.c> LoadModule php5_module modules/libphp5.so </IfModule> <IfModule worker.c> LoadModule php5_module modules/libphp5-zts.so </IfModule> # # Cause the PHP interpreter to handle files with a .php extension. # AddHandler php5-script .php AddType text/html .php # # Add index.php to the list of files that will be served as directory # indexes. # DirectoryIndex index.php # # Uncomment the following line to allow PHP to pretty-print .phps # files as PHP source code: # #AddType application/x-httpd-php-source .phps
źródło
Może się tak dziać z powodu brakujących modułów wymaganych dla twojego php. Zakładając, że masz zainstalowane php7, wyszukaj dostępne moduły php7 za pomocą
Powyższe polecenie wyświetli listę wszystkich dostępnych modułów PHP7 do instalacji. Możesz rozpocząć instalację modułów takich jak:
sudo apt-get install libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json
źródło
Jeśli Twój .htaccess ma coś takiego ... AddHandler application / x-httpd-php53 .php .php5 .php4 .php3 to skomentuj to i spróbuj ponownie odświeżyć, to zadziałało dla mnie ...
źródło
Mam ten sam problem. Apache nie ładuje plików php z określonej witryny internetowej, po prostu je pobrał. Przeczytałem ten post i odpowiedzi i zobaczyłem, że w ostatnim miejscu pliku .htaccess mam następującą linię:
AddHandler x-mapp-php5.5 .php
Skomentowałem to i wszystko działa dobrze.
Dziękuje za wszystko !!!
źródło
Wcześniej miałem podobny problem po aktualizacji z 5.3 do 5.4. Ale moja konfiguracja wygląda trochę inaczej, ponieważ używam Debiana i używam fcgid do serwera stron PHP, a nie modułu PHP5 apache / cgi. Więc po aktualizacji zainstalowałem również php5_cgi, który kolidował z moją konfiguracją fcgid i nie uruchamiał już plików PHP.
Musiałem wyłączyć moduł Apache i ponownie uruchomić Apache
Gdy moduł php5_cgi zniknął z drogi, fcgid mógł ponownie obsługiwać strony PHP.
źródło
Miałem podobne symptomy, ale inne rozwiązanie: w /etc/apache2/mods-enabled/php5.conf w komentarzu znalazła się pomocna rada, którą zastosowałem:
źródło
W przypadku, gdy ktoś używa php7 w środowisku Linux
Upewnij się, że włączyłeś php7
Uruchom ponownie usługę mysql i Apache
źródło
Po aktualizacji PHP do wersji 7.3, skrypty PHP były uruchamiane z danymi www zamiast $ USER, jak poprzednio.
Musiałem przeinstalować i aktywować PHP-FPM:
sudo apt-get install php-fpm sudo a2enmod proxy_fcgi setenvif sudo service apache2 restart sudo a2enconf php7.3-fpm sudo service apache2 restart
Aby upewnić się, że wszystko jest w porządku dla Virtualmin , użyłem kreatora ponownego sprawdzenia konfiguracji
/virtual-server/check.cgi
w Vitualmin / Ustawienia systemu .Następnie Apache / PHP pobierał pliki php zamiast je uruchamiać. Musiałem więc edytować,
/etc/apache2/mods-available/php7.3.conf
aby skomentować wiersz,SetHandler application/x-httpd-php
jak poniżej:<FilesMatch ".+\.ph(ar|p|tml)$"> # SetHandler application/x-httpd-php </FilesMatch>
Po ponownym uruchomieniu Apache rozwiązało mój problem, mam nadzieję, że to pomoże.
Zadbaj też o pamięć podręczną przeglądarki.
Mój system:
Ubuntu 16.04.6 LTS Webmin version 1.932 Usermin version 1.780 Virtualmin version 6.08 Apache version 2.4.41 PHP versions 7.3.12 PHP-FPM 7.3.12 Server
źródło
Spędziłem dwa dni na śledzeniu tego i dowiedziałem się, że umieszczam moje skrypty PHP w niewłaściwym katalogu.
Podczas mojej standardowej instalacji Ubuntu umieszczałem skrypty
/var/www
. Powinni być w środku/var/www/html
.Właśnie zacząłem pracę nad PHP, więc nie wiem, czy moje rozwiązanie odnosi się do zmiany wersji, przez którą przeszedłeś.
źródło
to rozwiązało problem dla mnie (mam zainstalowany php7):
sudo apt-get install libapache2-mod-php7.0
restart usługi sudo apache2
źródło
Miałem ten problem. Okazało się, że mam zainstalowany nginx i apache i automatycznie uruchamiam się przy starcie. Problem polegał na tym, że nginx najpierw wiązał się z portem http, co uniemożliwiało uruchomienie Apache.
źródło
Możliwe jest również, że masz uruchomiony Nginx, ale Twój php jest skonfigurowany do pracy z Apache. Aby zweryfikować, uruchomić
service nginx status
iservice apache2 status
zobaczyć, który jest uruchomiony. W przypadku, gdy działa nginx, a apache nie, po prostu uruchom,sudo service nginx stop; sudo service apache2 start
a twój serwer będzie teraz obsługiwał pliki php zgodnie z oczekiwaniami.źródło
Ok… wiem, że jest już 1.000.000 odpowiedzi na to pytanie, - ale spędziłem co najmniej 6 efektywnych godzin, aby to rozgryźć; i przeszukałem go w Google setki razy i nie znalazłem ani jednego wpisu na ten temat. Pomyślałem, że dodam tutaj rozwiązanie mojego problemu.
Konkluzja
Gdybym skomentował te dwie linie w moich plikach
/etc/apache2/[[SERVER-NAME].conf
.conf w -file:php_admin_value engine Off IPCComTimeout 31
Nie mam pojęcia, co robią ani jak się tam dostali, - ale jest to w każdym z moich
.conf
-plików. A jeśli mogę usunąć te linie i upewnić się, że istnieje dowiązanie w/etc/apache2/sites-enabled/
usunę upewnię się, że -folderze , to nie pobierze on pliku index.php - i wszystko działa tak, jak powinno.Cała historia
Mam zainstalowany VirtualMin na Ubuntu 16.04 VPS. Zaktualizowałem PHP do wersji 7.2. Wkrótce potem zaktualizowałem wersję Ubuntu i wybrałem błąd „Kernel Offset: Disabled”. Musiałem więc usunąć najnowszą wersję Ubuntu, - a kiedy mój system operacyjny ponownie się uruchomił: BOOM! Otrzymałem błąd, o którym mówi jego post: dla każdej witryny na moim VPS po prostu pobierał plik index.php zamiast go wyświetlać.
Próbowałem różnych rzeczy:
a2enmod [MODULE_NAME]
. I znalazłem nazwę modułu, szukając w Google. Musiałem aktywować około 6-8 modułów, zanim przeszedłem przez ten krok w weryfikacji - i minęło kilka minut, zanim skończyła się pamięć podręczna, - więc zrobienie tego było żmudnym krokiem.źródło
Miałem ten problem i jeśli faktycznie nigdy nie bawiłeś się ustawieniami konfiguracji serwera, to twój problem jest w 90% w pliku .htaccess
Możesz albo modyfikować plik .htaccess LOKALNIE, albo go usunąć (LOKALNIE)
źródło
Miałem podobny problem do OP podczas aktualizacji php5 ze starszej wersji do 5.5.9, czyli wersji zainstalowanej z Mint 17.
Uruchamiam konfigurację LAMP na komputerze w mojej sieci lokalnej, której używam do podglądu zmian w witrynach internetowych przed przesłaniem tych zmian na rzeczywisty serwer aktywny. Dlatego utrzymuję doskonałe lokalne lustro rzeczywistej witryny.
Po uaktualnieniu pliki, które działają i wyświetlają się doskonale w rzeczywistej witrynie, nie byłyby wyświetlane lub wyświetlałyby się tylko html na komputerze lokalnym. PHP nie zostało przeanalizowane. Polecenie phpinfo () działało, więc wiedziałem, że php działa inaczej. Dziennik nie wygenerował żadnych błędów. Wyświetlenie źródła strony pokazało mi rzeczywisty kod php.
Skonstruowałem stronę test.php, która zawierała następujący kod:
<?php phpinfo(); ?>
To zadziałało. Wtedy odkryłem, kiedy zmienił
<?php
się<?
w komendzie nie pracował. Wszystkie moje strony php używają<?
zamiast tego<?php
może nie być idealne, ale taka jest rzeczywistość. Rozwiązałem problem, przechodząc do / etc / php5 / apache2, wyszukując „short_open_tag” i zmieniając wartość z Off na On.źródło
Jeśli żadne z powyższych nie działa,
spróbuj wykomentować linię
i uruchom ponownie Apache za pomocą
Powinno działać!
źródło
PHP56
vim /etc/httpd/conf/httpd.conf
źródło
Mam taki problem. Oto jak to rozwiązuję. Po zainstalowaniu Apache zainstalowałem PHP za pomocą tego polecenia.
działa poprawnie, ale żądam pliku .php z Apache, daje bez uruchamiania PHP skryptu .
Następnie sprawdzam, czy PHP jest włączone.
$ cd /etc/apache2 $ ls -l mods-*/*php*
ale nie pokazało żadnych wyników. Sprawdzam zainstalowane pakiety PHP.
$ dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
Zainstalowano różne wersje PHP na moim komputerze. Następnie usuwam niektóre pakiety PHP z mojej poprzedniej listy, używając apt-get purge .
sudo apt-get purge libapache2-mod-php7.0 php7.0 php7.0-cli php7.0-common php7.0-json
Ponownie instaluję PHP
Sprawdź, czy moduł PHP jest załadowany
$ a2query -m php7.0
jeśli nie włączono:
$ sudo a2enmod php7.0
Zrestartuj serwer Apache
Na koniec sprawdzam, czy proces PHP jest włączony Apache
utwórz pusty plik
sudo vim /var/www/html/info.php
Dodaj tę zawartość do info.php i zapisz.
<?php phpinfo(); ?>
Sprawdź w przeglądarce:
pokazuje się poprawnie, myślę, że to pomoże każdemu.
źródło
Jeśli masz virtualmin, spróbuj wykomentować te linie w konfiguracji Apache w / etc / apache2 / sites-available
#RemoveHandler .php #RemoveHandler .php7.0 #php_admin_value engine Off
źródło
Kiedy zaktualizowałem PHP 7.2 do PHP 7.4, mam również ten sam problem. Pracował wykonując następujące czynności: -
W
[domain].conf file
, skomentował:php_admin_value engine wyłączony
I dodał:
Wyłącz mod 7.2 i włącz 7.4, wykonując następujące czynności:
a2dismod php7.2
a2enmod php7.4
W
/etc/apache2/mods-enabled/php7.4.conf
pliku skomentuj:Aplikacja SetHandler / x-httpd-php
php_admin_flag engine wyłączony
źródło
Dla osób, które znalazły ten post od Google prawie 6 lat w przyszłości (i nie tylko!), Możesz napotkać ten problem z Apache 2 i PHP 7, jednocześnie korzystając z
UserDir
modułu.Inną możliwą przyczyną tego problemu może być próba uruchomienia skryptu w „katalogu użytkownika” z
UserDir
modułu. Uruchamianie skryptów PHP w katalogach użytkownika jest domyślnie wyłączone. Napotkasz ten problem, jeśli skrypt znajduje się wpublic_html
katalogu w twoim folderze domowym i próbujesz uzyskać do niego dostęphttp://localhost/~your_username
.Aby to naprawić, otwórz
/etc/apache2/mods-enabled/php7.2.conf
. Musisz skomentować lub usunąć blok znaczników na dole, który czyta<IfModule mod_userdir.c> <Directory /home/*/public_html> php_admin_flag engine Off </Directory> </IfModule>
źródło
Miałem ten sam problem po
zypper rm php*
odinstalowaniu PHP i ponownej instalacji zzypper in php7 php7-gd php7-gettext php7-mbstring php7-mysql php7-pear
Rozwiązałem to włączając moduł Apache2 i restartując serwer WWW:
źródło
Jeśli Twój .htaccess ma coś takiego
źródło