php学习之道:坑爹的file_exists

动力学约束下的运动规划算法——Kinodynamic RRT*算法 阅读详情
 介绍
 
我发现了一个问题,今天与大家分享。我把整个过程描述一下。
 
问题
 
  公司有个框架是基于smarty写的,我负责php的升级,维护人员把新环境布上来之后,测试人员找我提出经常报错(错误:提示找不到文件的)。
  我追踪了一下代码,原来是smarty的这个地方报的错误。
  

  错误:这里报出文件不存在。

  思考过程:

  1、我原以为是程序里没有这个文件呢,结果发现,文件是有的,那是怎么回事?

  2、后来我再猜是不是php内核有问题,我把php的相关内核文件看了一遍,也没发现问题。结果我就把整个过程跟项目经理说去了。——事情也没解决,就这样先不了了之。升级的事情先耽误着。

  今天又发现这个问题,我第一反应是php版本是不是升级了,发现没有。——后来把整个目录设置成777就没事了(chmod 777 -R 目录)。我想是不是file_exists()方法问题。

  所以,我就进行了相关的调试和实验。 

 调试过程
 
调试代码:

目录:

 

观察各个权限:test对www是没有任何权限的,而执行文件index.php有读写执行权限,包含文件test.txt有读写权限。

运行结果:

 

 目录的执行权限影响file_exists()
 
1、给test一个最大的权限——755

 

既然成功了,说明file_exists()函数是受目录权限的限制的。

那什么样的目录权限影响file_exists()呢?

我做了几个实验:

1、文件的任何上级目录,只有写权限时报文件不存在;

2、文件的任何上级目录,只有读权限时也报文件不存在;

3、而当所有上级目录都有执行权限的时候,报文件是存在的,一切都正常。

结果,说明file_exists()在判断文件是否存在的时候是递归判断每个目录是不是有执行权限。

 

修改文件路径为相对路径,得出一样的结果。

 

 

总结
 
在php手册上并没有提到,file_exists会受目录的执行权限影响。今通过此文告知那些也有这方面问题的开发者。仅以此为戒。
 
附加信息
 
感谢大家留的言,非常有用。经过大家的意见我再查了下手册,确实,如果目录没有执行权限,php-fpm应用进程就不能到这个目录下面去进行文件搜索,当然就认为文件不存在(实际是认为没有可执行的目录是不存在的)。
手册内容,大家可以一起斟酌一下,主要是执行权限。在这里就不详谈读写权限了(一般都很好理解)。

明显手册中,对目录的执行权限有明确的指示。对目录的执行权限,就是拥有被搜索的权利。
 

飞腾平台(FT2000/4 D2000/8)配置GPIO引脚 飞腾平台配置CPU的引脚为GPIO工作模式的方式有永久型和暂时型: - 永久型是通过UEFI中的MmioWrite32函数来实现的,该方法可以在UEFI阶段就对复用引脚的工作模式配置为GPIO,并且在进入操作系统后仍然不会发生便会; - 临时型是通过rw工具,在系统下手动修改复用引脚的工作模式,该方法在系统重启后会失效,所以是暂时型的。 阅读详情

相关推荐

PCB工艺-SI9000使用教程

本文介绍了阻抗计算工具SI9000的使用方法,重点讲解了微带线与带状线的区别、共面阻抗概念及参考面选择。通过USB差分走线实例,详细说明了如何选择计算模型、填写参数并确定线宽线距。文章还提供了层叠设计资料和工厂常规阻抗表格作为参考,建议制板时标注需控阻抗的线路供板厂调整。最后简单提及了嘉立创阻抗计算工具作为备选方案。

weixin_50120208的博客 2022

PHP 杂谈 坑爹的file_exists

   介绍   我发现了一个问题,今天与大家分享。我把整个过程描述一下。   问题     公司有个框架是基于smarty写的,我负责php的升级,维护人员把新环境布上来之后,测试人员找我提出经常报错(错误:提示找不到文件的)。   我追踪了一下代码,原来是smarty的这个地方报的错误。      错误:这里报出文件不存在。   思考过程:   1、我原以...

