2010-02-04 14 views
8

Je suis nouveau sur PHP. J'ai installé XAMPP et ai exécuté Apache. J'ai créé helloworld.php dans les htdocs de XAMPP et j'ai pu afficher PHP dans mon navigateur. Ma question est, pourquoi mon script PHP dans mon fichier HTML ne s'affiche pas dans mon navigateur? Ive n'a jamais installé PHP seul. Devrais-je également l'installer? Cela entrerait-il en conflit avec XAMPP. Mon code est ci-dessous. Toute aide sera appréciée. Merci à l'avance:Le script PHP ne fonctionne pas dans le fichier HTML

<html> 
<body> 

<?php 
echo "Hello PHP World"; 
?> 

</body> 
</html> 
+0

Avez-vous eu l'intention de poster plus de code? –

+0

Quelle est la sortie? –

+1

Ce fichier se trouve-t-il dans le répertoire "www" du serveur Apache? (Je crois que c'est www, peut-être www-root) Et si c'est vous l'ouvrez comme: http: //localhost/myFile.php? – Cipi

Répondre

9

XAMPP comprend déjà PHP, mais à moins que vous finissez le nom du script avec .php il est peu susceptible d'être traité par le moteur PHP.

+0

Oui mais n'avez-vous pas besoin de mettre le script dans le dossier www de XAMPP? Ou ai-je tort...? – Cipi

+0

@Cipi: Bien sûr. Mais je préfère donner au demandeur * certains * le bénéfice du doute à moins qu'ils ne prouvent le contraire. –

+0

Non seulement improbable, il est seulement configuré pour .php (et peut-être .php5, j'oublie) hors de la boîte. Plain .html (ou .htm) sera juste servi directement par Apache. – Paolo

5

Le module php pour apache s'enregistre comme gestionnaire pour le type mime application/x-httpd-php. Et le fichier de configuration apache \ conf \ supplémentaire \ httpd-xampp.conf contient les lignes

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

qui indique au apache que tous les fichiers ayant .php comme extension de nom doivent être des processus par le gestionnaire pour application/x -httpd-php.
Si vous voulez (vraiment) que vos fichiers .html soient également gérés par le module php, vous devez ajouter quelque chose de similaire pour les extensions .html. (il existe d'autres méthodes pour indiquer à l'apache quelle extension correspond à quel type/gestionnaire mime, mais FilesMatch/SetHandler est correct.)
Si vous souhaitez activer cette "fonctionnalité" pour un seul répertoire, vous pouvez utiliser un .htaccess file pour changer le nom. configuration pour ce répertoire (et ses sous-répertoires).

+0

Merci pour votre réponse VolkerK. Le script fonctionne maintenant que j'ai changé l'extension .html en .php. Cependant, si je clique sur le fichier, helloworld.php, Windows ne connait pas le programme qui l'a créé (même si j'ai Apache en cours d'exécution). Je suis un peu perplexe, dois-je aussi installer PHP pour Windows? – Anthony

+1

"si je clique sur le fichier" - c'est-à-dire que je double-clique dans Windows Explorer? Votre Apache et l'explorateur Windows ne sont pas connectés, ils "ne savent pas" l'un de l'autre. Votre Apache gère les requêtes http, par ex. votre navigateur envoie. – VolkerK

+0

Ok, merci beaucoup VolkerK, je comprends maintenant. – Anthony

12

Je suppose que vous essayez d'utiliser PHP dans le fichier .html? Essayez d'ajouter ou de modifier le fichier .htaccess config apache avec la ligne suivante:

 
AddHandler application/x-httpd-php .html 
+0

Oui J'essaie d'utiliser php dans un fichier .html. Je suivais l'exemple donné par w3schools (voir le lien ci-dessous) et supposais simplement qu'il fonctionnerait n'importe où une fois que j'aurais Apache en cours d'exécution: http://www.w3schools.com/php/php_syntax.asp En ce qui concerne le fichier .htaccess ou changer la configuration apache, je vais devoir faire des recherches. – Anthony

+0

Mon erreur, w3schools a mentionné que vous devez avoir une extension .php (pas.html) sinon cela ne fonctionnerait pas – Anthony

4

Vous devez ajouter type MIME à l'adresse http par exemple conf dans apache à l'entrée httpd.conf

<IfModule mime_module> 
    # 
    # TypesConfig points to the file containing the list of mappings from 
    # filename extension to MIME-type. 
    # 
    TypesConfig "conf/mime.types" 
    ....... 
    AddType application/x-httpd-php .html .htm 
    AddType text/html .shtml 

    AddOutputFilter INCLUDES .shtml 
</IfModule> 
6

Stop the le service apache, puis ajoutez un changement dans c: \ xampp \ apache \ conf \ httpd.conf dans la section en ajoutant ...

AddType application/x-httpd-php .html .htm 

Restart ap mal! Cela ressemble à une grosse «fonctionnalité» dans la distribution xampp actuelle pour win 32-bit.

+0

Comment se fait-il que je ne vois pas le dossier apache? Mise à jour: Trouvé. Le httpd.conf est dans mon dossier etc. Il ne vous laissera pas éditer directement alors vous devrez 'sudo su' avant de modifier. Merci btw! –

0

Trop de trop. Toutes ces suggestions me conduisent sur le mauvais chemin pendant 5 heures. JK, mais j'ai lu beaucoup d'éléments de recherche google donnant toutes de mauvaises réponses et chaque suggestion ne faisait qu'ajouter plus de mauvaises réponses.

La réponse est en fait si simple que vous voudriez frapper votre tête: Il suffit de changer l'extension de fichier de ".html" à ".php" !!! Rappelez-vous que vous pouvez construire une page Web entièrement en PHP et tout JavaScript et tout ce qui est construit sur JavaScript comme JQuery, bootstrap, etc.

Voici un exemple simple de la preuve:

<head> 

    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 

    <title>Blank Web Page</title> 

    <link rel="stylesheet" type="text/css" href="css/css.css"> 

</head> 

<body> 

    <?php 

    $son = 5; 
    $nos =10; 

    echo $son + $nos; 

    ?> 

    <h4>test to see if this html element can be output too!</h4> 

    <script type="text/javascript" src="js/js.js"></script> 

</body> 

Notez que je suis en utilisant votre code html standard, même si elle ne montre pas mes tags HTML (croyez-moi c'est là), des pages web et du code php inséré à l'intérieur. Bien sûr, le résultat est 15 et l'élément HTML h4 est correctement rendu. Changez l'extension en "html" et vous obtiendrez seulement l'élément h4 et vous constaterez que votre code php a été commenté en utilisant le multi-commentaire pour html.

J'ai oublié d'ajouter que cela fonctionne aussi pour Xampp.

Questions connexes