Keep on going, never give up.

PHP相对路径和绝对路径常见处理方法

天缘最近基本完成把ZBLOG PHP化工作,最后是否使用到天缘博客上还要看后面时间情况,因为很多细节问题都需要静下心来仔细考虑,尤其是效率问题,当然了也可能会随时改换上来跟网友一同测试......前天又一次遇到个PHP的相对路径问题,特别顺便汇总一下PHP的相对路径和绝对路径处理方法,方便遇到类似问题的网友参考,文末留下一个小问题,喜欢网页编程的网友可以进来看一下。

一、绝对路径和相对路径常见用法

绝对路径示例:

$droot="/var/www/html/";//网站根目录

//$droot="D:/xampp/htdocs/";//网站根目录

require_once($droot."include/cfg.php");

使用上文第一种绝对路径方法,该方法虽然笨拙,不大好看,对于小WEB程序够用即可。

相对路径示例:

require_once("../include/cfg.php");

require_once("../../../include/metsky/cfg.php");

表示包含上一级目录include下的cfg.php文件。

二、补充参考用法

上文的路径设置方法对于简单的小项目来说路径问题并不明显,但是对于目录文件调用关系稍微复杂点,要想仍然使用上述相对路径方法则必须通过修改文件包含结构关系才可以,而绝对路径的使用又会让程序不规范,可移植性差,遇到这类问题时,可以试一下下面方法:

1、如果目录结构简单,可以通过调整包含文件的层次结构来解决,仍然使用相对路径。

3、结合使用绝对路径和相对路径,有时为了赶进度可以先行让项目通过。

4、使用dirname(__FILE__)获取当前文件的目录路径,比如:

require_once(dirname(__FILE__)."../../include/cfg.php");

5、使用下面的这个语句可以把当前目录设置为当前文件的目录路径,也较为方便,尤其是交叉引用的时候非常有用。

chdir(dirname(__FILE__));

6、对于使用虚拟主机的用户可以在包含文件之前使用set_include_path()函数,比如:

set_include_path(‘./’.PATH_SEPARATOR.dirname(__FILE__));

require_once(‘include/cfg.php’);

7、通过辅助设置php配置文件中的的include_path参数进行查询路径,include_path是指将要用到的包含文件所在的目录,可以将经常include文件放到一个统一的目录里,然后把这个目录设置在配置文件php.ini的include_path参数后面,在需要使用这些包含文件的时候只需要包含其名称即可,比如<?php include "metsky_cfg.php"; ?>就可以了,而实际上metsky_cfg.php文件则是存在设置的文件目录里。

附PHP.ini文件中include_path部分内容:

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows: "path1;path2"
;include_path = ".;c:phpincludes"
;
; PHP's default setting for include_path is ".;/path/to/php/pear"
; http://php.net/include-path
include_path = ".;D:\xampp\php\PEAR"

; The root of the PHP pages, used only if nonempty.
; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
; if you are running php as a CGI under any web server (other than IIS)
; see documentation for security issues.  The alternate is to use the
; cgi.force_redirect configuration below
; http://php.net/doc-root
doc_root =

; The directory under which PHP opens the script using /~username used only
; if nonempty.
; http://php.net/user-dir
user_dir =

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
; extension_dir = "ext"
extension_dir = "D:\xampp\php\ext"

......

8、通过.htaccess配置文件进行路径修改也可以达到上一条类似的效果,比如

php_value include_path "./include"

 

三、留下一个小问题

网站根目录是www,目录下包含一个images目录和一个test文件夹,images目录下是个logo.gif图片,test下是个index.html文件。

/www

——/images/basic/logo.gif

——/test/index.html

index.html里的代码如下:

<img src="../images/basic/logo.gif"/>——执行OK

<img src="../../../images/basic/logo.gif"/>——也会执行OK

这是为什么?

 

更多文章:

读写文件与读写数据库的效率比较

PHP常用正则表达式收集整理

PHP字符串正则替换及剖分函数比较

PHP.ini日期时间字段[DATE]详解

利用Ajax无刷新验证用户名、密码和邮箱等输入信息

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.