Como habilitar o php7.0 para o apache2 em virtualhosts no Ubuntu 16.04?

Como habilitar o php7.0 para o apache2 em virtualhosts no Ubuntu 16.04?

Primeiro de tudo, meu exemplo de host virtual está funcionando sem incorporar <? php echo 'Hello World'; ?>no index.html.

Apacheestá na mesma máquina que estou usando. PHPestá disponível duas vezes nesta máquina.

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

Além disso: libapache2-mod-php7.0já está instalado.

O que fiz até agora:

$ 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

Depois de editar meu virtualhost.com.confarquivo, fica assim:

<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

Então habilitei meu site, fiz uma entrada em meu /etc/hostsarquivo e reiniciei apache2com os seguintes comandos:

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

As novas entradas em meu /etc/hostssão:

127.0.0.1       www.testhost.com    
127.0.0.1       www.virtualhost.com

Os seguintes módulos são ativados:

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

Sem a linha <?php echo "PHP"; ?>no index.htmlsite está funcionando. Mas se eu incorporar esta linha, o eco do php não estará ecoando.

Eu preciso de algo como

LoadModule php7_module modules/libphp7.so

no meu /etc/apache2/apache2.conf?

Qualquer dica para resolver esse problema é bem-vinda.

Responder1

Para que o código PHP incorporado em um arquivo seja executado, o arquivo precisa ser realmente executado por meio do interpretador PHP. Por padrão, apenas os arquivos que terminam em .php(e algumas outras extensões de arquivo) são enviados através do interpretador PHP, porque o envio de todos os arquivos através do interpretador PHP por padrão reduz o desempenho e pode, em algumas circunstâncias, causar problemas de segurança ou funcionalidade.

Para dizer ao seu servidor web para enviar todos os arquivos que terminam .htmlatravés do interpretador PHP, você deve adicionar a seguinte linha à configuração do seu vhost:

AddHandler application/x-httpd-php70 .html

informação relacionada