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 相关文章推荐
通过html表格发电子邮件
Oct 09 PHP
很好用的PHP数据库类
May 27 PHP
php Session存储到Redis的方法
Nov 04 PHP
PHP模拟QQ登录的方法
Jul 29 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
Dec 31 PHP
php+html5+ajax实现上传图片的方法
May 14 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
php 从一个数组中随机的取出若干个不同的数实例
Dec 31 PHP
postman的安装与使用方法(模拟Get和Post请求)
Aug 06 PHP
PHP hebrev()函数用法讲解
Feb 21 PHP
PHP中$GLOBALS与global的区别详解
Mar 21 PHP
Laravel多域名下字段验证的方法
Apr 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
有关php运算符的知识大全
2011/11/03 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
PHP文件与目录操作示例
2016/12/24 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
你所要知道JS(DHTML)中的一些技巧
2007/01/09 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
JavaScript中的prototype原型学习指南
2016/05/09 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
js遍历map javaScript遍历map的简单实现
2016/08/26 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
Three.js实现绘制字体模型示例代码
2017/09/26 Javascript
基于nodejs实现微信支付功能
2017/12/20 NodeJs
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
使用node.js实现微信小程序实时聊天功能
2018/08/13 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
Python爬虫设置代理IP的方法(爬虫技巧)
2018/03/04 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
浅析NumPy 切片和索引
2020/09/02 Python
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
四年大学生活的个人自我评价
2013/12/11 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
2014年药店工作总结
2014/11/20 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
2015年消防工作总结
2015/04/24 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS