php目录分隔符DIRECTORY_SEPARATOR

在windows我们习惯性的使用“\”作为文件分隔符,但是在linux上系统不认识这个标识,于是就要引入这个php内置变量了:DIRECTORY_SEPARATOR

 
路径分隔符

windows

\ or /

linux

/

在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符,在linux上路径的分隔符是/,这就导致了一个问题,比如开发机器是windows,有一个图片上传程序,,而我们又使用了(\)作为文件分隔符,调试机器上指定的上传文件保存目录是:

define(‘ROOT‘,dirname(__FILE__)."\upload"),

在本地调试都很正常,但是上传到linux服务器的时候会发现会出错。

这个问题就是出在文件的分隔符上,windows上习惯性的使用\作为文件分隔符,但是在linux上人家是不认识这个标识的,人家只认识/,于是就要引入下面这个php内置变量了:DIRECTORY_SEPARATOR。

上面的写法可以改写为以下无错写法:

define(‘ROOT‘,dirname(__FILE__).DIRECTORY_SEPARATOR."upload");

这样就可以确保不会出错了。

例如discuz里面是这样写的:

define(‘S_ROOT‘,dirname(__FILE__).DIRECTORY_SEPARATOR);

回到问题本身上,DIRECTORY_SEPARATOR是一个返回跟操作系统相关的路径分隔符php内置命令,在windows上返回\,而在linux或者类unix上返回/,就是这么个区别,通常在定义包含文件路径或者上传保存目录的时候会用到。

使用实例:

<?php
include(‘smarty/Smarty.class.php‘);
//程序目录
const DIR_SEP = DIRECTORY_SEPARATOR;
define(‘SITE_ROOT‘, dirname(__FILE__).DIR_SEP);  

$smarty = new Smarty;
$smarty->template_dir = SITE_ROOT.‘templates‘.DIR_SEP;
$smarty->complie_dir  = SITE_ROOT.‘templates_c‘.DIR_SEP;
$smarty->config_dir   = SITE_ROOT.‘configs‘.DIR_SEP;
$smarty->cache_dir    = SITE_ROOT.‘cache‘.DIR_SEP;  

$smarty->assign(‘world‘,‘hello world!‘);
$smarty->display(‘index.htm‘);
?>

php目录分隔符DIRECTORY_SEPARATOR,布布扣,bubuko.com

时间: 2024-10-18 10:21:03

php目录分隔符DIRECTORY_SEPARATOR的相关文章

关于目录分隔符和配置相对目录最简单明了的解惑,值得看一下

对程序了解一点都会知道目录分隔符,就是这个目录分隔符,我们是不是用着感觉很简单,可是遇到相对目录又很头疼呢?现在呢,看过我这篇文章你会豁然开朗的,觉得原来是这样的,废话不说进入正题. 我们最常用和目录相关的命令就是 cd 命令了,如 cd .cd /.cd..cd...cd./.cd../,其实这些命令都很简单,大家只要敲下都会通过观察结果而理解的.要明白理解这些命令不难,难是在离开这些命令,你可以随意去配置相对目录.要像随意配置,就要明白这些"/".".",带表着

对于文件File类型中的目录分隔符

当我们在使用File f=new File(path); 对于这个path来说是一个很痛苦的事情,在不同的系统上面的分隔符号是不一样的 在windows下面的话是一个"\"而在unix下面是一个"/" 在java中使用 File f=new File("/Users/lonecloud/Downloads"+File.separator+"admin.jpg"); 其中File.separator可以自动识别系统,然后找到对应

我也学php:编码规范/翻译自PSR

PHP社区百花齐放,拥有大量的函数库.框架和组件.PHP开发者通常会在自己的项目中使用若干个外部库,因而PHP代码遵循或尽量接近同一个代码风格就非常重要,可以让开发者方便地把多个代码库集成在自己的项目中. 框架互操作组(即PHP标准组)发布了一系列代码风格推荐标准,即PSR-0,PSR-1,PSR-2和PSR-3. 不要让这些名称所混淆,这些推荐仅是一些被其它项目所遵循的规则,如Drupal, Zend, Symfony, CakePHP, phpBB, AWS SDK, FuelPHP, Li

PSR 类自动加载规范的翻译与看法

先列举一些资源: PSR-0官网原文 PSR的Github源 PSR中文翻译的Github源 有几点事先说明: 翻译部分,我只挑选PSR-0和PSR-4中的主要规范内容进行翻译. 我的翻译,侧重以理解的角度,而不是严格的文法翻译. 关键修饰词的说明: **MUST** __务必__ **MUST_NOT** __绝不__ **REQUIRED** __务必__ **SHALL** __务必__ **SHALL_NOT** __绝不__ **SHOULD** __应该__ **SHOULD_NOT

PHP简单递归遍历所有目录

博主热衷各种互联网技术,常啰嗦,时常伴有强迫症,常更新,觉得文章对你有帮助的可以关注我. 转载请注明"深蓝的镰刀" function list_dir($root){ $dirs = scandir($root); foreach($dirs as $dir){ if(is_dir($root.DIRECTORY_SEPARATOR.$dir) && (in_array($dir,array('.','..')) != '.')){ echo $root.DIRECTO

DIRECTORY_SEPARATOR

DIRECTORY_SEPARATOR 系统目录分隔符. 在 Windows 中,斜线"/"和反斜线"\"都可以用作目录分隔符,在linux上路径的分隔符是斜线"/". 若在 windows 上习惯性的使用反斜线"\"作为文件分隔符,则在 linux 服务器上运行时就会报错. 例如: // 错误的写法 define('UPLOAD_PATH', dirname(__FILE__).'\upload'); // 正确的写法 de

换行、目录分隔、相对目录

在开发中我们经常遇到处理文件.目录时,操作系统平台不一样,导致开发时没问题,部署时发现和预期的结果不一样.部分就是由于操作系统差异引起的. 各个操作系统平台差异 换行符 Windows \r\n Linux \n Mac \r 所以有时候,我们在windows下面打开linux上的文件只有一行就是这个原因. 目录分隔符 Windows \ 或者 / Linux / Mac / 如何保持平台一致性? 自己根据环境处理换行,目录分隔符 通过使用PHP内置跨平台常量 我们有一个原则就是能不自己处理就不

遍历指定目录获得文件名或者文件夹名称,或者两则都要

1 仅获得文件名的方法 2 function fileAction($dir) 3 { 4 static $files = array(); // 使用静态变量,预防递归调用的时候覆盖 5 foreach (glob($dir.DIRECTORY_SEPARATOR.'*') as $file) 6 // DIRECTORY_SEPARATOR :目录分隔符 win下 \ ,Linux下 / 7 { 8 if(!is_dir($file)){ 9 $files[] = $file; 10 }el

php的内置常量 DIRECTORY_SEPARATOR

目录分隔符,是定义php的内置常量.在调试机器上,在windows我们习惯性的使用“\”作为文件分隔符,但是在linux上系统不认识这个标识,于是就要引入这个php内置常量了:DIRECTORY_SEPARATOR 中文名 目录分隔符 目录 1 定义 2 说明 3 例子 定义 编辑 php的内置常量DIRECTORY_SEPARATOR是一个显示系统分隔符的命令,DIRECTORY_SEPARATOR是php的内部常量,不需要任何定义与包含即可直接使用. 说明 编辑 路径分隔符 windows