源码如下:
<?php
    define("__DIR__",dirname(__FILE__)."\\");
    echo __DIR__;    
?>
本来打算获取当前路径,并在后面加上“\”,期望输出结果为:
D:\AppServ\www\01\
但是实际的输出结果为:
D:\AppServ\www\01
请高手指教!!!!

解决方案 »

  1.   

    __DIR__ 是 php 预置常量
    虽然用代码对其定义不会报错,但常量是只读的,其值修改不了的
      

  2.   


    我是在define里面加“\”,并不是在define后才试图修改__DIR__
      

  3.   

    <?php
    echo __DIR__;不开窍?
    已经说了:__DIR__ 是预定义常量
      

  4.   


    我是在define里面加“\”,并不是在define后才试图修改__DIR__
    就是说 你想定义的 __DIR__ 是PHP5.3之后的版本已经定义好的魔术常量 你再怎么define也没有用 
    如果5.3之前的 就是会用上define的定义了  
      

  5.   

    把__DIR__换别的
      

  6.   


    哦,知道了,谢谢!但是我还有一个地方不明白:如果将源码改成:
    define("__IDIR__",dirname(__FILE__)."\\");
         echo constant("__DIR__");
    就能输出期望的结果:D:\AppServ\www\01\
    既然系统预定义的常量不能更改,为什么采用这种方法就能修改__DIR__呢?
      

  7.   


    哦,知道了,谢谢!但是我还有一个地方不明白:如果将源码改成:
    define("__IDIR__",dirname(__FILE__)."\\");
         echo constant("__DIR__");
    就能输出期望的结果:D:\AppServ\www\01\
    既然系统预定义的常量不能更改,为什么采用这种方法就能修改__DIR__呢?感觉你还是没听懂,你定义一个__IDIR__变量怎么会影响__DIR__的值?都说了__DIR__是预定义常量,不能被改变。你改变得是__IDIR__,这个又不是预定义常量。
      

  8.   


    哦,知道了,谢谢!但是我还有一个地方不明白:如果将源码改成:
    define("__IDIR__",dirname(__FILE__)."\\");
         echo constant("__DIR__");
    就能输出期望的结果:D:\AppServ\www\01\
    既然系统预定义的常量不能更改,为什么采用这种方法就能修改__DIR__呢?感觉你还是没听懂,你定义一个__IDIR__变量怎么会影响__DIR__的值?都说了__DIR__是预定义常量,不能被改变。你改变得是__IDIR__,这个又不是预定义常量。
    哦,不好意思,是我写错了,我的源码是这样的:
    header("Content-Type:text/html;charset=UTF-8");
        define("__DIR__",dirname(__FILE__)."\\");
        echo constant("__DIR__");
    打印出的结果是:
    D:\AppServ\www\01\
    疑问依旧是为什么__DIR__的值变了?