刚刚在 Linux 服务器上安装完 Magento。
当我转到 Magento“管理面板”时,我可以在页面顶部看到以下消息。
您的 Web 服务器配置不正确。因此,可以从外部访问包含敏感信息的配置文件。请联系您的托管服务提供商。
此错误消息的最可能原因是什么?
谢谢,
约翰·戈切
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 安装也是如此。
我尝试了以上所有方法,但都没有在我们的虚拟主机上工作。“AllowOverride All”在我们的 vhosts.conf 上不起作用,因此,“Deny from all”被忽略了。
将此代码添加到 .htaccess 中,它的魅力...
##### Block access to local.xml #####
RewriteRule ^(.*)local.xml$ - [F,L]
Magento 检查是否/app/etc/local.xml
可访问(使用 curl)。您可以在浏览器中自己尝试验证。
要解决此问题,您必须确保该文件不再可见。你如何做到这一点取决于你的网络服务器。Magento 附带了一个.htaccess
以防止访问,但您可能复制了没有隐藏文件的文件夹。cp
不复制它们。或者apache无法访问.htaccess
检查文件权限。
1.在httpd.conf中添加以下内容。
<Directory "/var/www/html/app/etc">
Options FollowSymLinks
AllowOverride All
</Directory>
将权限从 ftp 设置为 local.xml =>600
sudo /etc/init.d/httpd restart
sudo /etc/init.d/httpd reload
@Brijmohan karadia 和 @Spudley
你的解决方案奏效了。我正在使用 AWS Linux 安装 Magento。
转到 /etc/httpd/conf/httpd.conf
在 httpd.conf 中添加以下内容。
选项 FollowSymLinks AllowOverride All
3.在文件路径/app/etc/local.xml中设置从SSH/FTP到local.xml的权限=>600
我按照以下步骤解决了这个问题:
确认 Magento 安装的 app 子目录中有一个 .htaccess 文件。如果 .htaccess 文件丢失,请在 app 子目录中创建一个新的 .htaccess 文件,其中包含以下指令:
Order deny,allow
Deny from all
确认文件权限设置正确。通常,目录的权限应该设置为 755(用户的读取、写入和执行权限,组和世界的读取和执行权限)。文件的权限应该设置为 644(用户的读写权限,组和世界的读取权限)。
请将 .htaccess 文件权限更改为 644,然后刷新 magento 管理页面。
The app/etc/local.xml file needs to be chmodded to 600 and the error will go away ;)