Apache downloadt php-bestanden in plaats van ze weer te geven

OS- en serverinformatie:

  • CentOS 6.4 (finale)
  • Apache 2.2.15
  • PHP 5.5.1

Ik had eerder php 5.3.x geïnstalleerd, maar besloot te upgraden. Ik heb eerst de php 5.3.x verwijderd en vervolgens php 5.5.1 geïnstalleerd, maar nadat de installatie was voltooid, heeft apache de php-bestanden niet geparseerd, maar ze gewoon gedownload. Ik heb soortgelijke vragen hier in stackoverflow gecontroleerd, maar geen van hen heeft me tot nu toe geholpen.

Voor de goede orde, ik heb de volgende regels in mijn httpd.conf en php.conf die php zouden moeten laten werken, maar niet doen:

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

Ik zou alle hulp zeer op prijs stellen.
Dank je.

BEWERKEN:

Ik heb deze regels in de php.conf

<IfModule !worker.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>

BEWERKEN:

Door de

. te verwijderen

AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml

apache downloadt het bestand niet meer. Nu toont apache de broncode, maar niet alles slechts een deel. Ik heb toegevoegd

AddType text/html .php

maar geen geluk.


Antwoord 1, autoriteit 100%

Het juiste AddType voor php is application/x-httpd-php

AddType  application/x-httpd-php         .php
AddType  application/x-httpd-php-source  .phps

Zorg er ook voor dat je php-module is geladen

LoadModule php5_module        modules/mod_php55.so

Als je apache configureert, probeer dan de pagina vanuit een andere browser te bekijken – ik heb dagen gehad dat Chrome het resultaat koppig in de cache opslaat en het blijft de broncode downloaden terwijl het in een andere browser prima gaat.


Antwoord 2, autoriteit 30%

Ik kwam dit probleem vandaag tegen en geen van de beschreven oplossingen werkte voor mij. Dus hier is een andere mogelijke oorzaak:

Als je iets hebt als

AddHandler x-mapp-php6 .php3 .php4 .php .phtml

in een .htaccess-bestand van uw webcontentmap, kan dit ertoe leiden dat uw PHP-scripts niet meer werken. In mijn geval kende de server het type x-mapp-php6niet, aangezien dat .htaccess-bestand iets was dat ik importeerde van een andere webhost toen ik de website-inhoud overbracht .

Het verwijderen van de regel AddHandleruit het bestand .htaccessloste het voor mij op.


Antwoord 3, autoriteit 19%

Na veel worstelen heb ik het probleem eindelijk opgelost.

Als je wordt gevraagd om een .php-bestand te downloaden in plaats van het uit te voeren, dan is hier de perfecte oplossing: ik neem aan dat je PHP5 al hebt geïnstalleerd en nog steeds deze foutmelding krijgt.

$ sudo su
$ a2enmod php5

Dit is het.

Maar als je nog steeds de foutmelding krijgt:

Config file php5.conf not properly enabled: /etc/apache2/mods-enabled/php5.conf is a real file, not touching it

doe dan het volgende:

Het blijkt dat bestanden niet moeten worden opgeslagen in mods-enabled, maar eerder in mods-available. Er moet dan een symbolische link worden gemaakt in mods-enabled die verwijst naar het bestand dat is opgeslagen in mods-available.

Verwijder eerst het origineel:

$ mv /etc/apache2/mods-enabled/php5.conf /etc/apache2/mods-available/

Maak vervolgens de symbolische link:

$ ln -s /etc/apache2/mods-available/php5.conf /etc/apache2/mods-enabled/php5.conf

Ik hoop dat je probleem is opgelost.


Antwoord 4, autoriteit 8%

Kijk eens naar je addtype-richtlijnen.

Het lijkt erop dat Apache de browser vertelt dat het een documenttype applicatie/php verzendt voor scripts met extensies zoals .php5. In feite wordt Apache verondersteld de browser te vertellen dat het script tekst/html uitvoert.

Probeer dit:

AddType text/html .php

Met betrekking tot de suggestie hierboven dat je de browser moet vertellen dat je een PHP-script uitvoert: het leek me een ongewoon idee. Ik googlede en ontdekte dat er nogal wat discussie over is op internet. Blijkbaar zijn er gevallen waarin je zou willen zeggen dat je een PHP-script verzendt (hoewel Apache verondersteld wordt het script uit te voeren en tekst/html uit te zenden), en er zijn ook gevallen waarin de browser die specifieke Mime gewoon niet herkent. Type.

Het is altijd een goed idee om je browsercache te wissen.

In het geval dat het nuttig is, hier is een kopie van mijn /etc/httpd/conf.d/php.conf-bestand van een server met 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

