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 miniBB中文乱码问题解决方法
Nov 25 PHP
PHP学习笔记之一
Jan 17 PHP
php 5.3.5安装memcache注意事项小结
Apr 12 PHP
php设计模式 Facade(外观模式)
Jun 26 PHP
PHP mail()函数使用及配置方法
Jan 14 PHP
PHP小技巧之函数重载
Jun 02 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
Nov 19 PHP
PHP工程师VIM配置分享
Dec 15 PHP
PHP中的Trait 特性及作用
Apr 03 PHP
PHP Header失效的原因分析及解决方法
Nov 16 PHP
php获取访问者浏览页面的浏览器类型
Jan 23 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 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
农民和部队如何穿矿
2020/03/04 星际争霸
全国FM电台频率大全 - 31 新疆维吾尔族自治区
2020/03/11 无线电
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
js实现文本框支持加减运算的方法
2015/08/19 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
vue实现动态数据绑定
2017/04/28 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
Python爬虫代理IP池实现方法
2017/01/05 Python
python对日志进行处理的实例代码
2018/10/06 Python
Python 分发包中添加额外文件的方法
2019/08/16 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
数学专业毕业生自荐信
2013/11/10 职场文书
内业资料员岗位职责
2014/01/04 职场文书
餐厅楼面主管岗位职责范本
2014/02/16 职场文书
蟋蟀的住宅教学反思
2014/04/26 职场文书
节约用水的口号
2014/06/20 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
运动会演讲稿50字
2014/08/25 职场文书
2014年预算员工作总结
2014/12/05 职场文书
护士年终个人总结
2015/02/13 职场文书
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python
SpringAop日志找不到方法的处理
2021/06/21 Java/Android