Подтвердить что ты не робот

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

... но безрезультатно.

4b9b3361

Ответ 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.

Ответ 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>