Magento:您的Web服务器配置不正确。

15

我从现有的Magento实例中制作了一个tar.gz文件,将其移动到另一个DirectAdmin用户的域名下,解压tar.gz文件,复制数据库,更改数据库中的域名URL。前端运行良好。

后端给出以下错误:

您的Web服务器配置不正确。 因此,具有敏感信息的配置文件可以从外部访问。 请联系您的托管提供商。

我已经检查了文件夹和文件权限。 还尝试使用SSH访问更改用户:组设置的权限与DirectAdmin用户名相同的用户。 但是也没有起作用。

请注意,此安装在与实时环境相同的服务器上。

实时环境:(正常工作)http://imageshack.us/photo/my-images/197/nrhj.png/
测试环境:(不起作用)http://imageshack.us/photo/my-images/542/uklz.png/


1
展示两个文件夹的 ls -la,这样我们就可以看到你那里有什么。 - mnagel
看我的第一篇帖子,我附上了图片。 - user2576151
8个回答

10

具体来说,请检查app/etc/local.xml的权限,通常这意味着它是可被全球读取的。

此外,在app/etc/中应该有一个.htaccess文件,以防止内容被Web服务器提供。请检查一下你的tar备份是否包含了它。通常,这个问题是由使用FTP客户端进行传输时隐藏文件可见性关闭导致的。


4
缺失的 .htaccess 是我的问题。我去了一个全新的 Magento 安装并获取了位于 /app(而不是 /app/etc/)的 .htaccess 文件。.htaccess 文件只包含以下内容:Order deny,allow Deny from all。 - Joe Fletcher

8
对于Apache 2.4.x,您需要添加Require all granted,因此它应该类似于这样:
<Directory /var/www/magento>
  AllowOverride All
  # New directive needed in Apache 2.4.3: 
  Require all granted
</Directory>

来源: Apache: 客户端被服务器配置拒绝


6

我正在使用Debian 7和Apache 2.2.22以及Magento 1.9.1,需要添加:

<Directory /var/www/magento/>
            AllowOverride All
</Directory>

/etc/apache2/sites-available/default中,对我来说很有效。

4

与John Veldboom的答案相似,我将以下内容添加到/etc/apache2/apache2.conf,因为我的Magento安装在不同的目录下/var/www/html(例如,目录路径是Magento被解压缩的位置):

<Directory /var/www/html/>
        AllowOverride All
        Require all granted
</Directory>

在以下apache2和Ubuntu发行版中:

root@test-VirtualBox:/var/www/html# dpkg -l apache2 && lsb_release -a
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
ii  apache2        2.4.7-1ubunt amd64        Apache HTTP Server
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:    14.04
Codename:   trusty

2
我在Debian上遇到了这个问题,并发现我的服务器级站点配置(位于/etc/apache2/sites-available/default中)设置了AllowOverride None。将该行更改为AllowOverride All即可解决问题。

1
感谢Haselnussstrauch,您的答案对我有用。我的设置在apache2.conf中。
sudo nano /etc/apache2/apache2.conf

将默认的AllowOverride None更改为AllowOverride All。
<Directory /var/www/>
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

然后重新启动Apache:
sudo service apache2 restart

0

许多其他地方建议您通过将以下内容添加到httpd.conf来阻止IP地址访问您的服务器

<Location />
order allow,deny
allow from all
deny from aa.bb.cc.dd
</Location>

然而,由于某种原因,这会导致所有其他的 .htaccess 文件被忽略,包括用于保护 Magento 的 .htaccess 文件。


总结:不要使用Apache阻止IP地址(这太糟糕了),相反我使用fail2ban,它好多了。 - user3338098

0

我已经解决了问题,子文件夹(特别是app)内没有.htaccess文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接