PHP的mkdir函数在Windows上出现问题

时间:2012-01-09 19:35:34

标签: php mkdir

我正在使用PHP的命令行程序,我遇到了麻烦,我的第一个问题是当我调用PHP mkdir()时它给了我这个错误

Warning: mkdir(): No such file or directory in 
E:\Server\_ImageOptimize\OptimizeImage.php
on line 196

然后,我在PHP文档中读到一条用户注释,该注释表示正斜杠/在Windows下但在Unix上不适用于此方法。

所以我随后更改了我的代码,将它们更改为反斜杠,但它没有改变任何东西,我在同一行仍然遇到同样的错误。

下面的代码可以帮助我解决这个问题

// I tried both of these below
$tmp_path = '\tmp\e0bf7d6';
//$tmp_path = '/tmp/e0bf7d6';

echo $tmp_path;

mkdir($tmp_path);

2 个答案:

答案 0 :(得分:9)

实际问题是mkdir()每个调用只创建一个子目录,但是你传递了两个不存在的目录的路径。您通常必须一步一步地执行此操作:

mkdir("/tmp");
mkdir("/tmp/e0b093u209");
mkdir("/tmp/e0b093u209/thirddir");

或使用第三个参数快捷方式:

mkdir("/tmp/e0b093u209", 0777, TRUE);

答案 1 :(得分:3)

我通常使用以下行作为常量,然后输入一个全局文件来通过我的网站使用。

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

那应该解决分隔符问题。我还会尝试在mkdir中找到的递归属性,它允许你创建嵌套结构。 请参阅foillowing,http://php.net/manual/en/function.mkdir.php

你会注意到你需要像下面这样调用mkdir。

mkdir ($path, $mode, true)