Назад | Перейти на главную страницу

Два VHosts используют один и тот же DocumentRoot, PHP не работает на втором VHost

Я помогаю поддерживать сайт электронной коммерции, работающий на Magento. Этот сайт предназначен для наших оптовых покупателей. Недавно мы решили открыть второй магазин для розничных клиентов. Мы решили создать еще один веб-сайт в нашем магазине magento, чтобы мы могли делиться продуктами в обоих магазинах.

Я настраиваю этот новый сайт на сервере, но столкнулся с проблемой. Я установил второй виртуальный хост для нового розничного сайта, и я сделал DocumentRoot для этого виртуального хоста таким же, как и для оптового сайта, поэтому мы можем использовать одно приложение magento для обоих сайтов. Вот где возникает ошибка.

Когда я перехожу в новый магазин, он запускает загрузку файла index.php. Итак, я знаю, что директива DocumentRoot работает, но похоже, что PHP ломается в процессе.

Я использую plesk для управления сервером. Я убедился, что PHP включен на обоих vhosts, но проблема все еще остается.

Похоже ли это на проблему с нарушением работы PHP, или возможно, что мой файл vhost.conf настроен неправильно? (Хотя vhost управляется plesk и кажется правильным)

Любая помощь будет высоко ценится.

РЕДАКТИРОВАТЬ:

Вот конфигурации vhost (сгенерированные plesk):

<VirtualHost IPADDRESS:80>
ServerName   domain.com:80
ServerAdmin  "myemail@gmail.com"
DocumentRoot /var/www/vhosts/domain.com/subdomains/tk/httpdocs
CustomLog  /var/www/vhosts/domain.com/statistics/logs/access_log plesklog
ErrorLog  /var/www/vhosts/domain.com/statistics/logs/error_log
<IfModule mod_ssl.c>
    SSLEngine off
</IfModule>
<Directory  /var/www/vhosts/domain.com/subdomains/tk/httpdocs>
<IfModule mod_php4.c>
    php_admin_flag engine on
    php_admin_flag safe_mode off
    php_admin_value open_basedir "/var/www/vhosts/domain.com/subdomains/tk/httpdocs:/tmp"
</IfModule>
<IfModule mod_php5.c>
    php_admin_flag engine on
    php_admin_flag safe_mode off
    php_admin_value open_basedir "/var/www/vhosts/mkdesigngroup.com/subdomains/tk/httpdocs:/tmp"
</IfModule>
    Options -Includes -ExecCGI
</Directory>
Include /var/www/vhosts/domain.com/subdomains/tk/conf/vhost.conf

И вот что я добавил в vhost.conf (который входит в состав plesk):

DocumentRoot /var/www/vhosts/domain.com/subdomains/dev/httpdocs

-рукоятка

PHP не включен для вашего DocumentRoot.

<IfModule mod_php5.c>
php_admin_flag engine on
</IfModule>

должен появиться либо в разделе Virtualhost конфигурации, либо в разделе каталога, но это должен быть каталог, указанный как корень документа:

<Directory  /var/www/vhosts/domain.com/subdomains/dev/httpdocs>
    <IfModule mod_php5.c>
      php_admin_flag engine on
      php_admin_flag safe_mode off
      php_admin_value open_basedir "/var/www/vhosts/domain.com/subdomains/dev/httpdocs:/tmp"
    </IfModule>
</Directory>

Если он неправильно интерпретирует index.php и не отображает его как страницу в браузере, тогда веб-сервер не знает .php следует рассматривать как файл для просмотра.

Рядом с index.html есть файл для включения файлов index.php. Я бы сказал, что нужна настройка конфигурации PHP.

--редактировать--

Возможно, я перепутал две вещи, не внося ясности.

В Ubuntu Lucid есть файл (/etc/apache2/mods-available/dir.conf), чтобы index.php можно было рассматривать как индексный файл, т.е. вы можете написать www.me.com вместо www.me.com/index.php для его просмотра.

<IfModule mod_dir.c>

DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

</IfModule>

Если он присутствует, то требуется еще одна настройка PHP, например, знаменитый php5-mysql необходимо, чтобы PHP взаимодействовал с базой данных MySQL.

То, что ваш Apache просто обслуживает файл .php, не пытаясь его интерпретировать, предполагает, что второй виртуальный хост настроен неправильно. Вы перезапускали Apache после включения php на втором виртуальном хосте?

У меня была такая же проблема, и я решил ее, добавив следующие строки в vhost.conf:

DocumentRoot /var/www/vhosts/domain.com/subdomains/dev/httpdocs

<Directory /var/www/vhosts/domain.com/subdomains/dev/httpdocs>
        <IfModule sapi_apache2.c>
                php_admin_flag engine on
        </IfModule>
        <IfModule mod_php5.c>
                php_admin_flag engine on
        </IfModule>
</Directory>

Первая строка меняет корень документа, но по какой-то причине PHP перестает работать. Остальные строки возвращают PHP к жизни.

вы также можете поместить файл .htaccess в корневой каталог документа со следующим кодом

# Set the default handler.
DirectoryIndex index.php index.html index.htm

Убедитесь, что для второго веб-сайта включена поддержка cgi. Пожалуйста, дает возможность включить / отключить поддержку CGI. Это требует, чтобы php работал как CGI