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