PHP Mkdir不是递归执行的吗?
以下功能在windows中工作:PHP Mkdir不是递归执行的吗?,php,mkdir,Php,Mkdir,以下功能在windows中工作: mkdir('../my/folder/somewhere/on/the/server', 0777, true); 我是说 它可以完美地工作,并递归地创建子文件夹。但是,如果在linux服务器上运行相同的命令,则不会创建文件夹 之前,我通过分解路径并逐个创建每个文件夹来解决这个问题。但我不想这样做,因为它应该与“复活”标志设置为真。为什么不起作用?这是我们发现的东西 确保根路径存在 确保根路径是可写的 不要使用。始终使用实路径 范例 $fixedRoot
mkdir('../my/folder/somewhere/on/the/server', 0777, true);
我是说
它可以完美地工作,并递归地创建子文件夹。但是,如果在linux服务器上运行相同的命令,则不会创建文件夹
之前,我通过分解路径并逐个创建每个文件夹来解决这个问题。但我不想这样做,因为它应该与“复活”标志设置为真。为什么不起作用?这是我们发现的东西
- 确保根路径存在
- 确保根路径是可写的
- 不要使用
始终使用实路径李>。
$fixedRoot = __DIR__;
$recusivePath = 'my/folder/somewhere/on/the/server';
if (is_writable($fixedRoot) && is_dir($fixedRoot)) {
mkdir($fixedRoot . DIRECTORY_SEPARATOR . $recusivePath, 0, true);
} else {
trigger_error("can write to that path");
}
很抱歉,除了
mkdir
命令本身之外,肯定还有一些问题
这个小示例按预期工作,并在Linux上执行时递归地为我创建目录:
#!/usr/bin/php
<?php
mkdir ('testdir/testdir2/testdir3',0777,TRUE);
?>
#/usr/bin/php
确保您的PHP用户(例如www-data
)有权写入其试图创建的任何文件夹的父文件夹。PHP需要能够写入已经存在的最低版本
例如,在。/my/folder/somewhere/on/the/server
的情况下,如果。/my
已经存在,并且PHP能够写入。
但不能写入my
,mkdir
将失败
如果您的用户是
www-data
,您可以使用sudo-chown-R www-data:www-data../my
为my
及其所有子文件夹授予写入权限。阅读手册页面非常有用-适用于我(linux上的php内部)。当您使用绝对路径时会发生什么情况?在这种情况下,绝对路径不是我的选项。是否打开了错误报告?请添加错误报告(E\u ALL);ini_设置(“显示错误”、“打开”)代码>也var\u dump
我想查看输出。。。。