php如何判断文件是否存在,包括本地和远程文件

当检查的文件是本地时用PHP自带的file_exists检查就行了,而此函数只能检查本地的函数是否存在,

所以如果要检查远程的文件是否存在只能用其它的方法了。

如果所服务器中php的配置开启了“allow_url_fopen = On”,即允许远端访问,那么也很简单,其实这个是php.ini中默认开启的,

用fopen函数判断就行了,能打开说明存在

如果allow_url_fopen = Off那么可以用socket通讯来解决

下面写的一个通用函数my_file_exists来检查文件是否存在

[php]  view plain  copy
  1. function my_file_exists($file)  
  2. {  
  3.     if(preg_match('/^http:\/\//',$file)){  
  4.         //远程文件  
  5.         if(ini_get('allow_url_fopen')){  
  6.             if(@fopen($file,'r')) return true;  
  7.         }  
  8.         else{  
  9.             $parseurl=parse_url($file);  
  10.             $host=$parseurl['host'];  
  11.             $path=$parseurl['path'];  
  12.             $fp=fsockopen($host,80, $errno$errstr, 10);  
  13.             if(!$fp)return false;  
  14.             fputs($fp,"GET {$path} HTTP/1.1 \r\nhost:{$host}\r\n\r\n");  
  15.             if(preg_match('/HTTP\/1.1 200/',fgets($fp,1024))) return true;  
  16.         }  
  17.         return false;  
  18.     }  
  19.     return file_exists($file);  
  20. }  

现在就可以调用此函数来检查文件的存在性,而不用去考虑是远程还是本地文件,或者是否禁用了allow_url_open
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值