我的代码
mkdir("/some/absolute/path",0777);
和
mkdir("relative/path", 0777);
无效,安全模式已关闭,我甚至尝试将所有父文件夹设置为777。
有什么想法吗?
编辑:我确实打开了错误报告,在我的挫折中,我已经完成了整条路径,只是为了确保这不是问题。这将是一件非常简单的事情。编辑编辑:为所有回复建议的人提供赞成...但我不会选择答案,因为这仍然没有得到解决,但我再次认为这将是其中一个开放的永远。
编辑x 3:所以我对这个问题的解决方案最不满意......我开始使用干净的虚拟机映像,重试它并立即运行。不开玩笑。
答案 0 :(得分:15)
是否存在所有父目录?
如果没有,你需要启用递归(假设PHP5在这里):
mkdir('/path/to/your/dir',0777,true);
编辑:没有看到隐藏的评论说明var
向下的每个目录都设置为世界可写,所以我打赌目录路径存在,上面的内容没有帮助。遗憾!
答案 1 :(得分:3)
您是否尝试递归创建这些目录,就像在命令行中使用mkdir -p
一样?如果是,请将true
指定为mkdir
的第三个参数。
为了回应之前的建议,请指出您收到的错误消息。如果您没有收到,请在通话前使用此功能:error_reporting(-1); // ALL messages
和ini_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');