2010-02-04 10 views
8

Soy nuevo en PHP. Instalé XAMPP y tengo Apache funcionando. Creé helloworld.php en los htdocs de XAMPP y obtuve PHP para mostrar en mi navegador. Mi pregunta es, ¿por qué mi script PHP en mi archivo HTML no se muestra en mi navegador? Nunca he instalado PHP por sí mismo. ¿Debo también instalarlo? ¿Entraría en conflicto con XAMPP? Mi código está abajo. Cualquier ayuda será apreciada. Gracias de antemano:La secuencia de comandos PHP no funciona en el archivo HTML

<html> 
<body> 

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

</body> 
</html> 
+0

¿Tenía intención de publicar más código? –

+0

¿Cuál es la salida? –

+1

¿Es ese archivo en el directorio "www" en el servidor Apache? (Creo que es www, puede ser www-root) Y si lo es, ¿lo está abriendo como: http: //localhost/myFile.php? – Cipi

Respuesta

9

XAMPP ya incluye PHP, pero a menos que se termina el nombre del script con .php es poco probable que sea procesado por el motor de PHP.

+0

Sí, pero ¿no necesita poner el script en la carpeta www de XAMPP? ¿O estoy equivocado ...? – Cipi

+0

@Cipi: por supuesto. Pero prefiero darle al que pregunta * algún * beneficio de la duda a menos que pruebe lo contrario. –

+0

No solo es poco probable, solo está configurado para .php (y tal vez .php5, lo olvide) fuera de la caja. Plain .html (o .htm) será servido directamente por Apache. – Paolo

5

El módulo php para apache se registra a sí mismo como controlador para el tipo de mímica application/x-httpd-php. Y el archivo de configuración de apache \ conf \ adicional \ httpd-xampp.conf contiene las líneas

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

que le dice al Apache que todos los archivos que tienen .php como extensión de nombre deben ser procesos por el controlador para application/x -httpd-php.
Si (realmente) desea que sus archivos .html sean manejados por el módulo php también debe agregar algo similar para las extensiones .html. (hay otros métodos para indicar al apache qué extensión se asigna a qué tipo/controlador de mimo. Pero FilesMatch/SetHandler está bien.)
Si desea habilitar esta "función" para un solo directorio, puede usar un .htaccess file para cambiar el configuración para ese directorio (y sus subdirectorios).

+0

Gracias por su respuesta VolkerK. El script está funcionando ahora que he cambiado la extensión .html a .php. Sin embargo, si hago clic en el archivo, helloworld.php, Windows no conoce el programa que lo creó (aunque tengo Apache ejecutándose). Estoy un poco desconcertado, ¿debería también instalar PHP para Windows? – Anthony

+1

"si hago clic en el archivo" - es decir, haciendo doble clic en el explorador de Windows? Su Apache y el explorador de Windows no están conectados, ellos "no se conocen" el uno del otro. Su Apache maneja las solicitudes http que, p. tu navegador envía. – VolkerK

+0

Ok, muchas gracias VolkerK, lo entiendo ahora. – Anthony

12

Supongo que está intentando usar php dentro de un archivo .html? Trate de añadir archivo .htaccess o el cambio de configuración de Apache con la siguiente línea:

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

Sí, estoy tratando de usar php dentro de un archivo .html. Estaba siguiendo el ejemplo dado por w3schools (ver el enlace a continuación) y simplemente asumí que simplemente funcionaría en cualquier lugar una vez que tenga Apache ejecutándose: http://www.w3schools.com/php/php_syntax.asp Con respecto al archivo .htaccess o cambiando la configuración de Apache, tendré que investigar eso. – Anthony

+0

Mi error, w3schools mencionó que debe tener una extensión .php (no.html) de lo contrario no funcionaría – Anthony

4

Usted debe agregar el tipo MIME en conf http por ejemplo en Apache en httpd.conf entrada

<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

Detener la servicio de Apache, a continuación, añadir un cambio en c: \ xampp \ apache \ conf \ httpd.conf en la sección añadiendo ...

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

ap Restart ¡dolor!

Esto parece una gran 'característica' en la distribución actual de xampp para win de 32 bits.

+0

¿Cómo es que no veo la carpeta apache? Actualización: lo encontré. El httpd.conf está en mi carpeta etc. Sin embargo, no le permitirá editar directamente, por lo que deberá 'sudo su' antes de editar. ¡Gracias por cierto! –

0

Demasiado exceso. Todas estas sugerencias me llevan por el camino equivocado durante 5 horas. JK, pero sí leí muchos ítems de búsqueda en Google, todos dando respuestas incorrectas y cada sugerencia fue solo agregar más respuestas incorrectas.

La respuesta es, de hecho, tan simple que le gustaría golpearse la cabeza: ¡simplemente cambie la extensión de archivo de ".html" a ".php"! Recuerde que puede crear una página web completamente fuera de PHP y funcionará todo el JavaScript y todo lo creado a partir de JavaScript como, JQuery, bootstrap, etc.

Aquí es un ejemplo sencillo de la prueba:

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

en cuenta que estoy usando el estándar HTML, a pesar de que no muestra mis etiquetas HTML (confía en mí está ahí), cosas de la página web y tienen insertado el código php. Por supuesto, el resultado es 15 y el elemento html h4 también se representa correctamente. Cambia la extensión a "html" y obtendrás solo el elemento h4 y encontrarás que tu código php ha sido comentado utilizando multi-comment para html.

Olvidé agregar que esto también funciona para Xampp.

Cuestiones relacionadas