如何为Windows和Linux平台定义DIRECTORY_SEPARATOR?

时间:2011-07-08 01:29:36

标签: php windows linux

现在我创建一个小型PHP应用程序,这里我有使用文件路径的问题,因为在Windows中使用此类型位置C:\Some\Location\index但在Linux /www/app/index中所以当我使用此{{1}定义路径时但是当应用程序在窗口机器中运行时,这个/应该是个问题。

所以我想在这里定义DIRECTORY_SEPARATOR Windows和Linux平台。

6 个答案:

答案 0 :(得分:45)

PHP接受\/作为所有操作系统中的有效路径分隔符。所以只需在代码中使用/

答案 1 :(得分:17)

为方便起见,您可以编写一个更短的常量:

DEFINE('DS', DIRECTORY_SEPARATOR); 

然后将您的路径写为:

$path = 'www'.DS.'app'.DS.'index'; 

或者我不明白你的问题?

答案 2 :(得分:6)

请参阅PHP Predefined Constants

也许它已经在您的脚本中定义,尝试回显DIRECTORY_SEPARATOR,看看它是否有任何值

答案 3 :(得分:3)

PHP将'\'和'/'理解为路径分隔符,无论您使用何种系统。我更喜欢在我的所有代码中使用'/'(unix方式)。当你在一个Windows盒子上并且需要提供一个完全合格的Windows / DOS路径时,我将拥有这个简单的非破坏性功能

function dosPath($path){
    return str_replace('/', '\\', $path);
}

示例:

$drive = 'C:';
$path = '/tmp/uploads';

echo dosPath($drive.$path);
echo dosPath($path);

答案 4 :(得分:0)

Windows在大多数情况下接受正斜杠,因此您可以使用它们。你甚至可以使用混合物,它不会抱怨。

确保你的单元测试套件也可以在Linux上传递!

答案 5 :(得分:0)

尝试使用此窗口

defined ('DS') ? null : define('DS', DIRECTORY_SEPARATOR);

define( 'SITE_ROOT',  DS . 'xampp' . DS .'htdocs' .  DS .'gallery');