Comment ajouter du code / fichier PHP aux fichiers HTML (.html)?

97

Je ne peux pas utiliser PHP dans mes pages HTML. Par exemple index.html,. J'ai essayé d'utiliser les deux:

<? contents ?> 

et

<?php contents ?> 

Aucun de ces travaux. Mon serveur propose PHP, et lorsque j'utilise une .phpextension, cela fonctionne correctement. Est-ce un problème ou dois-je modifier les préférences dans php.ini?

Hoon
la source
2
Vous devrez changer votre serveur (je suppose apache) pour servir les fichiers html en tant que php, mais pourquoi voulez-vous que l'extension soit html au lieu de php?
Explosion Pills
@ExplosionPills Je l'ai fait avec IIS v7! et c'est possible!
annulé le
@Death Je ne voulais pas dire que cela ne peut être fait qu'avec Apache, j'ai juste supposé qu'il utilisait Apache.
Explosion Pills
1
Quelle horrible idée. Utilisez des redirections pour sauvegarder votre référencement. Utilisez .html pour HTML et .php pour PHP.
Alien Technology

Réponses:

142

Vous ne pouvez pas exécuter PHP dans des fichiers .html car le serveur ne reconnaît pas cela comme une extension PHP valide à moins que vous ne le lui disiez. Pour ce faire, vous devez créer un fichier .htaccess dans votre répertoire Web racine et y ajouter cette ligne:

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

Cela indiquera à Apache de traiter les fichiers avec une extension de fichier .htm ou .html en tant que fichiers PHP.

John Conde
la source
15
Bien que ce soit juste, je pense qu'une question plus importante est de savoir pourquoi faire cela? De plus, il devrait mettre à jour la configuration du serveur plutôt que de l'utiliser .htaccesssi c'est une option.
Explosion Pills
11
J'ai fait cela à de nombreuses reprises pour cacher le fait que j'utilise PHP (en plus d'autres choses)
nickb
3
@nickb - la sécurité par l'obscurité?
Nathan Long
2
@NathanLong w3.org/TR/cooluris Plus précisément, "Gardez les éléments spécifiques à l'implémentation tels que .php et .asp hors de vos URI, vous voudrez peut-être changer de technologie plus tard." dans la section 4.5.
Eric Finn
4
@EricFinn - c'est une bonne ligne directrice. Mais avoir le serveur de traiter les .htmlfichiers comme PHP n'est même pas nécessaire, ni utile, pour le suivre. Vous voulez que les utilisateurs visitent example.com/foo. Vous pouvez utiliser cette URL pour diffuser du contenu PHP quels que soient les noms de fichiers sur votre serveur. Si les utilisateurs ont déjà foo.htmlajouté un signet, vous pouvez toujours diffuser foo.phpsans renommer le fichier.
Nathan Long
20

Je pense qu'écrire PHP dans un fichier .html est déroutant et anti-naturel. Pourquoi ferais-tu ça??

Quoi qu'il en soit, si vous voulez exécuter des fichiers PHP et les afficher en .html dans la barre d'adresse, une solution plus simple serait d'utiliser .php comme d'habitude, et d'écrire une règle dans votre .htaccess comme ceci:

RewriteRule ^([^.]+)\.html$ $1.php [L]
David Morales
la source
Et si j'utilise PHP + HTML? quel format dois-je utiliser? Je suis assez confus. Ma page contient un code très court basé sur PHP et il existe de nombreux codes en HTML. Donc ce que j'allais faire, c'est créer un fichier HTML. Est-ce une mauvaise habitude?
Hoon
3
Le format doit être .php, car les fichiers .html sont destinés à contenir uniquement du code HTML.
David Morales
15

Afin d'utiliser php dans les fichiers .html, vous devez les associer à votre processeur PHP dans le fichier de configuration de votre serveur HTTP. Dans Apache, cela ressemble à ceci:

AddHandler application/x-httpd-php .html
Chris Trahey
la source
voudriez-vous commenter la différence entre AddHandleret AddType? Merci.
PatrickT le
1
@PatrickT Le moyen le plus simple de comparer est que AddHandler est un mappage "d'entrée" - il mappe une extension de fichier entrant à un gestionnaire. AddType modifie l'en-tête de type MIME de sortie. Voir la note ici: httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype
Chris Trahey
13

Vous pouvez modifier .htaccess comme d'autres l'ont dit, mais la solution la plus rapide est de renommer l'extension de fichier en .php

CAAY
la source
Vous pouvez également essayer .phtml
Floggedhorse
9

Ajouter cette ligne

AddHandler application/x-httpd-php .html

pour httpd.confdéposer ce que vous voulez faire. Mais rappelez-vous que si vous faites cela, votre serveur Web sera très lent, car il analysera même du code statique qui ne contiendra pas de code php. Le meilleur moyen sera donc de créer l'extension de fichier .phtmlau lieu de simplement .html.

Badar
la source
5
N'oubliez pas de ne pas écrire votre réponse entière en gras, s'il vous plaît.
David Morales
7

Pour que les .htmlfichiers soient également analysés, vous devez définir le gestionnaire approprié dans la configuration de votre serveur.

Pour Apache httpd 2.X, il s'agit de la ligne suivante

AddHandler application/x-httpd-php .html

Consultez le docu PHP pour plus d'informations sur l'installation de votre serveur spécifique.

Sirko
la source
6

Par défaut, vous ne pouvez pas utiliser PHP dans les pages HTML.

Pour ce faire, modifiez votre fichier .htacccess avec les éléments suivants:

AddType application/x-httpd-php .html
Kerry Ritter
la source
4

Si vous n'avez que du code php dans un fichier html mais que plusieurs autres fichiers ne contiennent que du code html, vous pouvez ajouter ce qui suit à votre fichier .htaccess afin qu'il ne serve que ce fichier en tant que php.

<Files yourpage.html>
AddType application/x-httpd-php .html 
//you may need to use x-httpd-php5 if you are using php 5 or higher
</Files>

Cela rendra l'exécutable PHP UNIQUEMENT sur le fichier "yourpage.html" et non sur toutes vos pages html, ce qui évitera le ralentissement de tout votre serveur.

Quant à savoir pourquoi quelqu'un pourrait vouloir servir php via un fichier html, j'utilise la fonction IMPORTHTML dans les feuilles de calcul Google pour importer des données JSON à partir d'une URL externe qui doit être analysée avec php pour le nettoyer et créer une table html. Jusqu'à présent, je n'ai trouvé aucun moyen d'importer un fichier .php dans des feuilles de calcul Google, il doit donc être enregistré en tant que fichier .html pour que la fonction fonctionne. Être capable de servir php via un fichier .html est nécessaire pour cette utilisation particulière.

MistyDawn
la source
Très pratique.
quantme
4

Créez un fichier vide à l'aide du bloc-notes et nommez-le .htaccess, puis copiez ce fichier dans le répertoire de votre projet et ajoutez cette ligne et enregistrez-le.

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

sinon enregistrez le fichier .html en utilisant .php car php peut prendre en charge html, et enregistrez-le dans le chemin ordinateur / var / www / html (linux)

Progga Ilma
la source
1
Merci de considérer ceux qui ne savent même pas comment créer un fichier .htaccess.
quantme
0

AJAX est également une possibilité. En fait, vous voudriez des données de la page php. Une fois que vous avez les données, vous pouvez de toute façon formater en javascript et afficher.

var xmlhttp = new XMLHttpRequest();
var url = "risingStars.php";

xmlhttp.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
        getDbData(this.responseText);
    }
}
xmlhttp.open("GET", url, true);
xmlhttp.send();


