Php mkdir()不工作

Php mkdir()不工作,php,mkdir,Php,Mkdir,我的代码 及 不工作,安全模式关闭,我甚至尝试将所有父文件夹设置为777 有什么想法吗 编辑:我确实打开了错误报告,在我沮丧的时候,我已经对整个路径进行了777检查,只是为了确保这不是问题所在。一定是发生了一些愚蠢的简单事情 编辑:向所有回复建议的人投票。。。但我不会选择一个答案,因为这个问题仍然没有解决,但我想这将是一个永远开放的答案 编辑X3:所以我对这个问题有史以来最不满意的解决方案。。。我从一个干净的虚拟机映像开始,然后重试,现在就可以了。开玩笑。路径名参数周围缺少引号。所有父目录都存在

我的代码

不工作,安全模式关闭,我甚至尝试将所有父文件夹设置为777

有什么想法吗

编辑:我确实打开了错误报告,在我沮丧的时候,我已经对整个路径进行了777检查,只是为了确保这不是问题所在。一定是发生了一些愚蠢的简单事情

编辑:向所有回复建议的人投票。。。但我不会选择一个答案,因为这个问题仍然没有解决,但我想这将是一个永远开放的答案


编辑X3:所以我对这个问题有史以来最不满意的解决方案。。。我从一个干净的虚拟机映像开始,然后重试,现在就可以了。开玩笑。

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

所有父目录都存在吗

如果没有,则需要启用递归(此处假设为PHP5):


编辑:没有看到隐藏的注释说
var
向下的每个目录都设置为世界可写,所以我打赌目录路径存在,上面的内容不会有帮助。对不起

您必须将属性括在引号中:

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

您是否正在尝试递归地创建这些目录,就像您在命令行上使用
mkdir-p
那样?如果是,请指定
true
作为要删除的第三个参数


为了回应前面的建议,请指定您收到的错误消息。如果您没有收到任何请求,请在呼叫之前使用此命令:
error_reporting(-1);//所有消息
ini_set('display_errors','On')

您是否尝试了尽可能短的测试

mkdir('directory',0777)

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


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

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

如果有人遇到此问题。。我可以给你一个答案,那就是我花了两个小时去寻找。。我尝试使用完整路径和“./mydirectoryname”

尝试使用:

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

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

对于将来的引用,问题可能来自您尝试创建新目录的目录没有足够的权限

例如,您的索引目录可能如下所示:
index.php此处新建目录

如果
new\u dirs\u here
没有足够的权限,则无法在其中创建direcories

要解决此问题,我将使用以下命令:
chmod 777新目录在此

我现在不担心安全问题,只是想解决眼前的问题。当然,您可以查找更好的权限设置,但这样做的目的是,您的
新目录应该有足够的权限

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


祝你好运

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

代码中实际上有这个权限。。。对不起,我很沮丧,我忘了把它加进去,我会编辑的。还有其他想法吗?请确保已启用错误报告功能,以便在调用函数时查看它是否发出任何警告。有几件事:运行此代码的进程是否具有写入父目录的权限?如果您通过web服务器运行此操作,是否检查了日志中的错误消息?因此,您必须打开错误报告on@Col.弹片:啊,是的,这是真的,我假设是这样的,但我们知道在做出假设时会发生什么。谢谢你指出这一点!我在这里已经没有什么想法了,只是建议您尽可能(而且您还没有)使用命令行PHP运行,看看是否会发出错误消息。如果您现有的脚本在没有web服务器的情况下无法工作,只需创建一个简短的脚本,如:除了错误报告之外,“显示错误”是否也设置为1?这是一件我总是喜欢忘记的事情,如果这没有帮助,也没有错误显示,我也没有想法了。这一切都很好,我害怕发生这种情况,所以我只是对原始问题进行了编辑。很高兴看到一个七年前的答案仍然帮助人们!否,
$mode
参数被定义为八进制整数,因此您不应该在其周围加引号。这与我在脚本开头的代码非常相似。除了-1,我有这个。它应该是-1吗?我设置了ini_集(“显示错误”,1);错误报告(E|u ALL | E|u STRICT)我应该使用-1吗?1在过去一直用于显示错误。它是一个位掩码,因此-1本质上与无符号int的“所有位集”相同。效果将是相同的。如果在将来的某个版本中,他们添加了另一个
E_XXX
常量,而该常量未包含在
E_ALL
中,
-1
仍将包含该常量。基本上取决于你喜欢什么。你是一个绝对的天使,我需要这个。出于某种原因,即使使用chmod 0755并在mkdir中指定模式,其他答案都不起作用
mkdir('path/to/your/dir','0777');
mkdir("./mydirectoryname", 0777, true);
mkdir("../mydirectoryname", 0777, true);