用路径递归的去创建文件的时候发生了内存耗尽的情况,开始以为是权限问题,导致的死循环耗尽内存,后来发现并不是。代码如下:

//递归生成文件目录

function CreateDir($dir,$mode = 0775) {

if(!@mkdir($dir,$mode)) {

$sundir = dirname($dir);

var_dump($sundir);

CreateDir($sundir,$mode);

}

@mkdir($dir,$mode);

}

在运行这个程序代入的参数$dir = '/data/web';其中这个data文件夹根本不存在,运行程序,会递归路径$dir去找到从后向前可以创建文件夹的最近文件夹,这时候找到'/data'时候的dirname('/data')会去输出'/'然后再去调用本身找上一级目录,最后dirname('/')会一直输出'/',但是又一直创建目录失败,所以就出现了死循环耗尽内存。

输出:

string(5) "/data" string(1) "/" string(1) "/" string(1) "/" string(1) "/" string(1) "/" string(1) "/" string(1) "/" string(1) "/" string(1) "/" string(1) "/" string(1) "/" string(1) "/" string(1) "/" string(1) "/" string(1) "/" string(1) "/" string(1) "/" string(1) "/" string(1) "/"

而对于上面的死循环我加了层限制就不会再出现了,但是还是想知道问题就出现在mkdir创建目录失败的问题上,所以是由于mkdir创建文件的时候文件名在函数内部有限制所导致的,还是说mkdir这个函数创建文件夹会查找上层路径去确认上层路径是存在的而导致的创建失败。不怎么清楚,好像得看到php函数封装的底层了,所以求各位大神帮忙解惑。。。。。。

修改后的代码:

//递归生成文件目录

function CreateDir($dir,$mode = 0775) {

if(!@mkdir($dir,$mode)) {

$sundir = dirname($dir);

// ====== 新加部分 start

if($sundir == $dir) {

return true;

}

// ====== 新加部分 end

CreateDir($sundir,$mode);

}

@mkdir($dir,$mode);

}

php 文件限制,PHP 创建文件的文件名限制相关推荐

  1. php文件写入生成文件,PHP 文件操作类(创建文件并写入) 生成日志

    欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 PHP 文件操作类(创建文件并写入) 生成日志 /** * 文件操作(生成日志)支持多条插入 * (如果插入多条语句并换行 ...

  2. JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤...

    JAVA之旅(二十八)--File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤 我们可以继续了,今天说下File 一.File概述 文件的操作是非常 ...

  3. 细节--Java必须先创建文件夹再创建文件

    Java中io操作,必须先创建文件夹再创建文件. 需要先[存在]文件夹,才能再创建文件. 当然,如果文件夹[不存在],那么就需要先创建文件夹,再创建文件. 比如  :   c盘已经存在,所以才能创建C ...

  4. JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤

    JAVA之旅(二十八)--File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤 我们可以继续了,今天说下File 一.File概述 文件的操作是非常 ...

  5. R语言使用fs包的dir_create函数在指定路径下创建新的文件夹、使用file_create函数在指定文件夹下创建文件

    R语言使用fs包的dir_create函数在指定路径下创建新的文件夹.使用file_create函数在指定文件夹下创建文件 目录

  6. C# 文件操作之创建文件夹

    本文章主要是讲述C#中文件操作的基础知识,如何创建文件夹.创建文件.介绍Directory类\DirectoryInfo类和使用FolderBrowserDialog组件(文件夹对话框).文章属于基础 ...

  7. php点击按钮创建文件,PHP 文件操作类(创建文件并写入) 生成日_php

    path = $path; } //判断操作方式 a追加写 if (! empty ( $mode )) { $this->mode = $mode; } //判断写入的内容 if (! emp ...

  8. java创建文件夹和文件_Java创建文件夹与创建文件

    jik package test.file; //time: 05-12-22 //author: [email]huapingsmith@hotmail.com[/email] //descript ...

  9. python新建文件夹和文件夹_Python创建文件夹与文件的快捷方法

    前言 Python快捷创建文件夹和文件详解 自己做文件时发现  简单的反复操作十分浪费时间,于是想到了 使用Python,这个分享给大家,快捷高效办公. 项目目录 file11 创建文件夹 file2 ...

  10. android 阻止文件生成方法,禁止软件创建文件夹 禁止创建文件夹

    安卓 怎么阻止软件在文件夹中创建文件 首先说明,Android软件之所以会在文件夹中创建文件,大多数是为了做软件缓存,防止反复的从服务器读取数据,照成用户流量浪费,如果强制的阻止可能会让软件报错. 一 ...

最新文章

  1. 处理字符数据--运算符和函数
  2. MySQL复制表-INSERT INTO SELECT
  3. 运行java黑窗口是什么意思_黑窗口运行java文件步骤
  4. java建立类的思想_JAVA类和对象创建
  5. linux c++模拟简易网络爬虫
  6. 玩转Git三剑客01:Git基础
  7. 强化学习研究什么?用白话讲就是……
  8. js判断是手机访问还是电脑访问,进行自动跳转
  9. 2018第九届蓝桥杯JavaB组省赛真题详解
  10. (10万+浏览量)语句覆盖、条件覆盖(分支覆盖)、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖 的区别
  11. 微信公众号现金红包红包 企业付款openid 获取
  12. 关于数据治理的读书笔记 - 什么是数据治理?
  13. 2021 安装centos
  14. 【BUAA_CO_LAB】计组p3p4碎碎念
  15. 大南湖地磅房升级需要改造哪些方面
  16. 指挥计算机工作的程序集,主互操作程序集(PIA)是否要求在计算机中安装Microsoft Office才能工作...
  17. hiredis中lua脚本调用
  18. [伸展树]codevs1286 郁闷的出纳员
  19. 绕线画算法python_一种绕线画自动生成及加工的方法和设备与流程
  20. Xamarin.forms Image实现圆形图片

热门文章

  1. Linux内存管理:内存描述之内存页面page
  2. RabbitMQ架构
  3. ospf协议_「案例」OSPF路由动态协议及配置
  4. Python BeautifulSoup和Requests爬虫爬取中关村手机资料
  5. python如何判断为空_python中怎么判断是否为空
  6. 三点滑动平均法怎么计算的_孔径千分尺怎么用,能看懂吗?
  7. Win32下显示、隐式加载DLL的方法
  8. 华师计算机基础在线作业秋,18秋华师《计算机基础》在线作业.docx
  9. mysql5.3.4 mac 配置_Mac下安装与配置MySQL
  10. 使用Roslyn将代码编译成单独的网络模块并将它们组装成动态库