按道理这类常见问题自己找答案的,可是越看我越糊涂了。大家看看我的理解是否正确。我自己写了一个单一入口的程序。就是说所有模块的Action都是走root/index.php。 后面加model名称和action名称和方法名称和参数名称。index.php?model=user&action=Login&method=check
app:init();  // require_once:  app.class.php app里面获取model 和 action 然后动态执行Action类的方法如:
UserLoginAction.class.phppublic function check(){
    //如果成功则跳转
    问题来了:跳转我这里用的是require_once  admin_index.php ,因为有些变量我想在admin_index.php里面使用,所以没用重定向,我也没有更好的办法啊。这个不像JAVA可以将对象传递给JSP。 可以用$_SESSION['uservo'],但是我不习惯将一个东西用Session传递,所以就干脆直接include进来。但是问题就来了。
}admin_index.php 里面的图片,CSS文件,JS文件 的路径怎么处理啊? 
我现在没有办法了,全部用绝对路径直接写死来。admin_index.php
如果用相对路径:$currentfolder = dirname(__FILE__); 也不是个办法啊? 你想想,所有的图片文件前面都加上一个
<img src="<?php echo currentfolder?>/images/logo.jpg" /> 我能理解require 和 include 的方式,相当于把引入文件的代码复制到当前index.php文件里面。 所以被引入的文件里面的路径实际上是index.php的所在目录。 如果全部用绝对路径也不好啊(这是我的最后一招了)
dirname(__FILE__) 方法还有一个问题:这个返回的好像是文件物理路径啊。 这不是什么都给别人知道啦?最后一招:全部用物理路径 ./ 表示当前路径相对于根目录index.php下:反正程序从开始到结束就相当于在一个文件里执行。 全部路径以 ./开头写死。////////////////////////////////////////////////////
谁有更好的办法啊? 非常感谢。 

解决方案 »

  1.   

    不介意的话可以用 $_SERVER['DOCUMENT_ROOT'] 这个会比你用绝对路径强.其实有很多方法。我自己还是用相对.当然有时候也会给路径搞得神经错乱,那么就修改include的方式,少给自己制造病例.
      

  2.   

    //虚拟主机
    dirname($_SERVER[ SCRIPT_FILENAME ])
    /var/chroot/home/content/12/8651412/html
    $_SERVER[ SCRIPT_FILENAME ]
    /var/chroot/home/content/12/8651412/html/file.php
    dirname(__FILE__);
    /home/content/12/8651412/html
    $_SERVER[ DOCUMENT_ROOT ]
    /var/chroot/home/content/12/8651412/html// 大家在做项目的时候,如果跳转到表现层的时候是不是都是用include啊? 还是header 加 $_SESSION[]  ? 开源项目都是框架开发的,看不懂啊?
      

  3.   

    如果是自已写的框架,有两种方式处理:一种是设全局变量或函数 如define('STYLE_PATH', 'xxxx');  这个推荐,如果换服务器了,一改就可以分流。第二是用base_url() ;取得你index.php文件的相对于根目录的路径。(这个只相对于程序内部, 实际上所有内部url都需要这个来构造)这样,无论你入口在哪,程序都不会错。
      

  4.   

    <?php
     $base_url = dirname(__FILE__);?>
    <head>
    <base href=<?php echo $base_url ?>' />
    </head>
    <body>
    <img src='images/logo.jpeg' /> 
    </body>是不是这个意思啊? 我是菜鸟,有个例子就好了。