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 相关文章推荐
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
Jun 03 PHP
php打开文件fopen函数的使用说明
Jul 05 PHP
基于php的微信公众平台开发入门实例
Apr 15 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
Dec 17 PHP
php采集神器cURL使用方法详解
Feb 19 PHP
php图片添加文字水印实现代码
Mar 15 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
Feb 15 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
PHP实现的DES加密解密类定义与用法示例
Nov 02 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 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
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
JQuery的Validation插件中Remote验证的中文问题
2010/07/26 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
超全面的JavaScript开发规范(推荐)
2017/01/21 Javascript
js 颜色选择插件
2017/01/23 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
Vue 实现从小到大的横向滑动效果详解
2019/10/16 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
使用python3实现操作串口详解
2019/01/01 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
HTML5 History API 实现无刷新跳转
2016/01/11 HTML / CSS
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
杭州联环马网络笔试题面试题
2013/08/04 面试题
机械制造专业个人的自我评价
2013/12/28 职场文书
办公室前台岗位职责
2014/01/04 职场文书
九年级科学教学反思
2014/01/29 职场文书
医学院毕业生自荐信范文
2014/03/06 职场文书
学生操行评语大全
2014/04/24 职场文书
应届生求职信范文
2014/06/30 职场文书
2014年青年教师工作总结
2014/12/17 职场文书
运动会开幕式致辞
2015/07/29 职场文书
防震减灾主题班会
2015/08/14 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
python实现学生信息管理系统(面向对象)
2022/06/05 Python