您的位置:首页 > 运维架构 > 网站架构

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

2014-01-15 15:31 260 查看
目的:我要找出当前路径的目录和文件;目录结构如下





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方式运行
输出结果:



下面写个正确定义根目录为常量的方法:
define('ROOTPATH', (str_replace('\\', '/',  dirname(__FILE__)).'/'));
这就可以一直使用/来作为分隔符了

本文出自 “Freax” 博客,请务必保留此出处http://freax.blog.51cto.com/6614733/1351943
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: