PHP mkdir创建文件夹实现方法解析_php技巧

来源:脚本之家  责任编辑:小易  

先我抄一段手册上的有e68a843231313335323631343130323136353331333332636335关mkdir的描述,如下:说明bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )尝试新建一个由 pathname 指定的目录。 注意也许想用八进制数指定模式,也局镇就是说该数应以零打头。模式也会被当前的 umask 修改,可以用 umask() 来改变。 注意: mode 在 Windows 下被忽略。自 PHP 4.2.0 起成为可选项。 默认的 mode 是 0777,意味着最大可能的访问权。有关 mode 的更多信息请阅读 chmod() 页面。 例1. mkdir() 例子<?phpmkdir("/path/to/my/dir", 0700);> 如果成功则返回 TRUE,失败则返回 FALSE。 注意: 自 PHP 5.0.0 rmdir() 也可用于某些 URL 封装协议。参见附录N 的列表看看 rmdir() 支持哪些 URL 封装协议。 注意: 对 context 的支持是 PHP 5.0.0 添加的。有关 context 的说明见参考CLX, Stream Functions。注意: recursive 参数是 PHP 5.0.0 添加的。腔陪 注意: 当安全模式被激活时,PHP 将检查被操作的目录是否和正在执行的脚本有相同的 UID(所有者)。以上是PHP5手册上的描述信息,即你可以这样:mkdir('./test',0777)就能创建一个文件夹了。但是如何递归创建多级目录呢?其方式有: 1 PHP5 下创建目录函数 mkdir 增加了一个新的参数 recursive ,通过设置 recursive 为 true 可以实现递归创建目录的目的,但是对PHP4就不行了。 2 自己写一个递归创建多级目录。这里,我对第二种方式作一点说明,也有两种方式,如下:第一种(用mkdirs来产生多级父级)function mkdirs($dir, $mode = 0777) { if (is_dir($dir) || @mkdir($dir, $mode)) return TRUE; if (!mkdirs(dirname($dir), $mode)) return FALSE; return @mkdir($dir, $mode); }说明: 1 首先 简单说一下mkdir()与mkdirs()的区别,以及,is_dir和dirname(): mkdir() 只能在已经存在的目录中创建创建文件夹(即父级必须有才行)。mkdirs() 可以在不存在的目录中创建文件夹。诸如:a//b,既可以创建多级目录。 dirname()是返回路径中的目录部分。 is_dir()用于判断给出的文件名是否是一个有效的目录 2 大致流程为:(1) 先用is_dir判断是伍腊蠢否已是一个文件夹,如果是则返回TRUE。如没有(或者不是文件夹),则试着创建它,当然有可以父级不存在,那mkdir直接就创不成功,但也为不报错,所以就用@来抑止报非致命错误。 (2)如果传参数都不满足条件,那么就进入第二个if语句,先是取得路径中的目录部分,当然有可能是不存在的多级父级,所以用了mkdirs()来先创建父级,如果成功(不成功返回FALSE),那么再用mkdir来创建最终的目录了。好了,以上就是第一种方案www.zgxue.com防采集请勿采集本网。

在开始之前,我先说明一下,可能许多朋友与我一样认为只要给一个路径,mkdir就可以创建文件夹,其它不是那样,单个的MKDIR只能创建一级目录,对于多级的就不行了,那如何用mkdir来创建呢?先我抄一段手册上的有关mkdir的描述,如下:

你加几行代码 检测文件名是否已经存在 如果存在就不再新建了 这样就可以了 ----------- 建议你学习下mkdir的用法 定义和用法 mkdir() 函数创建目录。 若成功,则返回 true,否则返回 false。 语法 mkdir(path,mode,recursive,context) 参数 描述

说明

bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )

下面是我从网上整理的资料,会为大家详细介绍php函数mkdir的具体含义,希望对有这方面需求的朋友有所帮助。探讨应当如何提高PHP递归效率 PHP类搜索定位目录树的具体实现方式解析 PHP语言缺陷的具体分析 PHP递归返回值时出现的问题解决办法分享 PH

尝试新建一个由 pathname 指定的目录。

