我正在帮助维护一个基于 Magento 的电子商务网站。该网站是我们批发客户的销售渠道。我们最近决定开设第二家商店,以接触我们的零售客户。我们决定在我们的 Magento 商店内建立另一个网站,以便我们可以在两个商店之间共享产品。
我正在服务器上设置这个新网站,但遇到了一个问题。我为新的零售网站设置了第二个虚拟主机,并将此虚拟主机的 DocumentRoot 与批发网站的 DocumentRoot 设置为相同,这样我们就可以对两个网站使用一个 magento 应用程序。这就是错误发生的地方。
当我浏览新商店时,它会触发下载 index.php 文件。所以我知道 DocumentRoot 指令正在运行,但似乎 PHP 在此过程中被破坏了。
我使用 plesk 来管理服务器。我已确保在两个虚拟主机上都启用了 PHP,但仍然遇到同样的问题。
这听起来像是 PHP 崩溃的问题,还是我的 vhost.conf 文件设置不正确?(尽管 vhost 由 plesk 管理并且看起来正确)
任何帮助都感激不尽。
编辑:
这是 vhost 配置(由 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
-紧握
答案1
您的 DocumentRoot 尚未启用 PHP。
<IfModule mod_php5.c>
php_admin_flag engine on
</IfModule>
需要出现在 conf 的 Virtualhost 部分或 Directory 部分中 - 但它需要是作为文档根目录列出的目录:
<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>
答案2
如果它不能正确解释 index.php 并且没有在浏览器中将其显示为页面,那么 Web 服务器就不知道.php
应该将其视为可查看文件。
有一个文件可以启用 index.php 文件和 index.html 文件。我认为这是一个需要的 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 数据库对话所需的调整一样。
答案3
您的 Apache 只提供 .php 文件而不尝试解释它,这表明第二个 vhost 配置不正确。在第二个 vhost 上启用 php 后,您是否重新启动了 Apache?
答案4
您还可以使用以下代码将 .htaccess 文件放在文档根目录中
# Set the default handler.
DirectoryIndex index.php index.html index.htm