我正在尝试阅读wordpress代码以深入了解事情是如何运作的,而且因为我需要出于特殊原因把手伸进去,但我陷入了困境,希望你们中的一些人可以为我解释这些之间的区别:
if ( file_exists( ABSPATH . 'wp-config.php') )
和
if ( file_exists( dirname(ABSPATH) . '/wp-config.php' )
非常感谢
答案 0 :(得分:0)
假设您正在查看wp-load.php
,这些代码会执行相关评论所说的内容:
if ( file_exists( ABSPATH . 'wp-config.php') ) {
/** The config file resides in ABSPATH */
require_once( ABSPATH . 'wp-config.php' );
} elseif ( file_exists( dirname(ABSPATH) . '/wp-config.php' ) && ! file_exists( dirname(ABSPATH) . '/wp-settings.php' ) ) {
/** The config file resides one level above ABSPATH but is not part of another install */
require_once( dirname(ABSPATH) . '/wp-config.php' );
也就是说,他们正试图找到wp-config.php
文件。
如Hardening WordPress中所述,提高WordPress安装安全性的一个选项是将wp-config.php
文件移到WordPress安装根目录的上一级。这是因为您可以将Web服务器配置为不提供标准WordPress根目录之上的任何文件(index.php
存在的位置,因此必须可以从Web访问。)这使得某人可以看到的可能性稍微低一些wp-config.php
的内容,其中包含数据库密码等重要内容。
所以,given that:
请注意,wp-config.php可以存储在WordPress(其中wp-includes驻留)安装之上的一个目录级别。此外,请确保只有您(和Web服务器)可以读取此文件(通常表示400或440权限)。
... WordPress使用您看到的代码首先检查WordPress安装的绝对路径上是否有wp-config.php
文件,即您的根WordPress目录ABSPATH
,但是如果有的话不是,它通过检查包含根WordPress目录的目录中的wp-config.php
文件,使用dirname
方法前进一步。