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 遍历文件实现代码
May 04 PHP
php从csv文件读取数据并输出到网页的方法
Mar 14 PHP
PHP rsa加密解密使用方法
Apr 27 PHP
php遍历树的常用方法汇总
Jun 18 PHP
PHP随机数 C扩展随机数
May 04 PHP
Yii中srbac权限扩展模块工作原理与用法分析
Jul 14 PHP
PHP中的use关键字及文件的加载详解
Nov 28 PHP
smarty模板数学运算示例
Dec 11 PHP
Laravel如何友好的修改.env配置文件详解
Jun 07 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 PHP
PHP+Redis开发的书签案例实战详解
Jul 09 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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
根德YB400的电路分析
2021/03/02 无线电
php下过滤html代码的函数 提高程序安全性
2010/03/02 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
php计算程序运行时间的简单例子分享
2014/05/10 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
jQuery学习笔记之jQuery的动画
2010/12/22 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
[50:05]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Django实现的自定义访问日志模块示例
2017/06/23 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
python实现爬取图书封面
2018/07/05 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
用scikit-learn和pandas学习线性回归的方法
2019/06/21 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
2019/08/17 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
英国门把手公司:Door Handle Company
2019/05/12 全球购物
会计专业推荐信
2013/10/29 职场文书
八年级英语教学反思
2014/01/09 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
病危通知书样本
2015/04/17 职场文书
2015年小学二年级班主任工作总结
2015/05/21 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书
Nginx工作模式及代理配置的使用细节
2022/03/21 Servers