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 相关文章推荐
Windows下安装Memcached的步骤说明
Apr 25 PHP
php中实现记住密码自动登录的代码
Mar 02 PHP
php模拟socket一次连接,多次发送数据的实现代码
Jul 26 PHP
PHP图片等比例缩放生成缩略图函数分享
Jun 10 PHP
async和DOM Script文件加载比较
Jul 20 PHP
简单实用的PHP防注入类实例
Dec 05 PHP
PHP页面转UTF-8中文编码乱码的解决办法
Oct 20 PHP
php 指定范围内多个随机数代码实例
Jul 18 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
Oct 10 PHP
PHP去除字符串最后一个字符的三种方法实例
Mar 01 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
Jun 07 PHP
PHP架构及原理知识点详解
Dec 22 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 addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
ajax+php控制所有后台函数调用
2015/07/15 PHP
img的onload的另类用法
2008/01/10 Javascript
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
深入理解JQuery keyUp和keyDown的区别
2013/12/12 Javascript
Node.js模块加载详解
2014/08/16 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
[02:28]DOTA2 2017国际邀请赛小组赛回顾
2017/08/09 DOTA
Python open读写文件实现脚本
2008/09/06 Python
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
Python Socket编程之多线程聊天室
2018/07/28 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
Python3的socket使用方法详解
2020/02/18 Python
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
美国男士内衣品牌:Tommy John
2017/12/22 全球购物
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
面料业务员岗位职责
2013/12/26 职场文书
创先争优制度
2014/01/21 职场文书
销售目标责任书
2014/07/23 职场文书
2016特色励志班级口号
2015/12/24 职场文书