在把网站定义一个根目录为常量时要注意的事项

目的:我要找出当前路径的目录和文件;目录结构如下


wKioL1LWLpvTDQOnAAJGZO1SF4Y490.jpg




php代码如下:

<?php
    define('ROOTPAHT', $_SERVER['DOCUMENT_ROOT']);
    if (is_dir(ROOTPATH)){
        $fp=opendir(ROOTPATH);
        if ($fp){
            while ($file=readdir($fp)){
                //echo ROOTPATH.$file.'<br />';
                //echo $file.'<br />';
                if (is_dir(ROOTPAHT.$file)){
                    echo  $file.'是目录<br />';
                    }
            }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
        }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
    }
?>



浏览器输出:

.是目录
..是目录


却没有输出那个名为huang的文件夹,为什么会这样呢,原因就是因为路径的不完整造成


下面可以把代码改成这样:


<?php
    define('ROOTPAHT', $_SERVER['DOCUMENT_ROOT']);
    if (is_dir(ROOTPATH)){
        $fp=opendir(ROOTPATH);
        if ($fp){
            while ($file=readdir($fp)){
                echo ROOTPATH.$file.'<br />';
                //echo $file.'<br />';
                if (is_dir(ROOTPAHT.$file)){
                      // echo  ROOTPAHT.$file;
                    }
            }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
        }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
    }
?>


输出如下:

C:/wamp/www/file.
C:/wamp/www/file..
C:/wamp/www/file.buildpath
C:/wamp/www/file.project
C:/wamp/www/file.settings
C:/wamp/www/filehuang
C:/wamp/www/fileindex.php
C:/wamp/www/filenewfile.php

看上去是不是少了什么了呢;就是少一个分隔符/,就导致输出不一样的结果

把/加上后就可以正确输出了,


因为上面那个问题导致我想了很多,下面就说说应该注意的事项:

第一:

在定义根目录为常量或者变量时,请按照系统类型加上分隔符 window ‘\’linux或者unix  '/'  ,当然window 也可以用'/ ' ,请不要把\用在linux或者unix 上


第二:

请这样定义根目录的常量:

define('ROOTPATH', dirname(__FILE__));

不要使用:

define('ROOTPATH', $_SERVER['DOCUMENT_ROOT']);

因为$_SERVER['DOCUMENT_ROOT']可能会出现返回为空的情况:

举个例子,在cli 中运行就回返回为空字符串:

php 代码:

var_dump($_SERVER['DOCUMENT_ROOT']);

保存到index.php文件

php index.php  #以cli方式运行

输出结果:

wKiom1LWNceRiRq_AALBplQQgMQ441.jpg

下面写个正确定义根目录为常量的方法:

define('ROOTPATH', (str_replace('\\', '/',  dirname(__FILE__)).'/'));

这就可以一直使用/来作为分隔符了

你可能感兴趣的:(网站,常量,根目录)