web-dev-qa-db-fra.com

Apache Virtual Host n'analyse pas PHP

J'ai décidé d'activer les hôtes virtuels sur mon serveur Apache et j'ai choisi de le rendre basé sur les ports.

La première chose que j'ai faite, bien sûr, était RTM. J'ai suivi les instructions trouvé ici . Eh bien, cela a fonctionné - en quelque sorte. En ce qui concerne l'hôte virtuel en cours d'exécution, il le fait. Le contenu tiré de: 80 est différent de: 8080.

Mais PHP ne fonctionne pas. Le "site d'origine", (port 80) exécute PHP tout simplement génial. Le site du port 8080 envoie toutefois le PHP au navigateur. Je ne vois rien dans le navigateur, mais le code source indique:

<?php
echo "It worked!";
?>

Ce sujet semble être très vaguement documenté sur quelques sites Web, mais soit je n'y trouve aucune solution, soit la solution indiquée ne fonctionne pas pour moi.

Encore une fois, l'hôte virtuel lui-même fonctionne correctement. PHP, en revanche, n'est pas.

Des idées sur ce que cela pourrait être? Quel contenu de mon fichier httpd.conf dois-je fournir pour que je ne fasse pas exploser ma question en copiant/collant le tout?

(Désolé d'avoir oublié de signaler que j'avais ces documents en place, Phil. Ajout pour éviter toute confusion supplémentaire)

Listen 80
Listen 8080

NameVirtualHost *:80
NameVirtualHost *:8080

<VirtualHost *:80>
    ServerName mysite.com
    DocumentRoot /var/www/vhosts/Site1/httpdocs
</VirtualHost>

<VirtualHost *:8080>
    ServerName mysite.com
    DocumentRoot /var/www/vhosts/Site2/httpdocs
</VirtualHost>

J'ai essayé d'ajouter ceci à l'intérieur des tags:

AddHandler php5-script .php
AddType text/html .php

...mais en vain.

20
user1075581

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 rédigé 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>
17
user1075581

Cela pourrait également être dû aux fichiers php utilisant les balises php courtes <? au lieu de <?php. Par défaut, les balises courtes ne sont pas activées dans le fichier de configuration php.ini.

25
Ricky Theil

Votre réponse n'a pas fonctionné pour moi.

Pour Ubuntu 12.04:

Sudo a2enmod php5
Sudo service Apache2 restart

Cela l'a fait. 

source: https://help.ubuntu.com/community/ApacheMySQLPHP

5
Lazik

Dans mon cas, le problème a été résolu en exécutant apt-get install libapache2-mod-php.

Cela a fonctionné pour moi menthe 18.3 - php7

4
LostMyGlasses

Pour ma configuration, j'ai dû ajouter cette ligne à l'hôte virtuel (à l'intérieur de <Directory>):

AddType application/x-httpd-php .php
2
Jesús Carrera

Dans mon cas, c'était un paramètre par défaut dans php.conf. Ça dit:

# Running PHP scripts in user directories is disabled by default

Vérifiez votre php.conf (pour PHP 7.1, c'est donc /etc/Apache2/mods-enabled/php7.1.conf) et commentez les lignes mentionnées:

   root@zxxxx:/home/pxxx/public_html# vi /etc/Apache2/mods-enabled/php5.conf
   # 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.
       <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            ***php_admin_flag engine On*** -> Turn this option ON
        </Directory>
    </IfModule>
1
Edwin Chaidir

Je vais devoir charger un centos vm pour vérifier la configuration Apache, mais sur Ubuntu, j'ai beaucoup plus d'informations dans ma configuration sous le virtualHost

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>
1
Erik

Assurez-vous que la ligne suivante qui charge le module php n'est pas commentée - 

LoadModule php5_module libexec/Apache2/libphp5.so
1
agaase

la seule chose qui m'a aidé après tout essayé add Apache2.conf

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

Cela m'a aidé à sortir a2enmod php5, si le module n'existe pas, réinstallez lamp-server en tapant apt-get install lamp-server^

0
Tmute