Я решил включить виртуальные хосты на моем сервере 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
… но безрезультатно.
Это также может быть связано с файлами php с использованием коротких php-тегов <?
вместо <?php
. По умолчанию короткие короткие теги не включены в файле конфигурации php.ini.
Это, наконец, привело меня к правильному пути:
Вот решение:
В разделе <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>
Ваш ответ не помог мне.
Для Ubuntu 12.04:
sudo a2enmod php5 sudo service apache2 restart
Так оно и было.
В моем случае проблема была устранена при запуске apt-get install libapache2-mod-php
.
Мне нужно загрузить 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>
Убедитесь, что следующая строка, загружающая модуль php, не закомментирована –
LoadModule php5_module libexec/apache2/libphp5.so
Привет Это помогает мне решить мою проблему:
root@zxxxx:/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>
Для моей конфигурации мне пришлось добавить эту строку в virtualhost (внутри <Directory>
):
AddType application/x-httpd-php .php
Это помогло мне выйти из a2enmod php5
, если модуль не существует, переустановите lamp-server, набрав apt-get install lamp-server^
единственное, что помогло мне после всех попыток добавить apache2.conf
<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>