【问题标题】:mkdir function, doesn't appear to be workingmkdir 功能,似乎没有工作
【发布时间】:2012-05-07 19:58:32
【问题描述】:

我在我的 php 网页中创建了一个 mkdir 函数,但它似乎不起作用。

这里是:

mkdir("Game/" . $user . "/" . $name . ".actibuild", 0777, true);

用户和名称在上面定义。这是代码的sn-p:

    if (isset($_POST['name'])){
        if (isset($_POST['desc'])){
            $name = mysql_real_escape_string($_POST['name']);
            $desc = mysql_real_escape_string($_POST['desc']);
            $user = $check_user['Username'];
            mkdir("Game/" . $user . "/" . $name . ".actibuild", 0777, true);


            mysql_query("INSERT INTO `games`(`creator`, `name`, `desc`) VALUES ('$user', '$name', '$desc')");
            header('Location: Games.php');
        }
    }

它正在正确地将这些查询运行到数据库中,但它没有创建这些目录。

你能帮忙吗?

【问题讨论】:

  • php 错误日志中有错误吗?这可能是权限问题...
  • mkdir() 如果失败,将返回 false。可以?您是否具有在该位置创建目录的文件权限?
  • 是的,有权限可以创建,而且好像没有返回false或者true。
  • 注意,使用用户提供的 POST 值来修改文件系统是非常危险的。您必须验证它们不包含路径中毒字符,例如 ../ 或 NULL 字节,以防止写入您的 FS 的意外区域。
  • @MrSlayer OP 已经将递归选项设置为 true。

标签: php mysql mkdir


【解决方案1】:

检查当前目录:

echo __FILE__;

echo getcwd();

并建立相对于该参考的路径。

你可以使用 chdir("/") 将根目录设置为当前目录,然后尝试创建你的路径。

【讨论】:

  • 这似乎对我没有帮助。我已经完成了,但没有给我任何进展。
  • 哦,顺便说一句,您的根目录不是“/”,而是“/Idk”。在 mkdir 之前写 chdir("/Idk"); 然后再试一次。
【解决方案2】:

你知道 PHP 在哪里执行吗?你有一个相对的系统路径(从游戏开始)。很有可能,您的目录正在被创建(如果权限允许),但位于相对于工作目录的位置,该位置不一定与您的 PHP 脚本所在的位置相同。

【讨论】:

  • 它使用 xampp 从 localhost 执行。文件路径为:C:\xampp\htdocs\Idk
【解决方案3】:

您使用相对路径,可能不是您认为创建目录的位置,而是当前目录/web-root/etc。

试试:

$path = "Game/" . $user . "/" . $name . ".actibuild";
is_writable('.') || die(realpath('.') . ' is not writable');
mkdir($path, 0777, true) || die(realpath($path).' directory not created');
print_r(realpath($path));

【讨论】:

  • 我得到了“未创建目录”。
  • 你能从命令行运行相同的 php,然后看看会发生什么吗?如果您正在运行的命令或 PHP 的权限有问题,它至少会让您知道。
  • 命令行?抱歉,我不知道那是什么,我对 PHP 比较陌生。
  • @user1380580, 然后is_writable('.') || die(realpath('.'). ' is not writable'); 应该告诉你它是否是权限大小写...
  • 我得到:警告:mkdir() [function.mkdir]:文件存在于第 40 行的 C:\xampp\htdocs\Idk\My\Games.php 目录未创建
猜你喜欢
  • 1970-01-01
  • 2013-11-25
  • 2017-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多