Прежде всего, мой пример виртуального хоста работает без встраивания <? 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