¿Cómo agrego código / archivo PHP a archivos HTML (.html)?

97

No puedo usar PHP en mis páginas HTML. Por ejemplo index.html,. Intenté usar ambos:

<? contents ?> 

y

<?php contents ?> 

Ninguno de estos funciona. Mi servidor ofrece PHP y, cuando uso una .phpextensión, funciona correctamente. ¿Es esto un problema o tengo que cambiar las preferencias php.ini?

Hoon
fuente
2
Tendría que cambiar su servidor (supongo que apache) para servir archivos html como php, pero ¿por qué quiere que la extensión sea html en lugar de php?
Píldoras
@ExplosionPills ¡Lo he hecho usando IIS v7! y es posible!
deshecho el
@Death No quise dar a entender que solo se puede hacer con apache, simplemente asumí que estaba usando apache.
Píldoras
1
Qué idea tan horrible. Utilice redireccionamientos para guardar su SEO. Utilice .html para HTML y .php para PHP.
Alien Technology

Respuestas:

142

No puede ejecutar PHP en archivos .html porque el servidor no lo reconoce como una extensión PHP válida a menos que usted se lo indique. Para hacer esto, necesita crear un archivo .htaccess en su directorio web raíz y agregarle esta línea:

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

Esto le indicará a Apache que procese archivos con una extensión de archivo .htm o .html como archivos PHP.

John Conde
fuente
15
Si bien esto es correcto , creo que una pregunta más importante es ¿por qué hacer esto? Además, debería actualizar la configuración del servidor en lugar de usarlo .htaccesssi esa es una opción.
Píldoras
11
He hecho esto en numerosas ocasiones para ocultar el hecho de que estoy usando PHP (además de otras cosas)
nickb
3
@nickb - ¿seguridad a través de la oscuridad?
Nathan Long
2
@NathanLong w3.org/TR/cooluris Específicamente, "Mantenga los bits y piezas específicos de la implementación, como .php y .asp, fuera de sus URI, es posible que desee cambiar de tecnología más adelante". en la sección 4.5.
Eric Finn
4
@EricFinn, esa es una buena guía. Pero tener el servidor procesando .htmlarchivos como PHP no es necesario ni útil para seguirlo. Quieres que los usuarios visiten example.com/foo. Puede usar esa URL para servir contenido PHP independientemente de los nombres de archivo en su servidor. Si los usuarios ya lo han foo.htmlmarcado, aún puede publicar foo.phpsin cambiar el nombre del archivo.
Nathan Long
20

Creo que escribir PHP en un archivo .html es confuso y antinatural. ¿¿Por qué harías eso??

De todos modos, si lo que quieres es ejecutar archivos PHP y mostrarlos como .html en la barra de direcciones, una solución más sencilla sería usar .php como de costumbre, y escribir una regla en tu .htaccess como esta:

RewriteRule ^([^.]+)\.html$ $1.php [L]
David Morales
fuente
¿Y si utilizo PHP + HTML? que formato debo usar? Estoy bastante confundido. Mi página tiene un código realmente corto basado en PHP y hay muchos códigos en HTML. Entonces, lo que iba a hacer era crear un archivo HTML. ¿Es esto un mal hábito?
Hoon
3
El formato debe ser .php, ya que los archivos .html solo deben contener código HTML.
David Morales
15

Para usar php en archivos .html, debe asociarlos con su procesador PHP en el archivo de configuración de su servidor HTTP. En Apache, se ve así:

AddHandler application/x-httpd-php .html
Chris Trahey
fuente
¿Le importaría comentar la diferencia entre AddHandlery AddType? Gracias.
PatrickT
1
@PatrickT La forma más sencilla de comparar es que AddHandler es una asignación de "entrada": asigna una extensión de archivo entrante a un controlador. AddType modifica el encabezado de tipo MIME de salida. Vea la nota aquí: httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype
Chris Trahey
13

