题
我的代码
mkdir("/some/absolute/path",0777);
和
mkdir("relative/path", 0777);
不起作用,安全模式已关闭,我什至尝试将所有父文件夹设置为 777。
有任何想法吗?
编辑:我确实打开了错误报告,令我沮丧的是,我对整个路径进行了 777 操作,只是为了确保这不是问题所在。这肯定是一件极其简单的事情。
编辑编辑:为所有回复建议的人点赞...但我不会选择一个答案,因为这个问题还没有解决,但我再次认为这将是永远悬而未决的问题之一。
编辑×3:所以我对这个问题有最不满意的解决方案......我从一个干净的虚拟机映像开始,重试它,现在它可以工作了。不是开玩笑。
解决方案
您缺少围绕路径名参数的引号。
其他提示
所有父目录都存在吗?
如果没有,您需要启用递归(在此处假设PHP5):
mkdir('/path/to/your/dir',0777,true);
编辑:没有看到隐藏的评论说每个目录 var
向下设置为全世界,所以我押注目录的存在,上面的路径将不会有帮助。对不起!
您是否试图像您一样递归创建这些目录 mkdir -p
在命令行上?如果是这样,请指定 true
作为第三个参数 mkdir
.
只是要回应以前的建议,请指定您收到的错误消息。如果您没有得到任何,请在您的电话之前使用此信息: error_reporting(-1); // ALL messages
和 ini_set('display_errors', 'On');
.
您是否尝试过尽可能短的测试?
mkdir('目录',0777);
如果这不起作用,我会尝试使用像 0755 这样的标准 CHMOD 创建(这是完全随机的猜测,也许服务器不允许通过 PHP 创建 0777)
如果这不起作用,我会说服务器可能需要不同的设置/ php 文件夹上没有正确的文字,也许您可以询问您的主机提供商?
我有类似的问题,我发现我没有 可用空间 留在我的开车上。使用命令检查 df
(在Linux上)您的驱动器有多满。在这种情况下,可能允许ROOT创建文件和文件夹,因为他有预留的空间。如果您从命令行运行脚本为 root
用户 - 没有错误,但是如果您的脚本由 apache
, ,然后发生错误。
如果有人遇到这个问题。.我可以给你一个答案,我花了2个小时来查找..我尝试使用完整的路径和“ ../ mydirectoryname”。
尝试使用:
mkdir("./mydirectoryname", 0777, true);
代替..
mkdir("../mydirectoryname", 0777, true);
对于将来的参考,问题可能来自您尝试创建新目录的目录没有足够许可的可能性。
例如,您的索引目录可能看起来像这样:index.php new_dirs_here
如果 new_dirs_here
没有足够的许可,那么您无法在内部创建直接。
为了解决这个问题,我将使用命令:chmod 777 new_dirs_here
我现在不必担心安全性,只是试图解决直接问题。您当然可以查找更好的权限设置,但想法是您 new_dirs_here
应该有足够的许可。
然后,你 mkdir()
Dunction应该正常工作。
祝你好运
您必须在引号中获取属性:
mkdir('path/to/your/dir','0777');