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 小乘法表实现代码
Jul 16 PHP
PHP 魔术函数使用说明
May 14 PHP
Admin generator, filters and I18n
Oct 06 PHP
Function eregi is deprecated (解决方法)
Jun 21 PHP
php实现水仙花数示例分享
Apr 03 PHP
php实现的Captcha验证码类实例
Sep 22 PHP
php实现复制移动文件的方法
Jul 29 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
Jun 22 PHP
[原创]php正则删除img标签的方法示例
May 27 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
Oct 13 PHP
Centos7 Yum安装PHP7.2流程教程详解
Jul 02 PHP
PHP操作XML中XPath的应用示例
Jul 04 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
Access数据库导入Mysql的方法之一
2006/10/09 PHP
PHP学习之PHP表达式
2006/10/09 PHP
php网上商城购物车设计代码分享
2012/02/15 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
JavaScript 数组详解
2013/10/10 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
Python中函数的用法实例教程
2014/09/08 Python
Python tkinter label 更新方法
2018/10/11 Python
python实现顺时针打印矩阵
2019/03/02 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
军训生自我鉴定范文
2013/12/27 职场文书
会计工作心得体会
2014/01/13 职场文书
中学自我评价
2014/01/31 职场文书
同事打架检讨书
2014/02/04 职场文书
作风建设演讲稿
2014/05/23 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
买卖合同协议书范本
2014/10/18 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
乡镇党建工作汇报材料
2014/10/27 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers