Próbuję wykonać kod PHP w projekcie (używając Dreamweaver), ale kod nie jest uruchamiany.
Kiedy sprawdzam kod źródłowy, kod PHP pojawia się jako tagi HTML (widzę go w kodzie źródłowym). Apache działa poprawnie (pracuję z XAMPP), strony PHP są otwierane poprawnie, ale kod PHP nie jest wykonywany.
Czy ktoś ma sugestie na temat tego, co się dzieje?
Uwaga: plik ma już nazwę jakofilename.php
Edycja: Kod ..:
<?
include_once("/code/configs.php");
?>
<?
zamiast<?php
?<?
). Są przestarzałe, tak naprawdę nie działają w wielu miejscach, a poza tym są zupełnie niepotrzebne. Zapisanie trzech naciśnięć klawiszy nie jest prawidłowym powodem, aby pozwolić na awarię kodu na prawdopodobnie połowie serwerów, na których może on działać.short_open_tag
ustawienia.<?=
), które powinny działać poprawnie na php 5.4+ bez względu na ustawienia serwera.Odpowiedzi:
Wygląda na to, że coś jest nie tak z konfiguracją, oto kilka rzeczy, które możesz sprawdzić:
Upewnij się, że PHP jest zainstalowany i działa poprawnie. Może to zabrzmieć głupio, ale nigdy nie wiadomo. Łatwym sposobem sprawdzenia jest uruchomienie
php -v
z wiersza poleceń i sprawdzenie, czy zwraca informacje o wersji lub błędy.Upewnij się, że moduł PHP znajduje się na liście i nie ma komentarza w httpd.conf twojego Apache. Powinno to być coś
LoadModule php5_module "c:/php/php5apache2_2.dll"
w stylu pliku. WyszukajLoadModule php
i upewnij się, że nie ma;
przed nim komentarza ( ).Upewnij się, że plik httpd.conf Apache ma w nim typ PHP MIME. Tak powinno być
AddType application/x-httpd-php .php
. To mówi Apache, aby uruchamiał.php
pliki jako PHP. Wyszukaj AddType, a następnie upewnij się, że jest wpis dla PHP i że nie jest on komentowany .Upewnij się, że plik ma
.php
rozszerzenie lub dowolne rozszerzenie określone w definicji MIME w punkcie # 3, w przeciwnym razie nie zostanie wykonane jako PHP.Upewnij się, że nie używasz krótkich tagów w pliku PHP (
<?
), nie są one domyślnie włączone na wszystkich serwerach i ich użycie jest odradzane. Użyj<?php
zamiast (lub włączyć krótkie znaczniki w pliku php.ini zeshort_open_tag=On
jeśli masz kod, który opiera się na nich).Upewnij się, że uzyskujesz dostęp do swojego pliku przez serwer sieciowy, używając adresu URL takiego jak
http://localhost/file.php
nie poprzez dostęp lokalnyfile://localhost/www/file.php
Na koniec sprawdź instrukcję PHP, aby uzyskać dalsze wskazówki dotyczące instalacji .
źródło
AddType application/x-httpd-php .php
. Wielkie dzięki!!apt-get purge apache2; apt-get install apache2 libapache-mod-php5
.php
rozszerzeniem z zawartością<?php echo("Success"); ?>
i sprawdź, czy dostęp do pliku przez przeglądarkę internetową powoduje wyświetlenie „Sukcesu” bez powiązanego kodu PHP.php7:
źródło
sudo a2enmod proxy_fcgi setenvif
tworzy trzy nowe mody/mods-available/proxy.conf proxy_fcgi.load proxy.load
Podobnie,sudo a2enconf php7.0-fpm
tworzy plik konfiguracyjny/conf-available/php7.0-fpm.conf
Po zakończeniu tej czynności Apache2 może następnie uruchomić moduł PHP7 jako usługę szybkiego CGI.Używam Apache na Ubuntu i moim problemem było to, że w
/etc/apache2/mods-available/php5.conf
pliku brakuje tego:Dodałem go z powrotem i php poprawnie analizował pliki php.
źródło
uwaga dla użytkowników php 7, dodaj to do pliku httpd.conf:
źródło
httpd.conf
Plik znajduje się w/etc/apache2/httpd.conf
Jeśli używasz Ubuntu, byłobyapache2.conf
w tym samym katalogu, który musi zostać zmodyfikowany do PHP7.Znalazłem inny problem powodujący ten problem i już go rozwiązałem. Przypadkowo zapisałem swój skrypt w
UTF-16
kodowaniu. Wygląda na to, że PHP5<?php
domyślnie nie rozpoznaje tagu w kodowaniu 16-bitowym.źródło
Publikuję tę odpowiedź, ponieważ mój interfejs administracyjny Virtualmin / Webmin uznał, że dobrym pomysłem jest wyłączenie mojego silnika PHP. Znalezienie rozwiązania zajęło mi trochę czasu, więc pomyślałem, że podzielę się tym z wami:
Upewnij się również, że żaden plik konfiguracyjny Twojej witryny związany z tym konkretnym hostem lub wirtualnym hostem nie zawiera żadnych wartości php_admin_value, które wyłączają PHP, jak poniżej:
W razie wątpliwości skomentuj to ...
I uruchom ponownie serwer WWW.
źródło
/etc/apache2/mods-enabled/php7.conf
lubphp5.conf
sudo grep php_admin_value /etc/* -R
Właśnie otwierasz plik php w przeglądarce. Musisz go otworzyć, używając adresu localhost. jeśli otworzysz plik bezpośrednio ze swojego katalogu, w żadnym wypadku nie wykona on kodu php.
użyj:
http://locahost/index.php
lubhttp:127.0.0.1/index.php
Włącz krótki kod php. W twoim przypadku używasz
<?
krótkiego kodu php<?php
. Domyślnie krótkie kody php są wyłączone.Użyj także:
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
jeśli jesteś użytkownikiem Ubuntu.źródło
Wiem, że to powinno zabrzmieć głupio ... ale rzadko się zdarza.
Sprawdź, czy próbujesz wykonać php z
i nie z
ps> możesz zauważyć, że jeśli piszesz z powłoki
odpowiada kodem (oznacza to funkcje php) ..
źródło
Zdarzyło mi się to ponownie, wraz z serwerem pobierającym pliki HTML zamiast przetwarzać. Przez pewien czas nie korzystałem z apache serwera WWW i tymczasem Ubuntu zaktualizowało się o dwie kolejne wersje z oryginalnie zainstalowanego LTS. Teraz jest
Więc php działał tak:
Serwer WWW teraz analizował php. Może teraz muszę zaktualizować niektóre strony, ponieważ php7.0 działa teraz tak, jak było przed uruchomieniem php5. No cóż.
źródło
Rozwiązałem to, odinstalowując XAMPP i instalując WAMP. Dzięki za pomoc.
źródło
Napotkałem ten problem na php 7.1, który jest dostarczany z High Sierra (OS X 10.13.5), edycja
/etc/apache2/httpd.conf
z następującymi zmianami pomogła:Odkomentuj tę linię
Wklej następujące na końcu
źródło
na mojej instalacji Ubuntu 14.04, apache 2.4, php 5.5.9, próbowałem z sample.php na / var / www / html (domyślny katalog główny dokumentu) i działało dobrze. Problem dotyczył mojej konfiguracji serwerów wirtualnych. Rozwiązaniem było włączenie w katalogu def zawierającym plik .php tej linii:
źródło
miałem podobny problem, ale w moim przypadku rozwiązanie było inne. mój plik zawierający kod php nazywał się „somename.html”, zmieniłem go na „somename.php” działał dobrze
źródło
Aby świeżo skonfigurować LAMP z uruchomionym php 7, edytuj plik /etc/httpd/conf/httpd.conf Uwaga: upewnij się, że wykonałeś kopię zapasową przed zmianą.
Wklej to na samym dole pliku:
Następnie wyszukaj LoadModule i wklej następujący wiersz:
Ta linia po prostu poprosi httpd o załadowanie modułu php 7
Następnie uruchom ponownie httpd
źródło
Sprawdź wszystkie zainstalowane pakiety php, używając:
Zainstaluj wszystkie odpowiednie pakiety php , zwłaszcza php-devel na swoim komputerze.
źródło
Upewnij się, że skrypt zawiera
przed kodem, który powinien zostać wykonany. Nie powinno być przestrzeń pomiędzy
<?
iphp
w tym.źródło
To było w moim .htaccess
index.html zawierał kod PHP. Domyślnie PHP nie przetwarza plików o rozmiarach takich jak htm * jako kod PHP.
Możesz to zmienić, dodając do .htaccess:
źródło
Myślę, że problem polega na tym, że wyświetla kod zamiast wyniku, ponieważ nie idzie do lokalnego hosta. sprawdź ponownie, pod jakim adresem jesteś. idziesz do lokalnego katalogu plików lub do lokalnego hosta.
ze zrzutu ekranu, który wysłałeś, będzie na twoim komputerze, a nie na localhost.
„file: ///” powinien być „localhost /”
źródło
Ponowna instalacja
mcrypt
modułu działała dla mnie.źródło
Miałem przypadek, że przypadkowo zacząłem odznaczać katalog plików w katalogu głównym. Dodał plik .htaccess z mojego folderu plików, który zablokowałby wszystkie php
Dolna linia sprawdź plik .htaccess w katalogu głównym.
źródło
Jeśli masz taką konfigurację:
Odkomentuj następne wiersze w pliku httpd.conf
Mi to pasuje
źródło
Dodaj
AddType application/x-httpd-php .php
do pliku httpd.conf, jeśli używasz Apache 2.4źródło
Właśnie spędziłem godziny próbując uruchomić PHP 5 z Apache 2.4 na Windows 10 . Wreszcie dla mnie była to literówka w httpd.conf
LoadModule
. Zwrócił uwagę na pisanie i dokładną ścieżkę modułu przez ostatnią odpowiedź w tym wątku apachelounge z denny2018 . Dziękuję Ci!Miałem,
LoadModule php5_module "c:/php/php5apache2.dll"
ale poprawne dla Apache 2.4 jest:Więc też tęskniłem za
_4
wcześniej (dla apache 2.4 ). Pełny fragment kodu, który działał dla mnie:Właśnie wypróbowałem PHP 7 . Tam czyta
LoadModule
wiersz w httpd.conf dla Apache 2.4Obecnie php manual pokazuje,
c:/php/php5apache2.dll
które oczywiście należy dostosować.źródło
w moim przypadku (Apache / 2.4.34),
po odkomentowaniu konkretnego modułu
od
mój problem zniknął.
źródło
Jeśli jesteśmy na tej samej stronie, wykonaj następujące czynności
sudo apt-get install php -y
sudo apt-get install php-{bcmath,bz2,intl,gd,mbstring,mysql,zip,fpm} -y
Aby włączyć PHP 7.2 FPM w Apache2:
a2enmod proxy_fcgi setenvif
a2enconf php7.2-fpm
aktualizacja 2: Apache pobiera plik .php zamiast renderowania
Potem stanąłem przed powyższym problemem. Istnieją podobne pytania, takie jak ten .
Nie wiem dlaczego, ale stało się tak tylko w przypadku moich plików .php w
/var/www/html/
folderze głównym. wszystko było w porządku dla podkatalogów. (na przykład Wordpress i phpmyadmin działały dobrze)Oto moje rozwiązanie. Zdecydowałem się włączyć moduł php. więc uruchomiłem polecenie:
a2enmod php7.2
ale dostałem te błędy:
więc postanowiłem wyłączyć mpm, uruchamiając następujące polecenia:
następnie uruchom ponownie Apache:
systemctl restart apache2
następnie włącz php7.2 (moja zainstalowana wersja):
sudo a2enmod php7.2
i teraz wszystko działa dobrze.
źródło
Inną możliwą przyczyną tego problemu może być to, że próbujesz uruchomić skrypt w „katalogu użytkownika” z
UserDir
modułu. Uruchamianie skryptów PHP w katalogach użytkowników jest domyślnie wyłączone. Ten problem napotkasz, jeśli skrypt znajduje się wpublic_html
katalogu w 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źródło
plik, który umieścisz w / var / www / html / powinien mieć .php na przykład przykład.php, jeśli jest to przykład, nie działa, ale jeśli zmienisz go na example.php, to zadziała.
źródło