我想用require功能引入一个模块.
模块名及路径:wwwroot/myphp/head.inc   里面调用了1个图片如:<img src="1.jpg"/>
现在有一个文件wwwroot/myphp/1.php. 里面有一句调用语句"<?php require(head.inc) ?>"    /*1.jpg调入正确,因为1.php与head.inc在同一个文件夹下*/但是有:wwwroot/2.php .里面有一句调用语句"<?php require("myphp/head.inc") ?>"    /*发现1.jpg图片不能调入,我明白,路径有问题.  */这么一来 wwwroot/myphp/head.inc 这个模块就仅能供与他同目录下的文件调用了.有什么办法可以让 head.inc 这个文件被任意文件夹下的php都调用呢? 当然一定要保证head.inc里面的每一个图片,js,都引入正常. 

解决方案 »

  1.   

    个人观点:这就是为什么许多PHP框架采用单一接口的方式,来调用文件
    如果楼主一定要用动态路径,我的想法是将路径作为参数,在引用时传参
      

  2.   

    在head.inc里加一行代码:
    define('ROOT',substr(__FILE__,0,-14));
    <img src="1.jpg"/> 改成<img src="<?php echo ROOT;?>1.jpg"/> 
      

  3.   

    html中调用图片的路径相对于当前页面路径,require是php内部解析的
    wwwroot/myphp/1.php调用1.jpg成功可看出图片是wwwroot/myphp/1.jpg
    要想wwwroot/2.php可以访问到图片相当于从2.php这个路径要访问myphp/1.jpg,和你require的文件路径无关
    不知道这么说你能不能明白
      

  4.   

    前面写错了
    <img src="1.jpg"/> 改成 <img src=" <?php echo ROOT;?>myphp/1.jpg"/> 
      

  5.   

    这样写试试
    require(dirname(__FILE__)."/myphp/head.inc");
      

  6.   

    用绝对+相对路径
    include_once(dirname(__FILE__)."/myphp/head.inc");dirname(__FILE__)这个是本文件的绝对路径"/../././."这个是本文件与引入文件的相对路径 "/....../"记得最前面要加上 '/'
    我也是这样用的
      

  7.   

    require 使用的是操作系统的路径,而img使用的的网站的路径