Puede modificar .htaccess como dijeron otros, pero la solución más rápida es cambiar el nombre de la extensión del archivo a .php

CAAY
fuente
También puede probar .phtml
Floggedhorse
9

Agregar esta línea

AddHandler application/x-httpd-php .html

para httpd.confsolicitar lo que quiere hacer. Pero recuerde, si hace esto, su servidor web será muy lento, porque analizará incluso el código estático que no contendrá código php. Entonces, la mejor manera será hacer la extensión del archivo en .phtmllugar de solo .html.

Badar
fuente
5
Recuerde no escribir toda la respuesta en negrita, por favor.
David Morales
7

Para que los .htmlarchivos también se analicen, debe establecer el controlador apropiado en la configuración de su servidor.

Para Apache httpd 2.X esta es la siguiente línea

AddHandler application/x-httpd-php .html

Consulte la documentación de PHP para obtener información sobre la instalación específica de su servidor.

Sirko
fuente
6

De forma predeterminada, no puede utilizar PHP en páginas HTML.

Para hacer eso, modifique su archivo .htacccess con lo siguiente:

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

Si solo tiene código php en un archivo html, pero tiene varios archivos que solo contienen código html, puede agregar lo siguiente a su archivo .htaccess para que solo sirva ese archivo en particular como 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>

Esto hará que PHP sea ejecutable ÚNICAMENTE en el archivo "yourpage.html" y no en todas sus páginas html, lo que evitará la ralentización de todo su servidor.

En cuanto a por qué alguien podría querer servir php a través de un archivo html, utilizo la función IMPORTHTML en las hojas de cálculo de Google para importar datos JSON desde una URL externa que debe analizarse con php para limpiarlo y construir una tabla html. Hasta ahora no he encontrado ninguna forma de importar un archivo .php en hojas de cálculo de Google, por lo que debe guardarse como un archivo .html para que la función funcione. Ser capaz de servir php a través de un archivo .html es necesario para ese uso en particular.

MistyDawn
fuente
Muy practico.
quantme
4

Cree un archivo vacío usando el bloc de notas y asígnele el nombre .htaccess, luego copie ese archivo en el directorio de su proyecto y agregue esta línea y guárdelo.

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

de lo contrario, guarde el archivo .html usando .php ya que php puede admitir html, y guárdelo en la ruta computer / var / www / html (linux)

Progga Ilma
fuente
1
Gracias por considerar a aquellos que ni siquiera saben cómo crear un archivo .htaccess.
quantme
0

AJAX también es una posibilidad. Efectivamente, querría datos de la página php. Una vez que tenga los datos, puede formatear de todos modos en javascript y mostrar.

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
fuente
0

REVISIÓN MODERNA: ahora también necesita solucionarlo cambiando el poco conocido '' security.limit_extensions 'en php-fpm haciendo esto. Probablemente ya conozca el mecanismo bien documentado para cambiar apache a AddHandler / AddType. No entraré en eso aquí.

  1. DEBE averiguar dónde está php-fpm / conf en su configuración. Lo hice haciendo esto

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

  2. Tengo esto de vuelta

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

  3. vaya a este archivo, edítelo y ASEGÚRESE DE QUE SE DA CUENTA DE QUE ESTÁ COMENTADO POR EJ .: cámbielo de ';security.limit_extensions = .php .php3 .php4 .php5 .php7'<- NB: tenga en cuenta que ";"- esta línea está DESHABILITADA de forma predeterminada - y no necesita todas las extensiones sin sentido, de hecho son probablemente peligroso .. cámbielo a 'security.limit_extensions = .php .htm'<- tenga en cuenta que ahora se ha eliminado el punto y coma. luego reinicie apache / (o nginx) y reinicie php-fpm# service php-fpm restart # service httpd restart

Señor Heelis
fuente
-2

Para combinar HTML y PHP puede usar archivos .phtml.

Eduardo Guardado
fuente