Come aggiungo codice / file PHP ai file HTML (.html)?


97

Non riesco a usare PHP nelle mie pagine HTML. Ad esempio index.html,. Ho provato a utilizzare entrambi:

<? contents ?> 

e

<?php contents ?> 

Nessuno di questi lavori. Il mio server offre PHP e quando uso .phpun'estensione, funziona correttamente. È un problema o devo modificare le preferenze in php.ini?


2
Dovresti cambiare il tuo server (presumo apache) per servire file html come php, ma perché vuoi che l'estensione sia html invece di php?
Pillole


@ExplosionPills L'ho fatto usando IIS v7! ed è possibile!
annullato il

@Morte Non volevo implicare che si possa fare solo con apache, ho solo pensato che stesse usando apache.
Pillole

1
Che idea orribile. Usa i reindirizzamenti per salvare il tuo SEO. Usa .html per HTML e .php per PHP.
Tecnologia aliena

Risposte:


142

Non puoi eseguire PHP in file .html perché il server non lo riconosce come un'estensione PHP valida a meno che tu non gli dica di farlo. Per fare ciò è necessario creare un file .htaccess nella directory web principale e aggiungere questa riga:

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

Questo indicherà ad Apache di elaborare i file con estensione .htm o .html come file PHP.


15
Anche se questo è giusto, penso che una domanda più importante sia perché farlo? Inoltre, dovrebbe aggiornare la configurazione del server piuttosto che utilizzare .htaccessse questa è un'opzione.
Explosion Pills

11
L'ho fatto in numerose occasioni per nascondere il fatto che sto usando PHP (oltre ad altre cose)
nickb

3
@nickb - sicurezza attraverso l'oscurità?
Nathan Long

2
@NathanLong w3.org/TR/cooluris Nello specifico, "Tieni i bit e le parti specifici dell'implementazione come .php e .asp fuori dai tuoi URI, potresti voler cambiare la tecnologia in seguito." nella sezione 4.5.
Eric Finn

4
@EricFinn - questa è una buona linea guida. Ma il fatto che il server elabori i .htmlfile come PHP non è nemmeno necessario o utile per seguirlo. Desideri che gli utenti visitino example.com/foo. È possibile utilizzare tale URL per fornire contenuto PHP indipendentemente dai nomi dei file sul server. Se gli utenti hanno già foo.htmlaggiunto un segnalibro, puoi comunque pubblicare il servizio foo.phpsenza rinominare il file.
Nathan Long

20

Penso che scrivere PHP in un file .html sia fonte di confusione e anti-naturale. Perché dovresti farlo??

Ad ogni modo, se quello che vuoi è eseguire file PHP e mostrarli come .html nella barra degli indirizzi, una soluzione più semplice sarebbe usare .php normalmente e scrivere una regola nel tuo .htaccess come questa:

RewriteRule ^([^.]+)\.html$ $1.php [L]

E se utilizzo PHP + HTML? quale formato dovrei usare? Sono abbastanza confuso. La mia pagina ha un codice davvero breve basato su PHP e ci sono molti codici in HTML. Quindi quello che stavo per fare era creare un file HTML. È una cattiva abitudine?
Hoon

3
Il formato dovrebbe essere .php, poiché i file .html devono contenere solo codice HTML.
David Morales

15

Per utilizzare php nei file .html, devi associarli al tuo processore PHP nel file di configurazione del tuo server HTTP. In Apache, assomiglia a questo:

AddHandler application/x-httpd-php .html

vorresti commentare la differenza tra AddHandlere AddType? Grazie.
PatrickT

1
@PatrickT Il modo più semplice per confrontare è che AddHandler è una mappatura di "input": mappa un'estensione di file in arrivo su un gestore. AddType modifica l'intestazione del tipo MIME di output. Vedere la nota qui: httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype
Chris Trahey

13

Puoi modificare .htaccess come altri hanno detto, ma la soluzione più veloce è rinominare l'estensione del file in .php


Puoi anche provare .phtml
Floggedhorse

9

Aggiungi questa linea

AddHandler application/x-httpd-php .html

per httpd.confarchiviare ciò che vuoi fare. Ma ricorda, se lo fai, il tuo server web sarà molto lento, perché analizzerà anche il codice statico che non conterrà codice php. Quindi il modo migliore sarà creare l'estensione del file .phtmlanziché solo .html.


5
Ricordati di non scrivere l'intera risposta in grassetto, per favore.
David Morales

7

Per far .htmlanalizzare anche i file, è necessario impostare il gestore appropriato nella configurazione del server.

Per Apache httpd 2.X questa è la seguente riga

AddHandler application/x-httpd-php .html

Vedere il documento PHP per informazioni sull'installazione del server specifico.


6

Di default non puoi usare PHP nelle pagine HTML.

Per farlo, modifica il tuo file .htacccess con quanto segue:

AddType application/x-httpd-php .html

4

Se hai solo codice php in un file html ma hai più altri file che contengono solo codice html, puoi aggiungere quanto segue al tuo file .htaccess in modo che servirà solo quel particolare file come 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>

Questo renderà l'eseguibile PHP SOLO sul file "yourpage.html" e non su tutte le tue pagine html, il che impedirà il rallentamento dell'intero server.

Per quanto riguarda il motivo per cui qualcuno potrebbe voler servire php tramite un file html, utilizzo la funzione IMPORTHTML nei fogli di calcolo di Google per importare dati JSON da un URL esterno che deve essere analizzato con php per pulirlo e creare una tabella html. Finora non ho trovato alcun modo per importare un file .php in fogli di calcolo di Google, quindi deve essere salvato come file .html affinché la funzione funzioni. Essere in grado di servire php tramite un file .html è necessario per quel particolare utilizzo.


Molto pratico.
quantme

4

Crea un file vuoto usando il blocco note e chiamalo .htaccess, quindi copia quel file nella directory del tuo progetto e aggiungi questa riga e salva.

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

altrimenti salva il file .html usando .php poiché php può supportare html e salvalo nel percorso del computer / var / www / html (linux)


1
Grazie per considerare coloro che non sanno nemmeno come creare un file .htaccess.
quantme

0

Anche AJAX è una possibilità. Effettivamente vorresti i dati dalla pagina php. Una volta che hai i dati puoi formattare comunque in javascript e visualizzare.

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
}

0

REVISIONE MODERNA: ora devi anche aggiustarlo cambiando il poco conosciuto '' security.limit_extensions 'in php-fpm facendo questo. Probabilmente conoscerai già il meccanismo ben documentato di cambiare apache in AddHandler / AddType Non lo approfondirò qui.

  1. DEVI scoprire dove si trova php-fpm / conf nella tua configurazione. L'ho fatto in questo modo

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

  2. L'ho riavuto indietro

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

  3. vai a questo file, modificalo e ASSICURATI CHE TI SIA COMMENTATO ESEMPIO: cambialo da ';security.limit_extensions = .php .php3 .php4 .php5 .php7'<- NB: nota ";"- questa riga è effettivamente DISABILITATA per impostazione predefinita - e non hai bisogno di tutte le estensioni senza senso, infatti lo sono probabilmente pericoloso .. cambialo in 'security.limit_extensions = .php .htm'<- nota che il punto e virgola ora è stato rimosso. quindi riavvia apache / (o nginx) e riavvia php-fpm# service php-fpm restart # service httpd restart


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.