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 07 PHP
Zend framework处理一个http请求的流程分析
Feb 08 PHP
php array_unique之后json_encode需要注意
Jan 02 PHP
php max_execution_time执行时间问题
Jul 17 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
Jun 21 PHP
ThinkPHP实现批量删除数据的代码实例
Jul 02 PHP
浅谈php自定义错误日志
Feb 13 PHP
深入剖析PHP中printf()函数格式化使用
May 23 PHP
PHP 7.1新特性的汇总介绍
Dec 16 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 PHP
Yii框架数据库查询、增加、删除操作示例
Oct 14 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
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
javascript在子页面中函数无法调试问题解决方法
2014/01/17 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
AngularJS获取json数据的方法详解
2017/05/27 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
js动态设置select下拉菜单的默认选中项实例
2018/08/21 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
[03:30]完美盛典趣味短片 CSGO2019年度名场面
2019/12/07 DOTA
Python中的条件判断语句基础学习教程
2016/02/07 Python
python模拟表单提交登录图书馆
2018/04/27 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
python实现换位加密算法的示例
2018/10/14 Python
python数据归一化及三种方法详解
2019/08/06 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
基于python实现对文件进行切分行
2020/04/26 Python
css3背景图片透明叠加属性cross-fade简介及用法实例
2013/01/08 HTML / CSS
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
试用期转正鉴定评语
2014/01/27 职场文书
工作经常出错的检讨书
2014/09/13 职场文书
党性分析材料格式
2014/12/19 职场文书
职场中的你,辞职信写对了吗?
2019/06/26 职场文书