13

我的代码

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

mkdir("relative/path", 0777);

不起作用,安全模式已关闭,我什至尝试将所有父文件夹设置为 777。

有任何想法吗?

编辑:我确实打开了错误报告,在我沮丧中我已经 777'd 整个路径只是为了确保这不是问题。这一定是一件非常简单的事情。

编辑编辑:为所有提出建议的人投票...但我不会选择答案,因为这仍然没有解决,但我再次认为这将是那些永远开放的答案之一。

编辑 x 3:所以我对这个问题的解决方案最不满意......我从一个干净的 VM 映像开始,重试它,它现在可以工作了。不是开玩笑。

4

9 回答 9

15

所有的父目录都存在吗?

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

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

编辑:没有看到隐藏的评论说从var下到下的每个目录都设置为全局可写,所以我打赌目录路径存在,上面的内容没有帮助。对不起!

于 2010-06-24T19:18:56.353 回答
4

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

为了回应之前的建议,请指定您收到的错误消息。如果您没有收到任何信息,请在致电之前使用它:error_reporting(-1); // ALL messagesini_set('display_errors', 'On');.

于 2010-06-25T12:45:49.890 回答
3

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

尝试使用:

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

代替..

mkdir("../mydirectoryname", 0777, true);
于 2018-07-24T11:56:25.337 回答
2

您是否尝试过尽可能短的测试?

mkdir('目录',0777);

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

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

于 2010-06-25T12:47:03.637 回答
1

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

于 2012-10-29T08:17:36.667 回答
1

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

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

如果new_dirs_here没有足够的权限,那么你不能在里面创建目录。

为了解决这个问题,我会使用以下命令: chmod 777 new_dirs_here

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

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

祝你好运

于 2019-03-05T08:26:28.580 回答
1

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

于 2021-05-05T05:25:56.453 回答
-3

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

于 2010-06-24T18:55:49.467 回答
-4

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

mkdir('path/to/your/dir','0777');
于 2010-06-24T20:59:44.813 回答