许多我有一个config.PHP文件在一个Web应用程序的根目录,我想要包含在几乎每个其他PHP文件.所以大部分都有一条线:
require_once("config.PHP");
或有时
require_once("../config.PHP");
甚至
require_once("../../config.PHP");
但是我第一次没有得到正确的答案.我无法弄清楚在读取其中一个文件时,PHP将被认为是当前的工作目录.显然不是包含require_once()调用的文件的目录,因为我可以在同一目录中有两个文件具有不同的config.PHP路径.
如何使一个路径正确刷新页面,但是ajax可以更新页面的一部分需要与require_once()语句中config.PHP不同的路径;
什么是秘密?该路径从哪里评估?
拍摄,我害怕这不会是一个常见的问题 – 这是在apache 2.2.8和PHP 5.2.6上运行在Windows上.
PHP的当前工作目录是被调用脚本文件所在的目录.如果你的文件看起来像这样:
/A foo.PHP tar.PHP B/ bar.PHP
如果您调用foo.PHP(例如:http://example.com/foo.php),则工作目录为/ A /.如果您调用bar.PHP(例如:http://example.com/B/bar.php),则工作目录为/ A / B /.
那里有棘手的地方.让我们说foo.PHP是这样的:
<?PHP require_once( 'B/bar.PHP' ); ?>
而bar.PHP是:
<?PHP require_once( 'tar.PHP'); ?>
如果我们调用foo.PHP,那么bar.PHP会成功地调用tar.PHP,因为tar.PHP和foo.PHP在同一个目录下,恰好是工作目录.如果你调用bar.PHP,它将失败.
一般来说,您将看到所有文件:
require_once( realpath( dirname( __FILE__ ) ).'/../../path/to/file.PHP' );
或使用配置文件:
// config file define( "APP_ROOT",realpath( dirname( __FILE__ ) ).'/' );
其余的文件使用:
require_once( APP_ROOT.'../../path/to/file.PHP' );