解决方法有很多,如果是在本地的话,最简单的方法就是把该目录和其子目录设置成777就可以了。 chmod -R 777 /path/to/your/directory

注意也许想用八进制数指定模式,也就是说该数应以零打头。模式也会被当前的 umask 修改,可以用 umask() 来改变。

PHP中,mkdir函数的功能是创建目录。如果想自定义,或者个性化设计创建目录,可以将该函数封装到方法中,然后调用方法来创建目录。具体操作步骤如下: 自定义,创建目录方法; /** * 自定义目录创建方法 * @param String $path 目录路径 * @para

注意: mode 在 Windows 下被忽略。自 PHP 4.2.0 起成为可选项。

更改apache配置文件 # # If you wish httpd to run as a different user or group, you must run # httpd as root initially and it will switch. # # User/Group: The name (or #number) of the user/group to run httpd as. # It is usually g

默认的 mode 是 0777,意味着最大可能的访问权。有关 mode 的更多信息请阅读 chmod() 页面。

例 1. mkdir() 例子

<?php

mkdir("/path/to/my/dir", 0700);

?>

如果成功则返回 TRUE,失败则返回 FALSE。

例 2. mkdir() 例子

$dir = iconv("UTF-8", "GBK", "public/log");if (!file_exists($dir)){mkdir ($dir,0777,true);echo '创建文件夹log成功';} else {echo '需创建的文件夹log已经存在';}

iconv方法是为了防止中文乱码,保证可以创建识别中文目录,不用iconv方法格式的话,将无法创建中文目录

mkdir方法的第一个参数是要创建的目录路径,第二个参数是指创建目录的权限,在windows系统下该参数会被忽略,第三个参数是指是否创建多级目录,默认为false

参考链接:https://www.cnblogs.com/modou/p/5991365.html

注意: 自 PHP 5.0.0 rmdir() 也可用于某些 URL 封装协议。参见附录 N 的列表看看 rmdir() 支持哪些 URL 封装协议。

注意: 对 context 的支持是 PHP 5.0.0 添加的。有关 context 的说明见参考 CLX, Stream Functions。

注意: recursive 参数是 PHP 5.0.0 添加的。

注意: 当安全模式被激活时,PHP 将检查被操作的目录是否和正在执行的脚本有相同的 UID(所有者)。

以上是PHP5手册上的描述信息,即你可以这样:mkdir('./test',0777)就能创建一个文件夹了。但是如何递归创建多级目录呢?

其方式有:

1 PHP5 下创建目录函数 mkdir 增加了一个新的参数 recursive ,通过设置 recursive 为 true 可以实现递归创建目录的目的,但是对PHP4就不行了。

2 自己写一个递归创建多级目录。

这里,我对第二种方式作一点说明,也有两种方式,如下:

第一种(用mkdirs来产生多级父级)

function mkdirs($dir, $mode = 0777)

{

if (is_dir($dir) || @mkdir($dir, $mode)) return TRUE;

if (!mkdirs(dirname($dir), $mode)) return FALSE;

return @mkdir($dir, $mode);

}

说明:

1 首先 简单说一下mkdir()与mkdirs()的区别,以及,is_dir和dirname():

mkdir() 只能在已经存在的目录中创建创建文件夹(即父级必须有才行)。

mkdirs() 可以在不存在的目录中创建文件夹。诸如:a//b,既可以创建多级目录。

dirname() 是返回路径中的目录部分。

is_dir() 用于判断给出的文件名是否是一个有效的目录

2 大致流程为:

(1) 先用is_dir判断是否已是一个文件夹,如果是则返回TRUE。如没有(或者不是文件夹),则试着创建它,当然有可以父级不存在,那mkdir直接就创不成功,但也为不报错,所以就用@来抑止报非致命错误。

(2)如果传参数都不满足条件,那么就进入第二个if语句,先是取得路径中的目录部分,当然有可能是不存在的多级父级,所以用了mkdirs()来先创建父级,如果成功(不成功返回FALSE),那么再用mkdir来创建最终的目录了。

好了,以上就是第一种方案。

第二种(说明:此方案是相当的精简,那是相当的不错的方案,推荐使用它)

function create_folders($dir){

return is_dir($dir) or (create_folders(dirname($dir)) and mkdir($dir, 0777));

}

说明: 1 大致流程: 得到路径后,先判断是否已是一个有效的文件目录,如是则返回,结束程序。如果不是,(由于这里用了OR作先择性的条件,即只要满足其中一个条件就行),则递归再调用自身,并且传入的路径中,少一级目录。这样来先回到上级有的父级目录中,再用mkdir来创建下一级的。

好了,以上就是用PHP来创建文件夹(以及多级文件夹)的方法。_

总结:

1 用PHP5中自带的mkdir 中的一个新的参数 recursive ,通过设置 recursive 为 true 可以实现递归创建目录的目的,但是对PHP4就不行了。

2 自己写的方法中,用mkdirs来创建多级父级目录方式

3 仍然用mkdir很巧妙的来创建

我们的服务器是bai这样做的:php一般是以duapache用户身份去执行zhi的陆迅,把daoapache加入到存储你文件的父文件夹属内中迟组里去,然后容改该父文件夹权限为775,这样属组成员就有写卖悉李的权限,而apache属于这个组就可以改写该目录下所有文件的权限,当然,属组最好不要是root,你可以为该文件夹改个其它普通用户组。改apache/php的运行用户方法不安全,不建议使用内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • php实现与erlang的二进制通讯实例解析
  • php读取文件并可支持远程文件的代码分享
  • php判断类是否存在函数class_exists用法分析
  • php 解析xml 的四种方法详细介绍
  • 克隆一个新项目的快捷方式
  • php利用cookies实现购物车的方法
  • php中ftp相关函数小结
  • ubuntu server 11.04安装memcache及php使用memcache来存储sessio
  • php打包网站并在线压缩为zip
  • php中iconv函数使用方法
  • 请教:关于linux服务器用php的mkdir()创建文件夹并...
  • PHP如何创建文件夹(mkdir的用法,mkdir的语法)
  • php的mkdir怎么才可以在windows下创建中文目录 - P...
  • Php新手,请教使用mkdir创建文件夹为什么不能马上...
  • php mkdir创建文件错误
  • 如何运用php函数mkdir创建多级目录
  • 在mac中写php无法用mkdir创建目录该怎么做呢?
  • php怎么自定义mkdir创建目录
  • PHP mkdir之后的文件夹的所有者的问题。
  • PHP如何创建文件夹(mkdir的用法,mkdir的语法)
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php函数mkdir实现递归创建层级目录php中mkdir()函数的权限问题分析php中mkdir函数用法实例分析php的mkdir()函数创建文件夹比较安全的权限设置方法php mkdir()无写权限的问题解决方法php使用mkdir创建多级目录入门例子php中unlink()、mkdir()、rmdir()等方法的使用介绍php mkdir()定义和用法php实现与erlang的二进制通讯实例解析php读取文件并可支持远程文件的代码分享php判断类是否存在函数class_exists用法分析php 解析xml 的四种方法详细介绍克隆一个新项目的快捷方式php利用cookies实现购物车的方法php中ftp相关函数小结ubuntu server 11.04安装memcache及php使用memcache来存储sessiophp打包网站并在线压缩为zipphp中iconv函数使用方法php中json_decode()和json_encodphp 数组和字符串互相转换实现方php中使用curl实现get和post请求php中iconv函数使用方法php日期转时间戳,指定日期转换成php 页面跳转到另一个页面的多种php 字符串中是否包含指定字符串php中文处理 中文字符串截取(mb_php下intval()和(int)转换使用与利用phpexcel实现excel数据的导入用php来改写404错误页让你的页面更友好php获取redis里不存在的6位随机数应用示例php base64 编码与解码实例代码深入解析php中的foreach函数php将远程图片保存到本地服务器的实现代码php查询mssql出现乱码的解决方法php如何获取http请求php中如何同时使用session和cookie来保存php中把对象转换为关联数组代码分享解决php程序运行时:fatal error: maximu
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved