探讨php file_exists()函数能否检查远程(网络)文件是否存在
时间:2016-08-30
php file_exists()函数用于检查文件或目录是否存在,如果要检查的文件在本地服务器,该函数肯定可以正确获得结果,但如果要检查的文件是远程文件或网络文件,file_exists函数能否正确获得结果呢?
php中,如果我们想判断文件是否存在,可以使用函数file_exists(),该函数只需要一个文件名参数即可。
// Returns true if the file exists
file_exists( $filename );
此函数不仅对可以检查文件是否存在,也可以用来检测目录是否存在,你可以向该函数传递一个文件名或者目录名,如果这个目录或文件存在,file_exists()函数将返回true。
<?php
$filename = '/path/to/foo.txt';
/* http://www.manongjc.com/article/1420.html */
if (file_exists($filename)) {
echo "The file $filename exists";
} else {
echo "The file $filename does not exist";
}
?>
但是file_exists函数也有一个缺陷,有人曾试图使用该函数检查一个一个远程文件是否存在(使用URL)。但是,如果你尝试搜索文件使用一个URL此功能将无法正常工作,该函数将始终返回false。
如果你想检查远程URL,你需要做一个HTTP请求并检查一下HTTP头状态信息。
get_headers()函数检查远程文件是否存在
为了得到一个远程文件的头信息,那么你可以使用PHP函数get_headers() 。这需要你传入URL参数,它会以数组的形式返回头信息。该数组的第一个键是我们需要的值(HTTP报头的状态)。如果该文件存在的状态会返回一个200的状态码,如果远程文件不存在,那么状态码就会返回一个404错误。
这意味着我们可以使用get_headers()函数来检查远程问价是否存在。
$file_headers = @get_headers($url);
if($file_headers[0] == 'HTTP/1.0 404 Not Found')
{
$file_exists = false;
} else {
$file_exists = true;
}
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- HTML5+CSS3高级动画的应用实践
- 这五个有用的 CSS 属性完全被我忽视了
- 在 Kubernetes 中使用 Helm Hooks 迁移数据库
- 漫画:如何螺旋遍历二维数组?
- 轻松学Pytorch-迁移学习实现表面缺陷检查
- 汇总 | OpenCV4中的非典型深度学习模型
- 如何使用私有仓库的 Go Modules
- python绘图 | salem一招解决所有可视化中的掩膜(Mask)问题
- Tungsten Fabric知识库丨关于OpenStack、K8s、CentOS安装问题的补充
- Cypress系列(51)- its() 命令详解
- 推荐 | 深度学习反卷积最易懂理解
- Java实现抢红包算法,附完整代码(公平版和手速版)
- 【代码审计】xyhcms3.5后台任意文件读取
- 前端架构探索与实践
- Centos编译JDK8源码