include_once("../include/session.php");
$lnum = $session->lnum; //Users license number from sessions
$directory = uploaded_labels; // Name of directory that folder is being created in
if (!file_exists($directory."/".$lnum)) {
mkdir($directory."/".$lnum, 0777, true);
}
1039
这是没有错误抑制的最新解决方案:
if (!is_dir('path/to/directory')) {
mkdir('path/to/directory');
}
1
if (!is_dir('path_directory')) {
@mkdir('path_directory');
}
13 回答
这是缺失的部分 . 你需要在mkdir调用中传递'recursive'标志作为第三个参数(布尔值为true),如下所示:
试试这个:
请注意,
0777
已经是目录的默认模式,可能仍会被当前的umask修改 .因为这出现在谷歌上的东西更普遍 . 虽然细节更具体,但这个问题的 Headers 更为普遍 .
这将采用一条路径,可能带有一长串未创建的目录,并继续向上移动一个目录,直到它到达现有目录 . 然后它将尝试在该目录中创建下一个目录,并继续直到它创建了所有目录 . 如果成功则返回true .
可以通过提供一个停止级别来改进它,如果超出用户文件夹或其他东西并通过包含权限它就会失败 .
那个辅助函数怎么样:
如果目录已成功创建或已存在,它将返回
true
,如果无法创建目录,则返回false
.一个 better 替代方案就是这个(不应该发出任何警告):
递归创建目录路径:
灵感来自Python的os.makedirs()
更快的创建文件夹的方法:
在WordPress中还有非常方便的函数wp_mkdir_p,它将以递归方式创建目录结构 .
参考资料来源: -
我对登录站点需要相同的东西 . 我需要创建一个包含两个变量的目录 . $目录是我想要用用户许可证号创建另一个子文件夹的主文件夹 .
这是没有错误抑制的最新解决方案:
你也可以尝试:
如果文件夹尚不存在,则创建该文件夹
考虑问题的环境 .
WordPress .
Webhosting Server .
假设它的Linux不是运行PHP的Windows .
引用自:http://php.net/manual/en/function.mkdir.php
手册说,唯一需要的参数是
$pathname
!所以,我们可以简单地编码:
说明:
除非需要,否则我们不必传递任何参数或检查文件夹是否存在,甚至传递模式参数;原因如下:
该命令将创建具有0755权限的文件夹(默认共享主机文件夹's default permission) or 0777 the command') .
在 Windows Hosting running PHP 上忽略
mode
.如果文件夹存在,
mkdir
命令已经在checker中构建;所以我们需要检查返回只有True | False;并且它不是错误,仅为警告,默认情况下在托管服务器中禁用警告 .根据速度,如果禁用警告,则速度会更快 .
这只是另一种研究问题的方式,而不是声称更好或最优的解决方案 .
在PHP7,Production Server,Linux上测试过