¿Cómo habilitar php7.0 para apache2 en servidores virtuales en ubuntu 16.04?

¿Cómo habilitar php7.0 para apache2 en servidores virtuales en ubuntu 16.04?

En primer lugar, mi ejemplo de un host virtual funciona sin incrustarlo <? php echo 'Hello World'; ?>en index.html.

Apacheestá en la misma máquina que estoy usando. PHPestá disponible dos veces en esta máquina.

$ which php
/usr/bin/php
$ which php7.0 
/usr/bin/php7.0

Además: libapache2-mod-php7.0ya 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.confarchivo, 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/hostsarchivo y reinicié apache2con los siguientes comandos:

$ sudo a2ensite virtualhost.com.conf
$ sudo apache2ctl restart

Las nuevas entradas en mi /etc/hostsson:

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.htmlel 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 .htmla través del intérprete PHP, debe agregar la siguiente línea a su configuración de vhost:

AddHandler application/x-httpd-php70 .html

información relacionada