解析php file_exists无效的解决办法

方法1 :据官方手册上描述若php教程的safe mode相关的设置过于苛刻,就会出现这样的情形:尽管文件真实存在也被误报,认为文件不存在。

由于服务器端的php.ini我们无法操纵,当用ini_set()也关闭不了safe mode模式,我们只有退而求其次,找一个更可靠、安全的检测方法来检测文件是否存在。我们可以借助 $_server['document_root'] 来加以实现。$_server['document_root'] 返回的是网站的根目录,该目录的最后一个子目录不包含目录标志符号“/”,如:
d:/www/htdocs
有了根目录,再加上需要检测的文件的路径,我们将得到一个绝对的路径,php就可以顺利使用file_exists()函数对之进行检测。上述代码我们只需要更改第一行为(注意,我们在config.php之前加上了符号“/”):
$file=$_server['document_root']."/config.php";
如此,代码的执行就很可信,不会出现预期以外的结果。
以上方法同样适用于目录(is_dir())或文件(is_file())的相关检测函数,能够检测出被安全保护的目录或文件是否存在。

最后顺便提一下:这类被php特殊设置所保护的文件在引用(include和require)时不必加上$_server['document_root']路径,因为,根据php说明文档,它们是允许引用的。

方法2:本人的情况是因为文件在windows和linux之间来回的移动。造成linux下文件和目录的访问权限被改变,导致出文件除拥有者外其他均无访问权限。使用chmod -r 755 xxx/* 解决了问题。

(0)

相关推荐

  • PHP中file_exists与is_file,is_dir的区别介绍

    很显然file_exists是受了asp的影响,因为asp不但有fileExists还有folderExists,driverExists,那么PHP中file_exists是什么意思呢? PHP的 file_exists = is_dir + is_file 它既可以判断文件是否存在,又可以判断目录是否存在.但这样一个全面的函数执行效率非常低,就像asp中request不指定是form,还是get,cookies,所以结论是: ◦如果要判断目录是否存在,请用独立函数 is_dir(direct

  • PHP中file_exists函数不支持中文名的解决方法

    一般来说PHP中常使用file_exists()判断某个文件或者文件夹是否存在,如果存在则返回true,否则返回false.但是该函数在网页使用UTF8编码的情况下,对于中文的文件名或者文件夹名不能返回正确值,始终返回false.经测试之后得出解决方法,分析造成这一情况的原因应该是编码不同而导致的PHP不能正确判断. 下面这段代码是不能够返回正确值的代码,无论文件是否在都返回不在: <?php; $file="/attachment/21/0/中文.rar"; $newfile

  • php中file_exists函数使用详解

    说明: bool file_exists ( string $filename ) 如果由 filename 指定的文件或目录存在则返回 TRUE,否则返回 FALSE. 在Windows上,使用/ /计算机名/共享/文件名或 计算机名共享文件名,以检查网络共享文件. 在 Windows 中要用 //computername/share/filename 或者 \\computername\share\filename 来检查网络中的共享文件. 实例一 <?php $filename = '/j

  • PHP中file_exists使用中遇到的问题小结

    介绍 我发现了一个问题,今天与大家分享.我把整个过程描述一下. 问题:公司有个框架是基于smarty写的,我负责php的升级,维护人员把新环境布上来之后,测试人员找我提出经常报错(错误:提示找不到文件的). 我追踪了一下代码,原来是smarty的这个地方报的错误. 错误:这里报出文件不存在. 思考过程: 1.我原以为是程序里没有这个文件呢,结果发现,文件是有的,那是怎么回事? 2.后来我再猜是不是php内核有问题,我把php的相关内核文件看了一遍,也没发现问题.结果我就把整个过程跟项目经理说去了

  • PHP中判断文件存在使用is_file还是file_exists?

    判断文件存在用is_file还是file_exists? 在写程序时发现在判断文件是否存在时,有两种写法,有的人用了is_file,有的人用了file_exists,用哪个更好或者说更合适呢? 看了这篇PHP中file_exists与is_file,is_dir的区别的说法基本明白,PHP的 file_exists = is_dir + is_file. 写程序验证一下: 分别执行1000次,记录所需时间. 文件存在(当前目录) 复制代码 代码如下: is_file:0.4570ms file_

  • php file_exists 检查文件或目录是否存在的函数

    说明 bool file_exists ( string $filename ) 如果由 filename 指定的文件或目录存在则返回 TRUE,否则返回 FALSE. 其实于php教程 file_exists 函数与 file_exists语法我们早就讲过了,下面我们来看看一下关于它的使用方法与实例吧 路径的文件或目录. 在Windows上,使用/ /计算机名/共享/文件名或 计算机名共享文件名,以检查网络共享文件. 在 Windows 中要用 //computername/share/fil

  • PHP中is_file不能替代file_exists的理由

    我们可以使用下面的代码测试一下: 复制代码 代码如下: <?php        $filename = 'test.txt';      if (is_file($filename)) {          echo "$filename exists!\n";      } else {          echo "$filename no exists!\n";      }      sleep(10);     if (is_file($filen

  • PHP中file_exists()判断中文文件名无效的解决方法

    本文实例讲述了PHP中file_exists()判断中文文件名无效的解决方法.分享给大家供大家参考.具体方法如下: php中判断文件是否存在我们会使用file_exists函数或is_file函数,但在使用file_exists时如果你文件名或路径是中文在uft8编码文档时是无效.本文就来解决此问题,下面我们一起来看看. 定义和用法: file_exists() 函数检查文件或目录是否存在. 如果指定的文件或目录存在则返回 true,否则返回 false. 例子1 复制代码 代码如下: <?ph

  • 解析php file_exists无效的解决办法

    方法1 :据官方手册上描述若php教程的safe mode相关的设置过于苛刻,就会出现这样的情形:尽管文件真实存在也被误报,认为文件不存在. 由于服务器端的php.ini我们无法操纵,当用ini_set()也关闭不了safe mode模式,我们只有退而求其次,找一个更可靠.安全的检测方法来检测文件是否存在.我们可以借助 $_server['document_root'] 来加以实现.$_server['document_root'] 返回的是网站的根目录,该目录的最后一个子目录不包含目录标志符号

  • mysql运行net start mysql报服务名无效的解决办法

    运行net start mysql报服务名无效的解决办法,供大家参考,具体内容如下 1. 症状 以前电脑上安装了 MySQL,今天在电脑上运行,发现没有 MySQL 服务了 C:UsersAdministrator>net start mysql 服务名无效. 请键入 NET HELPMSG 2185 以获得更多的帮助 2. 解决办法 输入 mysqld.exe -install MySQL 安装在:D:\wamp\bin\mysql\mysql5.1.53 以上就是本文的全部内容,希望对大家的

  • Android onKeyDown监听返回键无效的解决办法

     Android onKeyDown监听返回键无效的解决办法 当我们的Activity继承了TabActivity,在该类中重写onKeyDown是监听不到返回键的, 具体解决方法如下: 重写dispatchKeyEvent /** * 退出 */ @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAc

  • 详解VScode自动补全CSS3前缀插件以及配置无效的解决办法

    1.在vscode中搜索Autoprofixer 2.在安装完成之后要配置 在需要添加前缀的css文件上,右键点击命令面板,输入Autoprefixer CSS就好啦 ps: 如果想要兼容性最好的话,需要在设置配置文件setting.json里加上 (打开设置->搜索autoprefixer->点击在setting.json里编辑) //这是比较完整的兼容配置,可以根据自己的情况有选择的复制![在这里插入图片描述](https://img-blog.csdnimg.cn/20200322110

  • eclipse配置Tomcat和Tomcat出现无效端口解决办法

    目录 一.eclipse配置Tomcat 二.Tomcat出现无效端口解决办法 方法一: 方法二: 方法三: 一.eclipse配置Tomcat 1. 按图选择window-preferences 2在server处选择runtime environment 3.点击右侧add,选择自己的Tomcat版本 注意Tomcat与eclipse对应版本不同,以下为作者网上所看,具体可自己斟酌. Eclipse 4.8 (Photon)--------Tomcat9.0 Eclipse 4.7 (Oxy

  • MSSQL报错:参数数据类型 text 对于 replace 函数的参数 1 无效的解决办法

    但是我们可以换一种方法解决这个问题.下面就来分析下解决办法. 对text或ntext类型的数据在查询中不能进行字符串操作.这时用得最多的是把text当作varchar(实际内容长度低于8000字节时)或把ntext当作nvarchar(实际内容长度低于4000字节时)来处理.但是这样处理也不是非常妥当毕竟如果text字段内容超过8000了岂不是要被截断或者忽略掉.最终找到了一种方法解决了"参数数据类型 text 对于 replace 函数的参数 1 无效"的问题.下面用一个例子来说明怎

  • 使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法

    eval函数可以把一些处理过程序代码进行解析从而达到可以执行的一个状态,查了很多帖子,jqchart插件做折线图时,处理返回数据时全都是eval,但我怎么也弄不出来,后来发现: 1.根本不需要eval处理,直接截取字符串即可(返回值要拼接好): 2.处理好的字符串放进series的data里要加上[]; 下面是代码: html页面<body>标签里面只放了一个<div id="jqChart" style="width: 500px; height: 300

  • 访问php时提示内存位置访问无效的解决办法和思路分析

    我们就需要找到是哪一个DLL文件加载出现了问题.排查方法是: 将php.ini中 display_startup_errors = Off 改为display_startup_errors = On . 这是访问php页面,服务器上会弹出php错误的提示对话框,你就可以明确看到是哪一个dll文件加载失败,有时会有多个dll文件加载失败,需要你先分号(;)注释掉php.ini中提示那个dll后继续访问如此反复排查. 把出问题的dll都用分号(;)注释掉后,php就可以正常运行了. 如果加载失败的d

  • error LNK2019: 无法解析的外部符号 问题的解决办法

    正在编译...1>Ipv4IPv6traceroutesrc.cpp1>d:\研究生\c++\study\test\test\ipv4ipv6traceroutesrc.cpp(461) : warning C4267: "参数": 从"size_t"转换到"DWORD",可能丢失数据1>d:\研究生\c++\study\test\test\ipv4ipv6traceroutesrc.cpp(1131) : warning C4

  • Nginx跨域设置Access-Control-Allow-Origin无效的解决办法

    nginx 版本 1.11.3 使用大家说的以下配置,验证无效,跨域问题仍然存在 add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET,POST'; 使用以下配置,生效. if ($request_method = 'OPTIONS') { add_heade

随机推荐