Antwoord 5, autoriteit 6%

Als uw .htaccess zoiets heeft…
AddHandler-toepassing/x-httpd-php53 .php .php5 .php4 .php3
becommentarieer het dan en probeer het opnieuw te vernieuwen, dit werkte voor mij…


Antwoord 6, autoriteit 6%

Dit kan gebeuren door de ontbrekende modules die nodig zijn voor uw php.
Ervan uitgaande dat je php7 hebt geïnstalleerd, zoek dan beschikbare php7-modules met

sudo apt-cache search php7-*

Bovenstaande opdracht geeft een lijst van alle beschikbare PHP7-modules voor installatie.
U kunt beginnen met de installatie van modules zoals,

sudo apt-get install libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json

Antwoord 7, autoriteit 4%

Ik heb hetzelfde probleem. Apache laadt geen php-bestanden van een bepaalde website, maar downloadt deze. Ik las dit bericht en de antwoorden en ik heb gezien dat ik deze regel op de laatste plaats van het .htaccess-bestand heb:

AddHandler x-mapp-php5.5  .php

Ik heb er een opmerking over gemaakt en alles werkt prima.

Allemaal bedankt!!!


Antwoord 8, autoriteit 4%

Na het updaten van PHP naar 7.3 werden PHP-scripts uitgevoerd met www-datain plaats van $USERzoals voorheen.

Ik moest PHP-FPM opnieuw installeren en activeren :

sudo apt-get install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo service apache2 restart
sudo a2enconf php7.3-fpm
sudo service apache2 restart

Om er zeker van te zijn dat alles in orde was voor Virtualmin, heb ik de wizard Configuratie opnieuw controleren/virtual-server/check.cgigebruikt, onder Vitualmin/Systeeminstellingen.

Daarna was Apache/PHP php-bestanden aan het downloaden in plaats van ze uit te voeren. Dus ik moest /etc/apache2/mods-available/php7.3.confbewerken om commentaar te geven op de rij SetHandler application/x-httpd-phpzoals hieronder:

<FilesMatch ".+\.ph(ar|p|tml)$">
#    SetHandler application/x-httpd-php
</FilesMatch>

Nadat ik Apache opnieuw had opgestart, loste het mijn probleem op, ik hoop dat dit helpt.

Zorg ook voor de browsercache.

Mijn systeem :

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

Antwoord 9, autoriteit 2%

Ik had eerder een soortgelijk probleem, na een upgrade van 5.3 naar 5.4. Maar mijn setup ziet er een beetje anders uit, omdat ik Debian gebruik en fcgid gebruik om de PHP-pagina’s te server, en niet de PHP5 apache/cgi-module.
Dus nadat ik de upgrade had uitgevoerd, installeerde het ook php5_cgi, dat botste met mijn fcgid-configuratie, en geen PHP-bestanden meer zou uitvoeren.

Ik moest de Apache-module uitschakelen en Apache opnieuw opstarten

a2dismod php5_cgi
/etc/init.d/apache2 restart

Zodra de php5_cgi-module uit de weg was, kon fcgid weer PHP-pagina’s bedienen.


Antwoord 10, autoriteit 2%

Ik had vergelijkbare symptomen, maar nog een andere oplossing:
in /etc/apache2/mods-enabled/php5.conf stond een nuttig advies in de opmerking, die ik volgde:

# To re-enable php in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.

Antwoord 11, autoriteit 2%

In het geval dat iemand php7 gebruikt onder een Linux-omgeving

Zorg ervoor dat u php7 inschakelt

sudo a2enmod php7

Herstart de mysql-service en Apache

sudo systemctl restart mysql
sudo systemctl restart apache2

Antwoord 12

Ik heb dit twee dagen gevolgd en kwam erachter dat ik mijn PHP-scripts in de verkeerde directory plaatste.

Op mijn standaard Ubuntu-installatie plaatste ik de scripts in /var/www. Ze hadden in /var/www/htmlmoeten staan.

Ik ben net begonnen met PHP-werk, dus ik weet niet of mijn oplossing betrekking heeft op de versiewijziging die je hebt doorgemaakt.


Antwoord 13

dit loste het probleem voor mij op (ik heb php7 geïnstalleerd):

sudo apt-get install libapache2-mod-php7.0

sudo-service apache2 opnieuw opstarten


Antwoord 14

Ik had dit probleem. Het bleek dat ik zowel nginx als apache had geïnstalleerd en automatisch startte bij het opstarten. Het probleem was dat nginx eerst aan de http-poort gebonden was, waardoor apache niet kon starten.


