【问题标题】:PHP's mkdir function trouble on WindowsWindows 上 PHP 的 mkdir 函数问题
【发布时间】:2012-02-06 07:44:52
【问题描述】:

我正在使用 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);

【问题讨论】:

  • 您无法通过 PHP 访问 tmp 文件夹。拳头你需要使用move_uploaded_files()
  • 您是否尝试过使用 getcwd() 查看脚本的执行位置?此外,该函数的第三个参数启用递归创建。因此,如果您尝试创建的目录有一个不存在的父目录(尚),它将被创建而不是引发错误。
  • 尝试[\\] 而不是[\]。也许纠正你的问题。
  • 如果您添加驱动器号(例如 c:\tmp\e0b7df)或省略第一个(反)斜杠 - tmp\e0b7df 怎么办?
  • 我通常将 dir chdir 更改为我想要创建文件夹的位置,然后按照答案建议使用递归。

标签: php mkdir


【解决方案1】:

我通常使用以下行作为常量,并放入一个全局文件以通过我的站点使用。

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

这应该可以解决分隔符问题。我还会尝试在 mkdir 中找到的递归属性,它允许您制作嵌套结构。 请看下文,http://php.net/manual/en/function.mkdir.php

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

mkdir ($path, $mode, true)

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 谢谢你这让我发疯了,谢谢谢谢
    • 遗憾的是,我已经在使用第二个和第三个参数,但它仍然显示 no such file or directory
    猜你喜欢
    • 2012-11-01
    • 2011-02-21
    • 1970-01-01
    • 2017-06-18
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 2012-09-20
    相关资源
    最近更新 更多