8

刚刚在 Linux 服务器上安装完 Magento。

当我转到 Magento“管理面板”时,我可以在页面顶部看到以下消息。

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

此错误消息的最可能原因是什么?

谢谢,

约翰·戈切

4

7 回答 7

19

Magento 使用各种目录中的 .htaccess 文件来拒绝对目录树的访问。您会在应用程序、媒体、var 以及 Magento 认为适合粘贴它们的任何其他地方找到它们。他们做各种各样的事情,比如拒绝查看(app、var)、执行(媒体.htaccess)。要使这些 .htaccess 文件正常工作,在 doc root .htaccess 或虚拟服务器配置中设置以下内容非常重要。

Options FollowSymLinks
AllowOverride All

Magento 很有可能检测到应用目录 .htaccess 文件不允许拒绝对您的 app/etc/local.xml 文件的网络访问,因此任何使用 Web 浏览器的人都可以看到您的所有数据库凭据和加密密钥。

另一个问题可能是您的文件/目录权限过于宽松。

对于在 FastCGI、SuPHP 或 LSAPI 下运行的 Magento

find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
chmod 550 pear #for Magento pre 1.5
chmod 550 mage #for Magento 1.5 and up
chmod 550 cron.sh

对于在 DSO 下运行的 Magento (mod_php)

find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
chmod o+w var var/.htaccess app/etc
chmod 550 pear #for Magento pre 1.5
chmod 550 mage #for Magento 1.5 and up
chmod 550 cron.sh
chmod -R o+w media

对于下面的问题, app/etc 文件夹应该有以下 .htaccess 文件。尝试通过服务器读取任何内容都会引发 403 错误。您的下一步是与您的网络托管服务商取得联系,以了解为什么该文件没有被兑现。

Order deny,allow
Deny from all

注意:如果您使用的是 nginx 等替代 http 服务器,则必须搜索在 Magento 目录树中创建的所有 .htaccess 文件,并重新创建 Magento 在 nginx 设置中使用的所有 .htaccess 函数,以便您拥有相同的文件/目录保护作为标准的 Apache DSO 安装。IIS 上的 Windows 安装也是如此。

于 2012-07-15T16:54:46.333 回答
3

我尝试了以上所有方法,但都没有在我们的虚拟主机上工作。“AllowOverride All”在我们的 vhosts.conf 上不起作用,因此,“Deny from all”被忽略了。

将此代码添加到 .htaccess 中,它的魅力...

##### Block access to local.xml #####
RewriteRule ^(.*)local.xml$ - [F,L]
于 2015-03-09T17:03:15.157 回答
2

Magento 检查是否/app/etc/local.xml可访问(使用 curl)。您可以在浏览器中自己尝试验证。

要解决此问题,您必须确保该文件不再可见。你如何做到这一点取决于你的网络服务器。Magento 附带了一个.htaccess以防止访问,但您可能复制了没有隐藏文件的文件夹。cp不复制它们。或者apache无法访问.htaccess检查文件权限。

于 2014-02-11T15:59:37.410 回答
2

1.在httpd.conf中添加以下内容。

    <Directory "/var/www/html/app/etc">
        Options FollowSymLinks
        AllowOverride All
    </Directory>
  1. 将权限从 ftp 设置为 local.xml =>600

  2. sudo /etc/init.d/httpd restart

  3. sudo /etc/init.d/httpd reload
于 2013-01-15T13:14:22.393 回答
0

@Brijmohan karadia 和 @Spudley

你的解决方案奏效了。我正在使用 AWS Linux 安装 Magento。

  1. 转到 /etc/httpd/conf/httpd.conf

  2. 在 httpd.conf 中添加以下内容。

    选项 FollowSymLinks AllowOverride All

3.在文件路径/app/etc/local.xml中设置从SSH/FTP到local.xml的权限=>600

  1. sudo 服务 httpd 重启
于 2017-03-24T08:01:33.713 回答
0

我按照以下步骤解决了这个问题:

确认 Magento 安装的 app 子目录中有一个 .htaccess 文件。如果 .htaccess 文件丢失,请在 app 子目录中创建一个新的 .htaccess 文件,其中包含以下指令:

Order deny,allow
Deny from all

确认文件权限设置正确。通常,目录的权限应该设置为 755(用户的读取、写入和执行权限,组和世界的读取和执行权限)。文件的权限应该设置为 644(用户的读写权限,组和世界的读取权限)。

请将 .htaccess 文件权限更改为 644,然后刷新 magento 管理页面。

于 2016-03-11T21:32:29.347 回答
-4

The app/etc/local.xml file needs to be chmodded to 600 and the error will go away ;)

于 2012-07-15T21:26:48.653 回答