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