Antwoord 15

Het is ook mogelijk dat nginx draait, maar je php is ingesteld om met apache te werken. Om te verifiëren, voert u service nginx statusen service apache2 statusuit om te zien welke actief is. In het geval dat nginx actief is en apache niet, voer dan gewoon sudo service nginx stop; sudo service apache2 starten uw server zal nu php-bestanden aanbieden zoals verwacht.


Antwoord 16

Ok… Ik weet dat er al 1.000.000 antwoorden op deze vragen zijn, – maar ik heb er minstens 6 effectieve uren aan besteed om dit uit te zoeken; en ik heb het honderden keren gegoogled en heb er geen enkel bericht over gevonden. Dus ik dacht dat ik de oplossing voor mijn probleem hier zou toevoegen.

De conclusie

Als ik deze twee regels becommentarieerde in mijn .conf-bestanden in het /etc/apache2/[[SERVER-NAME].conf-bestand:

php_admin_value engine Off
IPCComTimeout 31

Ik heb geen idee wat ze doen of hoe ze daar zijn, – maar het is in elk van mijn .conf-Files. En als ik die lijnen en zorg voor Dat er een symlink is in /etc/apache2/sites-enabled/-folder, dan downloadt het de index.php niet – en elke werken zoals het zou moeten.

het hele verhaal

Ik heb virtualmin geïnstalleerd op een Ubuntu 16.04 VPS. Ik heb een upgrade naar PHP-versie 7.2. Kort daarna heeft ik de Ubuntu-versie bijgewerkt en een ‘kernel-offset: gehandicapte’ fout geslagen. Dus ik moest de nieuwste Ubuntu-versie verwijderen, – en wanneer mijn OS opnieuw opstond: Boom! Ik kreeg de fout waar zijn post over spreekt: voor elke site op mijn VPS, heeft het eenvoudig de index.php gedownload in plaats van het te laten zien.

Ik probeerde allerlei dingen:

  • verwijderde PHP7.2 en installeerde PHP5.6 (ik weet nu dat de PHP-versie er niets mee te maken heeft; het is de Apache-configuratie die werk nodig heeft).
  • probeerde Apache-modules in te schakelen en uit te schakelen, op de bestaande installatie, maar zonder geluk.
  • Dan i Apache volledig verwijderen en installeer het opnieuw, waar – na het probleem nog daar!
  • probeerde rond te spelen met de Setup Virutal Server in VirtualMin (WebMin & GT; & GT; Servers & GT; & GT; Apache Webserver).
  • De configuratie gecontroleerd op een enkele virtuele server ( Virtualmin >> Systeeminstellingen >> Configuratie opnieuw controleren)… Deze stap was best aardig, omdat het vertelde welke module in Apache ontbrak; waarna ik het kon inschakelen met a2enmod [MODULE_NAME]. En ik vond de modulenaam door rond te Googlen. Ik moest ongeveer 6-8 modules activeren voordat ik voorbij die stap in de validatie kwam – en het duurde een paar minuten voordat de cache op was – dus dit was een vervelende stap.
  • En als laatste, ik bedacht de hierboven geschreven conclusie – samen met de symbolische links, – en toen kreeg ik het aan het werk. Ik moest het echter voor elke site op mijn VPS doorlopen.

Antwoord 17

Ik had dit probleem en als je eigenlijk nooit met je serverconfiguratie-instellingen hebt gespeeld, dan zit je probleem voor 90% in je .htaccess-bestand

U wijzigt het .htaccess-bestand LOKAAL of verwijdert het (LOKAAL)


Antwoord 18

Ik had een soortgelijk probleem als de OP bij het upgraden van php5 van een oudere versie naar 5.5.9, de versie die is geïnstalleerd met Mint 17.

Ik voer een LAMP-configuratie uit op een machine in mijn lokale netwerk, die ik gebruik om wijzigingen aan websites te bekijken voordat ik die wijzigingen upload naar de daadwerkelijke live-server. Dus ik onderhoud een perfecte lokale spiegel van de eigenlijke site.

Na de upgrade zouden bestanden die perfect draaien en weergeven op de eigenlijke site niet of alleen html op de lokale computer weergeven. PHP is niet geparseerd. De opdracht phpinfo() werkte, dus ik wist dat php anders werkte. Het logboek leverde geen fouten op. Bij het bekijken van de paginabron zag ik de daadwerkelijke php-code.

Ik had een test.php-pagina gemaakt die de volgende code bevatte:

<?php
phpinfo();
?>

Dit werkte. Toen ontdekte ik dat toen ik <?phpveranderde in <?de opdracht niet meer werkte. Al mijn php-sites gebruiken <?in plaats van <?php, wat misschien niet ideaal is, maar het is de realiteit. Ik heb het probleem opgelost door naar /etc/php5/apache2 te gaan, te zoeken naar “short_open_tag” en de waarde te wijzigen van Uit in Aan.


Antwoord 19

Als geen van bovenstaande werkt,

probeer commentaar te geven op de regel

SetHandler ....

en herstart apache met

/etc/init.d/httpd restart

Het zou moeten werken!


Antwoord 20

PHP56

vim /etc/httpd/conf/httpd.conf

LoadModule php5_module        libexec/apache/libphp5.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Antwoord 21

Ik heb dit soort problemen. Zo los ik het op.
Nadat ik Apachehad geïnstalleerd, installeerde ik PHPmet dit commando.

sudo apt-get install php libapache2-mod-php

het wordt correct uitgevoerd, maar ik vraag het bestand .phpop bij Apache, het geeft zonder het PHP-script uit te voeren.

Vervolgens controleer ik of PHP is ingeschakeld.

$ cd /etc/apache2
$ ls -l mods-*/*php*

maar er werden geen resultaten weergegeven. Ik controleer geïnstalleerde PHP-pakketten.

$ dpkg -l | grep php| awk '{print $2}' |tr "\n" " "

Verschillend type PHP versies geïnstalleerd op mijn computer. Dan verwijder ik wat PHP pakketten uit mijn vorige lijst, met Apt-Get Purge .

sudo apt-get purge libapache2-mod-php7.0 php7.0 php7.0-cli php7.0-common php7.0-json

Ik installeer php

sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

Controleer of de PHP-module

is geladen

$ a2query -m php7.0

Zo niet ingeschakeld met:

$ sudo a2enmod php7.0

Start Apache Server

$ sudo systemctl restart apache2

Ten slotte controleer ik php proces op Apache

Maak een leeg bestand

sudo vim /var/www/html/info.php

Voeg deze inhoud toe aan info.php & amp; Opslaan.

<?php
  phpinfo();
?>

Controleer de browser:

http: //localhost/info.php

het toont correct. Ik denk dat dit iedereen zal helpen.


Antwoord 22

Als je virtualmin hebt, probeer dan deze regels te reageren
In uw Apache-configuratie in / etc / Apache2 / Sites-Beschikbaar

 #RemoveHandler .php
  #RemoveHandler .php7.0
  #php_admin_value engine Off

Antwoord 23

Voor mensen die dit bericht van Google bijna 6 jaar in de toekomst (en daarna!) hebben gevonden, kunt u dit probleem tegenkomen met Apache 2 en PHP 7 terwijl u ook de UserDir-module gebruikt.

Een andere mogelijke oorzaak van dit probleem kan zijn dat u het script probeert uit te voeren in een “gebruikersmap” vanuit de module UserDir. Het uitvoeren van PHP-scripts in gebruikersmappen is standaard uitgeschakeld. U zult dit probleem tegenkomen als het script zich in de map public_htmlin uw thuismap bevindt en u probeert het te openen vanaf http://localhost/~your_username.

Om dit op te lossen, opent u /etc/apache2/mods-enabled/php7.2.conf. Je moet het tagblok onderaan met de tekst

. becommentariëren of verwijderen

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

Antwoord 24

Ik had hetzelfde probleem nadat ik zypper rm php*had gebruikt om PHP te verwijderen en het opnieuw te installeren met zypper in php7 php7-gd php7-gettext php7-mbstring php7-mysql php7-pear

Ik heb het opgelost door de apache2-module in te schakelen en de webserver opnieuw op te starten:

a2enmod php7 && service apache2 restart

Antwoord 25

Toen ik een upgrade van PHP 7.2 naar PHP 7.4 uitvoerde, kreeg ik ook hetzelfde probleem. Werkte door het volgende te doen:-

  1. In [domain].conf file, reageerde het volgende:

    php_admin_value engine Off
    

    En toegevoegd:

    AddType  application/x-httpd-php-source  .phps
    AddType text/html .php
    
  2. Schakel mod 7.2 uit en schakel 7.4 als volgt in:

    a2dismod php7.2
    a2enmod php7.4
    
  3. In het bestand /etc/apache2/mods-enabled/php7.4.confgeef je het volgende commentaar:

    SetHandler application/x-httpd-php
    php_admin_flag engine Off
    

Antwoord 26

Als uw .htaccess zoiets heeft

AddType application/x-httpd-ea-php56 .php .php5 .phtm .html .htm
Previous articlegrootte van struct in C
Next articleHTML Linking CSS

Other episodes