两个VHosts使用相同的DocumentRoot,PHP不能在第二个VHost上工作

我正在帮助维护在Magento上运行的电子商务网站。 这个网站是我们的批发客户的出路。 我们最近决定开设第二家店铺,以接触我们的零售客户。 我们决定在我们的magento商店内build立另一个网站,以便我们可以在两家商店之间共享产品。

我正在设置服务器上的这个新网站的过程中,但遇到了一个问题。 我已经为新的零售网站设置了第二个虚拟主机,并且我已经为这个虚拟主机的DocumentRoot和批发网站一样,所以我们可以为这两个网站使用一个magento应用程序。 这是发生错误的地方。

当我浏览到新的商店时,它会触发index.php文件的下载。 所以我知道DocumentRoot指令正在工作,但似乎PHP正在被打破。

我正在使用plesk来pipe理服务器。 我已经确定在这两个虚拟主机中都启用了PHP,但仍然遇到同样的问题。

这听起来像是一个PHP中断的问题,还是可能我的vhost.conf文件设置不正确? (虽然虚拟主机是由Pleskpipe理,并显示正确)

任何帮助都感激不尽。

编辑:

这是vhostconfiguration(由plesk生成):

<VirtualHost IPADDRESS:80> ServerName domain.com:80 ServerAdmin "[email protected]" 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 

-握

没有为您的DocumentRoot打开PHP。

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

需要出现在conf的虚拟主机部分或在一个目录部分 – 但是它需要是作为文档根目录列出的目录:

 <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,并且没有在浏览器中显示它,那么Web服务器就不知道.php应该被视为一个可见的文件。

有一个文件可以在index.html旁边启用index.php文件。 我会说这是一个PHPconfiguration调整所需要的。

– 编辑 –

我可能弄不清这两件事。

在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文件而不尝试解释它,这表明第二个虚拟主机configuration不正确。 在第二个虚拟主机上启用了PHP之后,你重新启动了Apache吗?

我有同样的问题,并通过添加以下几行到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工作