mkdir()无法正常工作

时间:2010-06-24 18:54:02

标签: php mkdir

我的代码

mkdir("/some/absolute/path",0777);

mkdir("relative/path", 0777);

无效,安全模式已关闭,我甚至尝试将所有父文件夹设置为777。

有什么想法吗?

编辑:我确实打开了错误报告,在我的挫折中,我已经完成了整条路径,只是为了确保这不是问题。这将是一件非常简单的事情。

编辑编辑:为所有回复建议的人提供赞成...但我不会选择答案,因为这仍然没有得到解决,但我再次认为这将是其中一个开放的永远。

编辑x 3:所以我对这个问题的解决方案最不满意......我开始使用干净的虚拟机映像,重试它并立即运行。不开玩笑。

9 个答案:

答案 0 :(得分:15)

是否存在所有父目录?

如果没有,你需要启用递归(假设PHP5在这里):

mkdir('/path/to/your/dir',0777,true);
编辑:没有看到隐藏的评论说明var向下的每个目录都设置为世界可写,所以我打赌目录路径存在,上面的内容没有帮助。遗憾!

答案 1 :(得分:3)

您是否尝试递归创建这些目录,就像在命令行中使用mkdir -p一样?如果是,请将true指定为mkdir的第三个参数。

为了回应之前的建议,请指出您收到的错误消息。如果您没有收到,请在通话前使用此功能:error_reporting(-1); // ALL messagesini_set('display_errors', 'On');

答案 2 :(得分:1)

我有类似的问题,我发现,我的驱动器上没有可用空间。检查命令df(在Linux上)你的驱动器有多满。在这种情况下,允许root可能会创建文件和文件夹,因为他有预先保留的空间。如果您从命令行以root用户身份运行脚本 - 没有错误,但如果您的脚本由apache运行,则会出现错误。

答案 3 :(得分:1)

确保父目录具有正确的写入权限,这是我的问题

答案 4 :(得分:0)

您是否尝试过最短的测试?

MKDIR( '目录',0777);

如果这不起作用,我会尝试用标准的CHMOD创建,如0755(这是一个完全随机的猜测,也许服务器不允许通过PHP创建0777)

如果这不起作用我会说服务器可能需要不同的设置/ php没有文件夹上的文字权限,也许你可以询问你的主机提供商?

答案 5 :(得分:0)

如果有人遇到这个问题。.我可以给你一个答案,我花了2个小时来查找..我尝试使用完整路径和“ ../ mydirectoryname”。

尝试使用:

mkdir("./mydirectoryname", 0777, true);

而不是..

mkdir("../mydirectoryname", 0777, true);

答案 6 :(得分:0)

供以后参考,问题可能出在您试图创建新目录的目录没有足够权限的情况下。

例如,您的索引目录可能如下所示: index.php new_dirs_here

如果new_dirs_here没有足够的权限,则无法在其中创建目录。

要解决此问题,我将使用以下命令: chmod 777 new_dirs_here

我现在不担心安全性,只是试图解决眼前的问题。当然,您可以查找更好的权限设置,但其想法是您的new_dirs_here应该具有足够的权限。

然后,您的mkdir()管道应该可以正常工作。

祝你好运

答案 7 :(得分:-2)

您在路径名参数周围缺少引号。

答案 8 :(得分:-2)

您必须使用引号中的属性:

mkdir('path/to/your/dir','0777');