weixin_33670713的博客 268

如何实现SOLIDWORKS阵列的“智能变更”?

有时,我们在设计一个零件时,零件上有一排阵列孔,同时零件有不同的长度,我们又希望可以做到零件长度改变时,这排孔可以按长度等距增减孔阵列的个数;或是零件长度加长或缩短时,这排孔保持个数不变,按零件长度增减孔距。 那具体要怎么做呢?接下来,我们一起来看看怎么用SOLIDWORKS中简单的操作来实现这两种智能的变更: 零件长度加长或缩短时,这排孔要按长度等距增减孔阵列的个数。 零件长度加长或缩短时,这排孔保持个数不变,按零件长度增减孔距。 那接下来,我们一起来看看怎么用简单的操作来实现这两种智能的

SOLIDWORKS艾金米 2075

PHP代码审计 ----- 任意文件读取 & 删除漏洞

通过提交专门设计的输入,攻击者就可以在被访问的文件系统中读取或写入任意内容,往往能够使攻击者从服务器上获取敏感信息文件正常读取的文件没有经过校验或者不严格,用户可以控制这个变量读取任意文件。

qq_62344745的博客 1320

多思计算机组成原理实验:模型机课程设计

计算机组成原理实验教程 基于多思网络虚拟实验系统 张雯雰

Nick的博客 2万+

毫米波与太赫兹:十射线模型建模

Pt=1,只考虑地面和前后两面墙的反射,反射系数为0.7。用matlab设计程序并实现该功能。,总计考虑10条路径,求出接收功率随。

SupermarketX的博客 785

文件包含漏洞全面详解

1.文件包含漏洞概述和SQL注入等攻击方式一样,文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。什么叫包含呢?以PHP为例,我们常常把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,而无需再次编写函数,这一过程叫做包含。有时候由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。以PHP为例,常用的文件包含函数有以下四种。...

m0_46467017的博客 10万+

心电图机原理及电路超详细讲解

前置心电放大电路(虚线框:这是隔离电路的分界,在隔离电路分析中知道,完整隔离包括信号隔离(脉宽调制)、控制信号隔离(光电耦合)和电源隔离)后级放大电路。

fcxgfdjy的博客 2万+

文件包含漏洞特点和php封装伪协议

用实验案例的方式介绍文件包含漏洞的成因特点,利用方法。在了解文件包含漏洞的危害的同时学习各类文件的包含、本地包含配合文件上传包含图片马和php封装伪协议。

bwxzdjn的博客 2852

静态时序分析—伪路径(set_false_path)

set_false_path应用场景

m0_61544122的博客 2万+

《UDS协议从入门到精通》系列——图解0x23:通过地址读取内存

如何读取ECU中指定内存地址的数据?图解UDS 0x23服务带你快速上手!!

车载系统攻城狮 2621

php eval 黑客利用,代码安全审计:当file_exists遇上eval

