
En primer lugar, mi ejemplo de un host virtual funciona sin incrustarlo <? php echo 'Hello World'; ?>
en index.html
.
Apache
está en la misma máquina que estoy usando. PHP
está disponible dos veces en esta máquina.
$ which php
/usr/bin/php
$ which php7.0
/usr/bin/php7.0
Además: libapache2-mod-php7.0
ya está instalado.
Lo que he hecho hasta ahora:
$ sudo mkdir /var/www/www.virtualhost.com/
$ cd /var/www/www.virtualhost.com/
$ sudo cat > index.html
<html>
<body>
<h1>My virtualhost</h1>
PHP Test:<br>
<?php echo "PHP"; ?>
</body>
</html>
ctrl+d
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-availble/virtualhost.com.conf
Después de editar mi virtualhost.com.conf
archivo, se ve así:
<VirtualHost *:80>
ServerName www.virtualhost.com
ServerAlias virtualhost.com
ServerAdmin [email protected]
DocumentRoot /var/www/www.virtualhost.com
DirectoryIndex index.html index.php
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/www.virtualhost.com/>
Options +Indexes -FollowSymlinks
AllowOverride None
</Directory>
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Luego habilité mi sitio, hice una entrada en mi /etc/hosts
archivo y reinicié apache2
con los siguientes comandos:
$ sudo a2ensite virtualhost.com.conf
$ sudo apache2ctl restart
Las nuevas entradas en mi /etc/hosts
son:
127.0.0.1 www.testhost.com
127.0.0.1 www.virtualhost.com
Se activan los siguientes módulos:
$ a2query -m
authz_host (enabled by maintainer script)
proxy_fcgi (enabled by site administrator)
socache_shmcb (enabled by site administrator)
negotiation (enabled by maintainer script)
filter (enabled by maintainer script)
access_compat (enabled by maintainer script)
authz_core (enabled by maintainer script)
deflate (enabled by maintainer script)
authn_file (enabled by maintainer script)
php7.0 (enabled by maintainer script)
authz_user (enabled by maintainer script)
authnz_fcgi (enabled by site administrator)
mime (enabled by maintainer script)
proxy (enabled by site administrator)
mpm_prefork (enabled by site administrator)
dir (enabled by maintainer script)
alias (enabled by maintainer script)
auth_basic (enabled by maintainer script)
setenvif (enabled by maintainer script)
cgi (enabled by site administrator)
env (enabled by maintainer script)
autoindex (enabled by maintainer script)
authn_core (enabled by maintainer script)
status (enabled by maintainer script)
ssl (enabled by site administrator)
Sin la línea <?php echo "PHP"; ?>
en index.html
el sitio está funcionando. Pero si incrusto esta línea, el eco de php no se repite.
¿Necesito algo como
LoadModule php7_module modules/libphp7.so
en mi /etc/apache2/apache2.conf
?
Cualquier sugerencia para resolver este problema es bienvenida.
Respuesta1
Para que se ejecute el código PHP incrustado en un archivo, el archivo debe ejecutarse a través del intérprete PHP. De forma predeterminada, solo los archivos que terminan en .php
(y un par de otras extensiones de archivo) se envían a través del intérprete PHP, porque enviar todos los archivos a través del intérprete PHP de forma predeterminada reduce el rendimiento y, en algunas circunstancias, puede causar problemas de seguridad o funcionalidad.
Para indicarle a su servidor web que envíe todos los archivos que terminen .html
a través del intérprete PHP, debe agregar la siguiente línea a su configuración de vhost:
AddHandler application/x-httpd-php70 .html