PHP中通过fopen()函数访问远程文件示例


Posted in PHP onNovember 18, 2014

使用PHP不仅可以让用户通过浏览器访问服务器端的文件,还可以通过HTTP或FTP等协议访问其他服务器中的文件,可以在大多数需要用文件名作为参数的函数中使用HTTP和FTP URL来代替文件名。使用fopen()函数将指定的文件名与资源绑定到一个流上,如果文件名是“scheme://…”的格式,则被当成一个URL,PHP将搜索协议处理器(也被成为封装协议)来处理此模式。

如果需要远程访问文件,必须在PHP的配置文件中激活“allow_url_fopen”选项,才能使用fopen()函数打开远程文件。而且还要确定其他服务器中的文件是否有访问权限,如果使用HTTP协议对远程文件进行连接,只能以“只读”模式打开。如果需要访问的远程FTP服务器中,对所提供的用户开启了“可写权限,则使用FTP协议连接远程文件时,就可以使用“只写”或“只读”模式打开文件。但不可以使用“可读可写”模式。

使用PHP访问远程文件就像访问本地文件一样,都是使用相同的读写函数处理。例如,可以用以下范例来打开远程Web服务器上的文件,解析我们需要的输出数据,然后就将这些数据用在数据库的检索中,或者简单地将其输出到网站剩下内容的样式匹配中。代码如下所示:

<?php

//通过http打开远程文件

$file = fopen(https://3water.com, "r") or die("打开远程文件失败!!");

while (!feof($file)){

    $line = fgets($file,1024);     //每读取一行

//如果找到远程文件中的标题标记则取出标题,并退出循环,不在读取文件

    if (preg_match("/<titile>(.*/)<\/title>",$line,$out)){     //使用正则匹配标题标记

        $title = $out[1];     //将标题标记中的标题字符取出

        break;     //退出循环,结束远程文件读取

    }

}

 

fclose($file);

echo $title;

?>

如果有合法的访问权限,可以以一个用户的身份和某FTP服务器建立连接,这样就可以向该FTP服务器端的文件进行写操作了。可以用该技术来存储远程日志文件等操作,但仅能用该方法来创建新的文件,如果尝试覆盖已经存在的文件,fopen()函数的调用将会失败。而且要以匿名(anonymous)以外的用户名连接服务器,并需要指明用户名(甚至密码),例如“ftp://user:password@ftp.lampbrother.net/path/to/file”。代码如下所示:

<?php

    //在ftp.lampbrother.net的远程服务器上创建文件,以写的模式打开

    file = fopen("ftp://user:password@ftp.lapbrother.net/path/to/file", "w");

    //将一个字符串写入到远程文件中去

    fwrite($file, "Linux+Apache+MySQL+PHP");

 

    fclose($file);

?>

为了避免由于访问远程主机时发生的超时错误,可以使用set_time_limit()函数对程序的运行时间加以限制。

PHP 相关文章推荐
PHP自定义函数收代码
Aug 01 PHP
PHP中foreach循环中使用引用要注意的地方
Jan 02 PHP
php 文件缓存函数
Oct 08 PHP
说说PHP的autoLoad自动加载机制
Sep 27 PHP
phpQuery占用内存过多的处理方法
Nov 13 PHP
PHP Curl出现403错误的解决办法
May 29 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
Jun 02 PHP
基于php编程规范(详解)
Aug 17 PHP
php对象工厂类完整示例
Aug 09 PHP
Centos7 Yum安装PHP7.2流程教程详解
Jul 02 PHP
PHP中16个高危函数整理
Sep 19 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
Nov 18 #PHP
PHP文件锁函数flock()详细介绍
Nov 18 #PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
Nov 18 #PHP
PHP操作文件的一些基本函数使用示例
Nov 18 #PHP
一个经典的PHP文件上传类分享
Nov 18 #PHP
php数组查找函数总结
Nov 18 #PHP
一个经典的PHP验证码类分享
Nov 18 #PHP
You might like
php 中英文语言转换类
2011/09/07 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
php简单的上传类分享
2016/05/15 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
PHP rmdir()函数的用法总结
2019/07/02 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
关闭浏览器时提示onbeforeunload事件
2013/12/25 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
jQuery实现自动切换播放的经典滑动门效果
2015/09/12 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
RequireJs的使用详解
2017/02/19 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
[02:40]2014DOTA2 国际邀请赛中国区预选赛 四大豪门抵达华西村
2014/05/23 DOTA
Python之自动获取公网IP的实例讲解
2017/10/01 Python
详谈在flask中使用jsonify和json.dumps的区别
2018/03/26 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
Python3.5运算符操作实例详解
2019/04/25 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
Python 项目转化为so文件实例
2019/12/23 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
4s客服专员岗位职责
2013/12/01 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
温馨提示标语
2014/06/26 职场文书
端午节活动总结报告
2015/02/11 职场文书
商务英语求职信范文
2015/03/19 职场文书
放假通知格式
2015/04/14 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
行政介绍信范文
2015/05/04 职场文书
倡议书怎么写?
2019/04/11 职场文书
源码安装apache脚本部署过程详解
2022/09/23 Servers