有人能告诉我这两部分代码之间的区别

时间:2015-01-10 08:55:01

标签: wordpress

我正在尝试阅读wordpress代码以深入了解事情是如何运作的,而且因为我需要出于特殊原因把手伸进去,但我陷入了困境,希望你们中的一些人可以为我解释这些之间的区别:

if ( file_exists( ABSPATH . 'wp-config.php') )   

if ( file_exists( dirname(ABSPATH) . '/wp-config.php' )  

非常感谢

1 个答案:

答案 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方法前进一步。