‍起因‍昨晚有人在一QQ群上问lcms(一款网站CMS系统)的一个漏洞是怎么形成的,说了半天。他截图不完整,于是叫他传代码,下载回来找到router.php代码片段如下:protectedfunctiongetInputString($name,$default_value="",$format="GPCS"){//orderofretrievedefaultGPCS(g...

weixin_28323057的博客 474

第七节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 - 用户管理(上)

本节的内容是用户管理,后端Python代码的实现。

cuiwin的专栏 775

坑爹的file_exists

介绍 我发现了一个问题,今天与大家分享。我把整个过程描述一下。 问题   公司有个框架是基于smarty写的,我负责php的升级,维护人员把新环境布上来之后,测试人员找我提出经常报错(错误:提示找不到文件的)。   我追踪了一下代码,原来是smarty的这个地方报的错误。      错误:这里报出文件不存在。   思考过程:   1、我原以为是程序...

axfcjwkbi259888707的博客 283

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

PHP file_exists

PHP file_exists有多坑爹 我原以为是程序里没有这个文件呢,结果发现,文件是有的,那是怎么回事,我第一反应是php版本是不是升级了,发现没有。后来把整个目录设置成777就没事了(chmod 777 -R 目录)。我想是不是file_exists()方法问题。 我发现了一个问题,今天与大家分享。我把整个过程描述一下。 问题 公司有个框架

zhulike2011的专栏 958

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【转】PHP 杂谈 坑爹的file_exists

转自:http://www.cnblogs.com/baochuan/archive/2012/05/06/2445822.html 介绍 我发现了一个问题,今天与大家分享。我把整个过程描述一下。 问题   公司有个框架是基于smarty写的,我负责php的升级,维护人员把新环境布上来之后,测试人员找我提出经常报错(错误:提示找不到文件的)。   我追踪了...

weixin_30663471的博客 100

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

PHP中file_exists()函数不能检测包含中文的文件名的解决办法

版权声明:本文为博主原创文章,未经博主允许不得转载。 PHP中一般使用file_exists()判断某个文件或者文件夹是否存在,如果文件或文件夹存在则返回true,不存在则返回false。今天在实现文件下载功能时发现,在网页使用UTF8编码的情况下,该函数无法检测包含中文的文件是否存在,始终返回false。修改很久之后才发现是因为没有把完整路径进行编码的...

lxw1844912514的博客 595

ThinkPHPV5.1.25中使用file_exists等函数没有触发phar://的反序列化的destruct魔术方法执行的问题

因为像我碰到的问题就是我的项目主目录下的/runtime目录没有Web服务器用户的写入权限会导致日志写入失败报错:think\exception\ErrorException: mkdir(): 权限不够。导致后续代码不会执行,因此反序列化生成的对象就无法调用destruct魔术方法,当把吸入权限补上之后就OK了。在thinkphp框架中目标对象的wakeup魔术方法是会执行的,但是destruct魔术方法不一定会。

听香水榭 489

php接收文件找不到file,php 文件下载 以及 file_exists找不到文件的解决方案

链接:点击下载其中php:$filename = $_GET['filename'];//从浏览器获取到的字符的编码是UTF-8,我们要用这个函数转换成GBK才能才本地找到这个文件$filename = mb_convert_encoding($filename,'GBK','UTF-8');echo $filename ."";if( empty($filename)){echo' alert(...

weixin_29932613的博客 927

UPLOAD-LABS1

知道这一关是MIME验证,就是会检查求情包, 只对文件类型(type)进行了验证,必须要是image/jpeg或者image/png或者image/gif的格式,没有对后缀进行验证,只需要使用bp抓包将Content-Type:的参数修改成image/jpeg或者image/png或者image/gif其中的一种,进行绕过就好。禁止上传.asp|.aspx|.php|.jsp后缀文件,过滤不严格,用.phtml .php5 .pht进行绕过。

qq_75005708的博客 637

PHP 判断文件是否存在

在这个示例中,如果 example.txt 文件存在,则输出 “文件存在:example.txt”,否则输出 “文件不存在”。你可以根据实际情况修改 $filename 变量为你要检测的文件名。使用 PHP 中的 file_exists() 函数来检测文件是否存在,如果存在,则输出文件名字。

2301_79996063的博客 774

文件上传漏洞利用与绕过姿势总结

本文解析了文件上传漏洞的核心原理和多种利用技巧,包括条件竞争、文件头伪造、二次渲染结合文件包含、短标签利用等,结合真实案例详细解析了双文件上传、Content-Disposition 绕过等复杂场景的攻击流程.

2301_79469341的博客 3991

【文件上传漏洞绕过方式】

目前,文件上传往往在业务中不可避免,也是极其容易出现上传漏洞。根据owasptop10中的排名,文件上传漏洞(属于攻击检测和防范不足)高居其中。今天和大家分享常见的文件上传的绕过方式。未知攻焉知防。最后给大家推荐几个在线练习文件上传漏洞的靶场。瑞斯拜!!!......

qq_55213436的博客 1万+
上一篇: php学习之道:php empty()和isset()的区别
下一篇: DOS学习之道:怎样使用DOS命令
Java小迷
博客等级 码龄13年 147粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值