Apache Virtual Host не анализирует PHP
Я решил включить виртуальные хосты на моем сервере Apache и решил сделать его на основе портов.
Первое, что я сделал, конечно, было RTM. Я выполнил инструкции найденные здесь. Ну, это сработало - вроде. Что касается виртуального хоста, он это делает. Содержимое, выведенное из: 80, отличается от 8080.
Но PHP не работает. "Исходный сайт" (порт 80) работает с PHP просто отлично. Однако сайт порта 8080 отправляет PHP в браузер. Я ничего не вижу в браузере, но исходный код показывает:
<?php
echo "It worked!";
?>
Этот вопрос, по-видимому, очень слабо документирован на нескольких сайтах, но либо я не могу найти решение в них, либо указанное решение не работает для меня.
Опять же, сам виртуальный хост работает нормально. PHP, с другой стороны, не является.
Любые идеи о том, что это может быть? Какой контент из моего файла httpd.conf я должен предоставить, чтобы я не взорвал свой вопрос, скопировав/вставив все это?
(Извините, я забыл опубликовать, что у меня были эти места, Фил. Добавление во избежание дальнейшей путаницы)
Listen 80
Listen 8080
NameVirtualHost *:80
NameVirtualHost *:8080
<VirtualHost *:80>
ServerName mysite.com
DocumentRoot /var/www/vhosts/Site1/httpdocs
</VirtualHost>
<VirtualHost *:8080>
ServerName mysite.com
DocumentRoot /var/www/vhosts/Site2/httpdocs
</VirtualHost>
Я попытался добавить это в теги:
AddHandler php5-script .php
AddType text/html .php
... но безрезультатно.
Ответы
Ответ 1
Это, наконец, положило меня на правильный путь:
http://www.linuxquestions.org/questions/linux-server-73/php-not-working-on-one-vhost-but-works-on-all-others-851093/
Здесь решение:
В разделе <Directory>
я включил следующие строки:
<IfModule sapi_apache2.c>
php_admin_flag engine on
</IfModule>
<IfModule mod_php5.c>
php_admin_flag engine on
</IfModule>
Или, отредактированная копия/вставка решения на моем сервере:
<Directory "/var/www/vhosts/A2/httpdocs">
<IfModule sapi_apache2.c>
php_admin_flag engine on
</IfModule>
<IfModule mod_php5.c>
php_admin_flag engine on
</IfModule>
(Other configuration parameters)
</Directory>
Ответ 2
Это также может быть связано с файлами php с использованием коротких php-тегов <?
вместо <?php
. По умолчанию короткие короткие теги не включены в конфигурационном файле php.ini.
Ответ 3
Ваш ответ не сработал у меня.
Для Ubuntu 12.04:
sudo a2enmod php5
sudo service apache2 restart
Так оно и было.
источник: https://help.ubuntu.com/community/ApacheMySQLPHP
Ответ 4
В моем случае проблема была исправлена путем запуска apt-get install libapache2-mod-php
.
Ответ 5
Мне нужно загрузить centos vm, чтобы проверить apache conf, но на ubuntu. У меня есть намного больше информации в моей конфигурации под virtualHost
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
Ответ 6
Убедитесь, что следующая строка, загружающая модуль php, не закомментирована -
LoadModule php5_module libexec/apache2/libphp5.so
Ответ 7
В моем случае это было значение по умолчанию в php.conf. В нем говорится:
# Running PHP скриптs in user directories is disabled by default
Проверьте ваш php.conf(для PHP 7.1 он соответственно /etc/apache 2/mods-enabled/php7.1.conf) и прокомментируйте указанные строки:
[email protected]:/home/pxxx/public_html# vi /etc/apache2/mods-enabled/php5.conf
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
***php_admin_flag engine On*** -> Turn this option ON
</Directory>
</IfModule>
Ответ 8
Для моей конфигурации мне пришлось добавить эту строку в virtualhost (внутри <Directory>
):
AddType application/x-httpd-php .php
Ответ 9
Это помогло моему out a2enmod php5
, если модуль не существует, переустановите lamp-server, набрав apt-get install lamp-server^
Ответ 10
Единственное, что помогло мне после всех
добавить apache2.conf
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>