今天是: | 首页 | 营销咨讯 | 推销技巧 | 网络营销 | 论文大全 | 外贸知识 | 市场信息 | 留言咨询 | 论坛 |
最 新 文 章
普通文章解读二八理论和长尾理论在…
普通文章雅虎倒向谷歌被反垄断部门…
普通文章网络视频营销漫路求索
普通文章涂料是否适合网络营销
普通文章IMPACT揭秘网络营销秘诀
普通文章广告也要得民心,令人生厌…
普通文章谷歌在华战略转向中小企业
普通文章博客营销文章写作技巧
普通文章网盛1800万收购中华纺织网
普通文章互联网进入营销阶段
最 新 热 门
普通文章解读二八理论和长尾理论在…
普通文章雅虎倒向谷歌被反垄断部门…
普通文章网络视频营销漫路求索
普通文章涂料是否适合网络营销
普通文章IMPACT揭秘网络营销秘诀
普通文章广告也要得民心,令人生厌…
普通文章谷歌在华战略转向中小企业
普通文章博客营销文章写作技巧
普通文章网盛1800万收购中华纺织网
普通文章互联网进入营销阶段
最 新 推 荐
推荐文章网站策划之栏目策划
推荐文章网络营销--创意致胜 充满“…
推荐文章Web2.0创业者面临艰难选择…
相 关 文 章
  • 如何恢复Photoshop的缺省设置

  • SQL安装问题总结

  • PHP.MVC的模板标签系统(三)

  • PHP.MVC的模板标签系统(五)

  • IIS环境下安装PHP5手记

  • 在Windows2000ADV下配置Apac…

  • PHP安全配置

  • Win2003下APACHE+PHP5+MYSQL…

  • PHP5在Apache下的两种模式的…

  • PHP网页优化

  • Q
    您现在的位置: 推销员 >> 网络营销 >> 网站建设 >> PHP代码学习 >> 文章正文
    PHP中路径问题的解决方案

    引言:关于PERL与PHP中的包含路径一直是一个比较难解的问题,主要是与操作系统和WEB服务器有关,不可能非常智能化的解决这个路径问题。相对于PERL,PHP的路径好得多,解决起来也容易得多,因为PHP的相对路径在PHP程序中的任何场合都可以使用,而不象PERL在某些语句中必须用绝对路径而导致移植的极其复杂。

    基于此,在PHP中,我设计了一个绝对稳妥的解决方案,如下所述。

    原则:
    使用相对路径,但在相对路径中用绝对路径(有点绕,待会儿详解),一是可以保证可移植性,二是可以方便地修改,三是公式化且结构清晰明了,易于扩展。

    步骤详解:
    1、先确定好一个程序的根目录,注意是文件系统下的,不是WEB服务器下的虚拟目录,不过一般情况下该目录下的子目录的相对路径与URL下该目录的虚拟子目录是相同的。
    2、在定义好的程序根目录下的每个子目录下(其实不一定是每个,根据需要)建立一个settings.php,里面定义一个变量或是常数(常数比较好,因为作用域比较大),如APPROOT,但这个APPROOT却不是绝对路径,而是该目录相对于你指定的程序根目录的相对路径。
    3、在此目录下的所有程序入口文件(也即第一个包含其它文件的文件,或是允许直接在浏览器中浏览的文件)中第一句写上require_once('settings.php');,但要注意,所有被包含文件最好不要加此句——其实加上也可以,因为你可以在settings.php中写上 if(!defined(APPROOT)) define(APPROOT, '../..');这类的语句以防重定义。
    4、如果你要包含其它文件,无论是直接还是间接地包含,都可以写成 include(APPROOT.$path);,这里$path为被包含文件相对于你所指定的程序根目录的绝对路径。

    原理:
    定下的程序根目录是相对路径,但具体的目录位置是相对于那个根目录的绝对路径,两者组合起来就是具体文件相对于程序根目录的相对路径了。例如目录c:\wwwroot\app为你指定的程序根目录,然后有这么两个文件c:\wwwroot\app\a\index.php和c:\wwwroot\app\b\inc.php。对子目录a来说,APPROOT是'..',而对程序根目录来说,inc.php的绝对路径是$path='/b/inc.php',两者组合为'../b/inc.php'。如果要在index.php中包含inc.php就要写成include('../b/inc.php');,而这个路径不就正好是刚才组合而成的APPROOT.$path吗?


    结论:
    经过以上处理,各个路径绝对整齐划一,唯一罗嗦一点的就是每个目录下要定义一下这个APPROOT,但每个目录下只需在本目录的settings.php中定义一次就足够了。如果你整个程序只有一个入口文件,如index.php,而其它文件全部都是直接或是间接地被包含进这个唯一的入口文件的话,就只需在index.php的所在目录下的settings.php中定义一次就OK了。如果有朋友做过Delphi的工程并对工程文件研究过的话,就会发现我刚才说的一个程序只有一个主入口文件的情况与Delphi的工程十分相似,因为Delphi除了一个主程序文件(dpr文件),其余的全部是单元文件或是资源文件,都不能独立执行。在PHP中,如果这种情况出现,只需定义一次APPROOT,并在主程序文件中第一句话写成require_once('settings.php');,而以后所有的包含全都可以用include(APPROOT.$path);,就保证不会有任何问题,除非你不会写这个“包含文件相对于程序根目录的绝对路径”$path。

    这个方法我用了不止一次,收效很好。另外还可以参考JSP的WEB-INFO中路径的定义方式。

    我这个是以不变应万变的公式化的方案,如果有朋友有更好的方案,欢迎提出讨论!如有不明白的也欢迎提出。

    PHP中路径问题的解决方案
    作者:佚名 文章来源:www.top-sales.com.cn 点击数: 更新时间:2007-3-22     
    [ 字体:缩小 正常 放大 | 双击自动滚屏 ]
    请选择合适的字体颜色:
    文章录入:admin    责任编辑:admin 
  • 上一个文章:

  • 下一个文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 关于我们 | 友情链接 | 版权申明 |