Как включить php7.0 для apache2 на виртуальных хостах в Ubuntu 16.04?

Как включить php7.0 для apache2 на виртуальных хостах в Ubuntu 16.04?

Прежде всего, мой пример виртуального хоста работает без встраивания <? php echo 'Hello World'; ?>в index.html.

Apacheнаходится на том же компьютере, который я использую. PHPдоступен дважды на этом компьютере.

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

Более того: libapache2-mod-php7.0уже установлено.

Что я сделал до сих пор:

$ 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

После редактирования мой virtualhost.com.confфайл выглядит так:

<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

Затем я включил свой сайт, сделал запись в своем /etc/hostsфайле и перезапустил его apache2с помощью следующих команд:

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

Новые записи в моем /etc/hostsблоге:

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

Активированы следующие модули:

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

Без этой строки <?php echo "PHP"; ?>сайт index.htmlработает. Но если я вставляю эту строку, то эхо PHP не выводится.

Мне нужно что-то вроде

LoadModule php7_module modules/libphp7.so

в моем /etc/apache2/apache2.conf?

Любые подсказки по решению этой проблемы приветствуются.

решение1

Для того чтобы встроенный PHP-код в файле был выполнен, файл должен быть фактически запущен через интерпретатор PHP. По умолчанию только файлы, заканчивающиеся на .php(и несколько других расширений файлов), отправляются через интерпретатор PHP, поскольку отправка всех файлов через интерпретатор PHP по умолчанию снижает производительность и может, в некоторых случаях, вызывать проблемы безопасности или функциональности.

Чтобы указать вашему веб-серверу отправлять все файлы, заканчивающиеся на , .htmlчерез интерпретатор PHP, вам следует добавить следующую строку в конфигурацию вашего виртуального хоста:

AddHandler application/x-httpd-php70 .html

Связанный контент