php文件目录分隔符Windows与linux兼容的问题

再这两个系统中,Windows的分隔符是“\”,linux是“/”,所以在文件目录匹配的时候可能会遇到系统不兼容出错,所以一般定义目录分隔符使用如下php常量:DIRECTORY_SEPARATOR

在 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上返回/,就是这么个区别,通常在定义包含文件路径或者上传保存目录的时候会用到。



原文地址:https://www.cnblogs.com/linqingvoe/p/10941719.html

时间: 2024-11-11 15:05:58

php文件目录分隔符Windows与linux兼容的问题的相关文章

java处理文件路径windows与linux兼容问题

window和linux分隔符其实就是\和/的区别,其实让文件路径根据服务器的系统的不同而不同就可以了,而java已经给我们提供方法了 System.getProperty("file.separator")能根据系统的不同获取文件路径的分隔符

Windows、Linux下文件操作(写、删除)错误的产生原因、及解决方法

catalog 0. 引言 1. Linux平台上涉及的File IO操作 2. Windows平台上涉及的File IO操作 0. 引言 本文试图讨论在windows.linux操作系统上基于C库进行文件IO操作时,可能遇到的错误,及其解决方法,主机安全攻防产品除了需要将安全攻防上的领域知识固化到程序实现上之外,还极度依赖关联系统本身.编程语言库的特性,原则上,并不是所有的安全需求都能100%地落实到程序设计中,这需要我们对操作系统.编程语言本身具有较深的理解 Relevant Link: h

不同于Windows的Linux系统中命令运用(一)

今天介绍的是linux系统中命令运用.与Windows系统不同,Linux系统更多是在命令行下面进行管理与配置. 一.简介: Linux操作系统由Linux内核和各种外围程序组成.内核用于实现CPU.内存分配.进程调度.设备驱动等核心操作,面向硬件为主:外围程序包括分析用户指令的解释器.网络服务程序.图形桌面程序等各种应用软件程序,面向用户为主. Linux系统的发行版本有以下三个:1.Red Hat系列2.Debian系列3.Ubuntu系列发行版的名称.版本由发行厂商决定. GPL和LGPL

windows和linux套接字中的select机制浅析

先来谈谈为什么会出现select函数,也就是select是解决什么问题的? 平常使用的recv函数时阻塞的,也就是如果没有数据可读,recv就会一直阻塞在那里,这是如果有另外一个连接过来,就得一直等待,这样实时性就不是太好. 这个问题的几个解决方法:1. 使用ioctlsocket函数,将recv函数设置成非阻塞的,这样不管套接字上有没有数据都会立刻返回,可以重复调用recv函数,这种方式叫做轮询(polling),但是这样效率很是问题,因为,大多数时间实际上是无数据可读的,花费时间不断反复执行

Java文件夹操作,判断多级路径是否存在,不存在就创建(包括windows和linux下的路径字符分析)

兼容windows和linux. 分析: 在windows下路径有以下表示方式: (标准)D:\test\1.txt (不标准,参考linux)D:/test/1.txt 然后在java中,尤其使用File对象在操作windows的路径时,非常的不好操作,因为不知道要用多少个斜杠“\”来表示. 斜杠“\”为转义字符(参考:http://www.cnblogs.com/EasonJim/p/6561576.html). 而java的File对象上无论是windows还是linux,输入的路径不管标

Windows、Linux、Web安装及调用Matlab程序完整说明(大章)

本文档详细说明了Linux下Web项目调用Matlab函数的完整操作,文章适合对Java.Linux有一定基础了解的人群(不了解也没什么,无非是多试几次).因Linux作为服务器,所以未在其上安装Matlab主程序,只安装了运行环境MCR. 本文档内所述的所有版本软件均以32位为准,JDK与MCR也使用32位.若你的系统为64位,Linux系统同样为64位,则请尽量选择使用64位版本的JDK与MCR. 由于Matlab的版本限制问题,请保证Matlab主程序和MATLABCompiler Run

14.Windows 与 Linux 文件共享

14. Windows 与 Linux 文件共享 实验要求: 1. 使用WinSCP工具实现windows与虚拟机之间文件共享. 2. 使用Samba服务实现windows与虚拟机之间文件共享. 实验器材: 软件: 1. 安装了RHEL6的vmware虚拟机. 2. WinSCP工具. 硬件: 1.PC机一台. 背景知识: 1. WinSCP: WinSCP 是一个 Windows 环境下使用 SSH 的开源图形化 SFTP 客户端.同时支持SCP 协议.它的主要功能就是在本地与远程计算机间安全

怎样在Windows和Linux下写相同的代码

目前,Linux在国内受到了越来越多的业内人士和用户的青睐.相信在不久的将来,在国内为Linux开发 的应用软件将会有很大的增加(这不,金山正在招兵买马移植WPS呢).由于未来将会是Windows和Linux两强鼎立的格局,怎样能够使得开发的软件保持最大的可移植性就成了一个很重要的问题.小弟经过一段时间的摸索,找到了这个问题的圆满解答. 在Linux下,所有的开发工具和库都属于自由软件,可以免费获得并且功能强大.如果这些工具和库都有相应的Windows版,那么我们就能够在Windows和Linu

JNI简易教程,windows and linux

关于各种原理,jni和jna对比什么的请自行百度,这里仅介绍一下基本使用方法,方便初学者,也给自己留一份笔记而已. 1~3介绍jni的使用流程,4示例了java中string和byte[]与c++的类型转换,5简单介绍了native方法定义为static的相关问题 简单说一下jni的使用流程就像一个圆,从java出发,声明你需要的native方法,生成一个对应的.h文件,根据这个h文件构造c/c++工程生成dll/so动态库,最后返回来给java调用. 首先要注意的是,要分开windows,li