PHP中include路径的解决方法汇总
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
这几天整理一份很乱的代码,这才意识到php对include处理不是一般的贱:别的编程语言在处理include中的相对目录时,都是以当前处理的文件作为基准。也就是说,如果A包含B,B包含C时,C再包含一个含相对路径的文件,那么路径是相对于C的。这样的处理很自然,符合人们的直觉,也便于开发出路径无关的程序包。 可是PHP不这样,它优先相对工作目录来处理,并且如果路径中包含. ..的话,则只相对于工作目录。 下面是解决这一问题的几种方式:
__FILE__ always equals to the real path of a php script regardless whether it's included. __FILE__ helps you specify the file to include using relative path to the including file. <?php include dirname(__FILE__).'/subdir'; //dirname return value does not contain the trailing slash ?>
This method allows you to specify a path relative to the web server doc_root for file inclusion. 例如你一开始放置在xxx.com/,后来需要放到xxx.com/abc/下的话,你要改文件(在一个公有文件中计算ROOT的位置,其他文件包含这个共有文件)。 <?php if (!defined("WETSITE_BASE_DIR")) define("WETSITE_BASE_DIR", $_SERVER['DOCUMENT_ROOT'].'/Clare/'); require_once(WETSITE_BASE_DIR.'includes/global.inc.php'); ?>
The include looks for file relative to current working directory. We can use this feature. It's really a "fancy" way, but I'm not sure whether it's safe all the time. Who knows? rainfalling at yahoo dot com (21-Sep-2005 01:06) This is yet another way to include files relative to the current file. I find it easier if you have a lot of includes. <?php $prewd = getcwd(); // get the current working directory chdir(realpath(dirname(__FILE__))); // change working directory to the location of this file include('includedfile.php'); // include relative to this file chdir($prewd); // change back to previous working dir ?>
This way is the most convenient way but it's not without flaws. First, not in all cases you have permission to change server configuration. Second, if there are many path specified in include_path, the actually included file may not be the one you expected because there may be files of the same name under different directories.
This almost the best way if your scripts commonly need a startup script. We can do a lot of useful things in the startup script, for examples, define constants, load configurations. But it's not always OK to change the php.ini settings. Remember the most adaptive application should be as independent from configs as possible. 该文章在 2012/8/6 9:29:26 编辑过 |
关键字查询
相关文章
正在查询... |