Назад | Перейти на главную страницу

Как включить 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 webmaster@virtualhost.com
    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?

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

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

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

AddHandler application/x-httpd-php70 .html