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 无限极分类
Mar 27 PHP
PHP导入Excel到MySQL的方法
Apr 23 PHP
php函数array_merge用法一例(合并同类数组)
Feb 03 PHP
七款最流行的PHP本地服务器分享
Feb 19 PHP
smarty模板中拼接字符串的方法
Feb 14 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
wamp服务器访问php非常缓慢的解决过程
Jul 01 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
php中使用websocket详解
Sep 23 PHP
php中分页及SqlHelper类用法实例
Jan 12 PHP
laravel自定义分页效果
Jul 23 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 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
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
php提高网站效率的技巧
2015/09/29 PHP
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
JQuery 学习技巧总结
2010/05/21 Javascript
jquery 插件学习(六)
2012/08/06 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
2016/09/01 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
[00:37]食人魔魔法师轮盘吉兆顺应全新至宝将拥有额外款式
2019/12/19 DOTA
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
六行python代码的爱心曲线详解
2019/05/17 Python
使用python 写一个静态服务(实战)
2019/06/28 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
Nike墨西哥官网:Nike MX
2020/08/30 全球购物
2015年度党员个人总结
2015/02/14 职场文书
总经理年会致辞
2015/07/29 职场文书
教师素质教育心得体会
2016/01/19 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书
canvas实现贪食蛇的实践
2022/02/15 Javascript
英镑符号 £
2022/02/17 杂记
使用Java去实现超市会员管理系统
2022/03/18 Java/Android
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers