我就是想知道为什么部署到服务器后,require的路径改成绝对路径才有效?
之前我是这样写的:require './thinkphp/ThinkPHP/ThinkPHP.php'; 但是这样写路径是错的 打开网页时候是空白页
后来改成了这样:
define('ROOT',$_SERVER['DOCUMENT_ROOT']);
define('THINK_PATH',ROOT.'/thinkphp/ThinkPHP/');
require THINK_PATH.'ThinkPHP.php';
据说相对路径与服务器部署环境有关,但是为什么有关啊我的网站入口文件就是index.php,既然有这个这个入口文件  那么./不就是真正的当前目录吗 为什么路径不能用'./xxx/xxx' 这种形式?还是说index.php其实不是真正的入口文件? 求指导啊 要疯 

解决方案 »

  1.   

    谢谢版主大人回复
    可是tp的源码就是用相对路径写的 下面这个就是tp文档里的
    require './ThinkPHP/ThinkPHP.php';
    // 改成
    require './Runtime/lite.php';
    网上搜到一个鸟哥的文章
    1. 因为使用include_path和相对路径的情况下, 性能会和寻找的次数有关, 最坏的情况下, 如果你有10个include_path, 那么最多可能会重试11次才能找到要包含的文件, 所以, 在能使用绝对路径的情况下最好使用绝对路径.2. 因为目录相对路径的basedir, 永远都是当前工作路径, 如果要使用, 需要和实际部署路径相关, 所以实际使用的很少(当然, 也有借助chdir来完成的模块).3. 在模块化的系统设计中, 一般应该在模块内, 通过获取模块的部署路径(dirname(__FILE__), php5.3以后更是提供了__DIR__常量)从而使用绝对路径.
    第二条有提到 但是也没细说。。我还是不太明白 ./为什么就取不到当前工作路径