function getDbData(response) {

//do whatever you want with respone
}
Ravi Ganesh
la source
0

RÉVISION MODERNE: vous devez aussi maintenant le corriger en changeant le peu connu '' security.limit_extensions 'dans php-fpm en faisant cela. Vous connaissez probablement déjà le mécanisme bien documenté de changement d'Apache en AddHandler / AddType Je n'entrerai pas dans cela ici.

  1. VOUS DEVEZ découvrir où se trouve php-fpm / conf dans votre configuration. Je l'ai fait en faisant ça

    # grep -rnw '/etc/' -e 'security.limit_extensions'

  2. Je l'ai récupéré

    '/etc/php-fpm.d/www.conf:387:;security.limit_extensions = .php .php3 .php4 .php5 .php7'

  3. allez dans ce fichier, éditez-le et ASSUREZ-VOUS DE RÉALISER QU'IL EST COMMENCÉ EXEMPLE: changez-le de ';security.limit_extensions = .php .php3 .php4 .php5 .php7'<- NB: notez que ";"- cette ligne est en fait DÉSACTIVÉE par défaut - et vous n'avez pas besoin de toutes les extensions absurdes, en fait elles le sont probablement dangereux .. changez-le en 'security.limit_extensions = .php .htm'<- notez que le point virgule est maintenant supprimé. puis redémarrez apache / (ou nginx) et redémarrez php-fpm# service php-fpm restart # service httpd restart

Monsieur Heelis
la source
-2

Pour combiner HTML et PHP, vous pouvez utiliser des fichiers .phtml.

Eduardo Guardado
la source