web-dev-qa-db-fra.com

Apache n'exécute pas les fichiers PHP, mais me permet de les télécharger

Donc, je configure mon serveur en utilisant this tutorial, et quand le fichier test.php fonctionne sans problème lorsque je saisis l'adresse en utilisant l'adresse IP de mon serveur

http://1.2.3.4/test.php

Cependant, si j'utilise virtualhosts, le navigateur propose simplement de télécharger le fichier plutôt que de l'exécuter. Donc ça:

http://blog.mydomain.com/test.php

propose de télécharger le fichier plutôt que d’exécuter le script.

Le code que j'utilise dans /etc/Apache2/Apache2.conf pour les hôtes virtuels est le suivant:

Include /etc/phpmyadmin/Apache.conf
Include /etc/Apache2/mods-available/php5.conf

<VirtualHost *:80>
    DocumentRoot /path/to/vhosts/folder1
    ServerName www.mydomain.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /path/to/vhosts/folder2
    ServerName blog.mydomain.com
</VirtualHost>

NameVirtualHost *:80

Bien que je dois dire que lorsque je redémarre le serveur Apache2, je reçois un message d'avertissement:

[....] Restarting web server: Apache2
[Sun Jan 19 13:33:40 2014] [warn] NameVirtualHost *:80 has no VirtualHosts ... waiting [Sun Jan 19 13:33:41 2014] [warn] NameVirtualHost *:80 has no VirtualHosts
15

J'ai trouvé la solution ici . Il s'avère que j'ai dû activer certains modules ...


Extrait de cette réponse de débordement de pile par ser1075581 :

Cela m'a enfin mis sur le bon chemin:

http://www.linuxquestions.org/questions/linux-server-73/php-not-working-on-one-vhost-but-works-on-all-others-851093/

Voici la solution:

Dans la section <Directory>, j'ai inclus ces lignes:

<IfModule sapi_Apache2.c>
    php_admin_flag engine on
</IfModule>
<IfModule mod_php5.c>
    php_admin_flag engine on
</IfModule>

Ou bien, un copier/coller de la solution sur mon serveur:

<Directory "/var/www/vhosts/A2/httpdocs">
    <IfModule sapi_Apache2.c>
        php_admin_flag engine on
    </IfModule>
    <IfModule mod_php5.c>
        php_admin_flag engine on
    </IfModule>

    (Other configuration parameters)

</Directory>
0

Je l'ai fait fonctionner avec la ligne:

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

Sudo service Apache2 restart
20
Alastair Mason

Parfois, des choses encore pires peuvent arriver .... J'ai juste oublié d'installer php

4
Tebe

les problèmes de permission peuvent aussi conduire à avoir ce comportement étrange

chmod -R u=rwX,go=rX my_publishing_directory

se débarrasser des problèmes d'autorisation (644 sur les fichiers et 755 sur les répertoires)

0
baobab33

Je cherche cela depuis longtemps et je viens de trouver une solution qui fonctionne dans mon cas. J'avais mis mon fichier (processorder.php5) dans le répertoire /var/www dans une installation standard d'ubuntu. Je pensais que c'était l'endroit où php avait l'air. Mais pour le HTML (ou les fichiers php qui sont probablement considérés comme la même chose), il cherchait /var/www/html, c’est-à-dire le sous-répertoire html de /var/www.

Lorsque j'ai déplacé mon fichier dans un répertoire, cela a fonctionné. Je me méfie parce que je ne pense pas avoir vu cela documenté nulle part

0
Craig Smilovitz