PHP 访问文件 php文件无法访问
bigegpt 2024-10-12 07:00 19 浏览
1.打开文件
定义和用法
fopen() 函数打开文件或者 URL。
如果打开失败,本函数返回 FALSE。
语法
fopen(filename,mode,include_path,context)
参数描述
filename必需。规定要打开的文件或 URL。
mode必需。规定要求到该文件/流的访问类型。可能的值见下表。
include_path可选。如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。
context可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。
mode 参数的可能的值
mode说明
"r"只读方式打开,将文件指针指向文件头。
"r+"读写方式打开,将文件指针指向文件头。
"w"写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
"w+"读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
"a"写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
"a+"读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
"x"
创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。
这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
"x+"
创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。
这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
说明
fopen() 将 filename 指定的名字资源绑定到一个流上。如果 filename 是 "scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。
如果 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了安全模式或者 open_basedir 则会应用进一步的限制。
如果 PHP 认为 filename 指定的是一个已注册的协议,而该协议被注册为一个网络 URL,PHP 将检查并确认 allow_url_fopen 已被激活。如果关闭了,PHP 将发出一个警告,而 fopen 的调用则失败。
例:fopen.php
<?php
@fopen("file.txt", "r");//只读打开,将文件指针指向文件头
@fopen("file.txt", "w");//写入打开,将文件指针指向文件头 @ 可以屏蔽一些警告信息,但频繁使用 @ 会造成程序运行过慢
?>
结果:
2.访问文件
1)fread()
定义和用法
fread() 函数读取文件(可安全用于二进制文件)。
语法
fread(file,length)
参数描述
file必需。规定要读取打开文件。
length必需。规定要读取的最大字节数。
说明
fread() 从文件指针 file 读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到哪种情况。
返回所读取的字符串,如果出错返回 false。
例:fread.php
<?php
$filename = "file.txt"; //文件名称
$handle = fopen($filename, "r");//只读打开文件句柄指针
$str1 = fread($handle,filesize($filename));//读取文件,按照文件自身大小读取
echo '$str1 = '.$str1.'<br><br>';//读取文件内容
fclose($handle);//关闭只读
$handle = fopen($filename, "r");//再次打开只读文件
$str2 = fread($handle,7);//读取文件,按照7个字节读取 换行占两个字节
echo '$str2 = '.$str2;//读取文件内容
fclose($handle);//关闭只读
?>
结果:
注:读取文件3个步骤
调用fopen函数打开文件句柄
调用fread等文件读取函数
调用fclose函数关闭文件句柄
2)fgets()
定义和用法
fgets() 函数从文件指针中读取一行。
语法
fgets(file,length)
参数描述
file必需。规定要读取的文件。
length可选。规定要读取的字节数。默认是 1024 字节。
说明
从 file 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(要看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。
若失败,则返回 false。
例:fgets.php
<?php
$handle = @fopen("file.txt", "r");//打开只读句柄
$i = 0;//定义变量存储行数
while (!feof($handle)) { //函数检测是否已到达文件末尾 (eof) 是或者错误返回true
$buffer = fgets($handle, 4096); //句柄处读取行内容 字节大小为4096-1的内容
$i = $i + 1;//计数
echo "第 $i 行".$buffer.'<br>';//打印读取几行内容
}
fclose($handle);//关闭句柄
?>
结果:
注:
定义和用法
feof() 函数检测是否已到达文件末尾 (eof)。
如果文件指针到了 EOF 或者出错时则返回 TRUE,否则返回一个错误(包括 socket 超时),其它情况则返回 FALSE。
语法
feof(file)
参数描述
file必需。规定要检查的打开文件。
说明
file 参数是一个文件指针。这个文件指针必须有效,并且必须指向一个由 fopen() 或 fsockopen() 成功打开(但还没有被 fclose() 关闭)的文件。
3)fgetc()
定义和用法
fgetc() 函数从文件指针中读取一个字符。
语法
fgetc(file)
参数描述
file必需。规定要检查的文件。
说明
返回一个包含有一个字符的字符串,该字符从 file 指向的文件中得到。碰到 EOF 则返回 false。
文件指针必须有效,并且必须指向一个由 fopen() 或 fsockopen() 成功打开(但还没有被 fclose() 关闭)的文件。
例:fgetc.php
<?php
$fp = @fopen('file.txt', 'r');//打开只读句柄
$i = 0;//定义变量存储字符次数
while (false !== ($char = fgetc($fp))) { //读取句柄中每一个字符直到EOF 返回false
$i = $i + 1;//计数
echo "第 $i 字符:$char<br>";//打印读取第几个字符
}
?>
结果:
4)file()
定义和用法
file() 函数把整个文件读入一个数组中。
与 file_get_contents() 类似,不同的是 file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。
如果失败,则返回 false。
语法
file(path,include_path,context)
参数描述
path必需。规定要读取的文件。
include_path可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。
context
可选。规定文件句柄的环境。
context 是一套可以修改流的行为的选项。若使用 null,则忽略。
说明
对 context 的支持是 PHP 5.0.0 添加的。
返回的数组中每一行都包括了行结束符,因此如果不需要行结束符时还需要使用 rtrim() 函数。
例:file.php
<?php
$lines = file('file.txt');// 把文件内容存储到$lines 数组里,数组中每个单元都是文件中的一行,包括换行符在内
foreach ($lines as $num => $line) { //foreach方式遍历打印数组内容
echo "第{$num}行: ".$line."<br>";
}
?>
结果:
5)fgetss()
定义和用法
fgetss() 函数从打开的文件中读取一行并过滤掉 HTML 和 PHP 标记。
与 fgets() 相同,不同的是 fgetss 尝试从读取的文本中去掉任何 HTML 和 PHP 标记。
语法
fgetss(file,length,tags)
参数描述
file必需。规定要读取的文件。
length可选。规定要读取的字节数。默认是 1024 字节。该参数在 PHP 5 之前是必需的。
tags可选。规定不会被删除的标签。
说明
可以用可选的第三个参数 tags 指定哪些标记不被去掉。
若失败,则返回 false。
例:fgetss.php
<?php
$handle = @fopen("file.html", "r");//打开只读句柄
$i = 0;//定义变量存储行数
while (!feof($handle)) {//函数检测是否已到达文件末尾 (eof) 是或者错误返回true
$lines = fgetss($handle);//从打开的文件中读取一行并过滤掉 HTML 和 PHP 标记。
$i = $i + 1;//计数
echo "第{$i}行: ".$lines."<br>";//打印读取几行内容
}
?>
file.html
<html>
<head>title
</head>
<body>
<pre>This is a file.
<table>
<tr>
<td>abcd</td>
<td>xyz</td>
</tr>
</table>
</body>
</html>
结果:
3.写入文件
1)fwrite
定义和用法
fwrite() 函数写入文件(可安全用于二进制文件)。
语法
fwrite(file,string,length)
参数描述
file必需。规定要写入的打开文件。
string必需。规定要写入文件的字符串。
length可选。规定要写入的最大字节数。
说明
fwrite() 把 string 的内容写入文件指针 file 处。 如果指定了 length,当写入了 length 个字节或者写完了 string 以后,写入就会停止,视乎先碰到哪种情况。
fwrite() 返回写入的字符数,出现错误时则返回 false。
例:fwrite.php
<?php
$filename = 'file.txt'; //文件名称
$content = "abcd\nxyz";//文件内容
$handle = fopen($filename,'a+');//读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
if(fwrite($handle,$content) === false) //返回写入的字符数,出现错误时则返回 false。
{
echo "写入{$filename}文件失败";//写入{$filename}文件失败
exit;
}
echo "写入{$filename}文件成功";//写入{$filename}文件成功
fclose($handle);//关闭句柄
?>
结果:
2)file_put_contents
定义和用法
file_put_contents() 函数把一个字符串写入文件中。
与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
语法
file_put_contents(file,data,mode,context)
参数描述
file必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data可选。规定要写入文件的数据。可以是字符串、数组或数据流。
mode
可选。规定如何打开/写入文件。可能的值:
FILE_USE_INCLUDE_PATH
FILE_APPEND
LOCK_EX
context
可选。规定文件句柄的环境。
context 是一套可以修改流的行为的选项。若使用 null,则忽略。
说明
参数 data 可以是数组(但不能是多维数组)。
自 PHP 5.1.0 起,data 参数也可以被指定为 stream 资源,stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。
对 context 参数的支持是 PHP 5.0.0 添加的。
返回值
该函数将返回写入到文件内数据的字节数。
提示和注释
提示:使用 FILE_APPEND 可避免删除文件中已有的内容。
例:file_put_contents.php
<?php
$content = 'file_put_contents';//写入内容
$file = 'file.txt';//写入文件
if(file_put_contents($file ,$content) === false)//返回写入的字符数,出现错误时则返回 false。
{
echo "写入{$file}文件失败";//写入{$file}文件失败
exit;
}
echo "写入{$file}文件成功";//写入{$file}文件成功
?>
结果:
4.复制文件
定义和用法
copy() 函数拷贝文件。
语法
copy(source,destination)
参数描述
source必需。规定要复制的文件。
destination必需。规定复制文件的目的地。
说明
将文件从 source 拷贝到 destination。如果成功则返回 TRUE,否则返回 FALSE。
提示和注释
提示:如果要移动文件的话,请使用 rename() 函数。
例:copy.php
<?php
$file = 'filebak.txt'; //被复制原文件
$newfile = 'file.txt';//复制后文件
if (!copy($file, $newfile)) {//如果成功则返回 TRUE,否则返回 FALSE。
echo "文件复制失败:{$file} copy to {$newfile}";
}
else {
echo "文件复制成功:{$file} copy to {$newfile}";
}
?>
结果:
原文件不存在报错
5.删除文件
定义和用法
unlink() 函数删除文件。
若成功,则返回 true,失败则返回 false。
语法
unlink(filename,context)
参数描述
filename必需。规定要删除的文件。
context可选。规定文件句柄的环境。Context 是可修改流的行为的一套选项。
例:unlink.php
<?php
$filename = 'file.txt'; //要被删除文件
fopen($filename,'a+');//读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
if(!unlink($filename))//若成功,则返回 true,失败则返回 false。
{
echo "文件{$filename}删除失败";
}
else
{
echo "文件{$filename}删除成功";
}
?>
结果:
6.重命名文件
定义和用法
rename() 函数重命名文件或目录。
若成功,则该函数返回 true。若失败,则返回 false。
语法
rename(oldname,newname,context)
参数描述
oldname必需。规定要重命名的文件或目录。
newname必需。规定文件或目录的新名称。
context可选。规定文件句柄的环境。context 是可修改流的行为的一套选项。
例:rename.php
<?php
$filename = 'file.txt';//被重命名原文件
$newname = 'newfile.txt';//重命名文件
fun_rename($filename,$newname);//调用fun_rename函数
function fun_rename($filename,$newname)//创建函数 形参$filename和$newname
{
if(!rename($filename,$newname))//若成功,则该函数返回 true。若失败,则返回 false。
{
echo "文件{$filename}重命名为{$newname}失败<br>";
}
else
{
echo "文件{$filename}重命名为{$newname}成功<br>";
}
}
?>
结果:
相关推荐
- 得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践
-
一、摘要在前端可观测分析场景中,需要实时观测并处理多地、多环境的运行情况,以保障Web应用和移动端的可用性与性能。传统方案往往依赖代理Agent→消息队列→流计算引擎→OLAP存储...
- warm-flow新春版:网关直连和流程图重构
-
本期主要解决了网关直连和流程图重构,可以自此之后可支持各种复杂的网关混合、多网关直连使用。-新增Ruoyi-Vue-Plus优秀开源集成案例更新日志[feat]导入、导出和保存等新增json格式支持...
- 扣子空间体验报告
-
在数字化时代,智能工具的应用正不断拓展到我们工作和生活的各个角落。从任务规划到项目执行,再到任务管理,作者深入探讨了这款工具在不同场景下的表现和潜力。通过具体的应用实例,文章展示了扣子空间如何帮助用户...
- spider-flow:开源的可视化方式定义爬虫方案
-
spider-flow简介spider-flow是一个爬虫平台,以可视化推拽方式定义爬取流程,无需代码即可实现一个爬虫服务。spider-flow特性支持css选择器、正则提取支持JSON/XML格式...
- solon-flow 你好世界!
-
solon-flow是一个基础级的流处理引擎(可用于业务规则、决策处理、计算编排、流程审批等......)。提供有“开放式”驱动定制支持,像jdbc有mysql或pgsql等驱动,可...
- 新一代开源爬虫平台:SpiderFlow
-
SpiderFlow:新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。-精选真开源,释放新价值。概览Spider-Flow是一个开源的、面向所有用户的Web端爬虫构建平台,它使用Ja...
- 通过 SQL 训练机器学习模型的引擎
-
关注薪资待遇的同学应该知道,机器学习相关的岗位工资普遍偏高啊。同时随着各种通用机器学习框架的出现,机器学习的门槛也在逐渐降低,训练一个简单的机器学习模型变得不那么难。但是不得不承认对于一些数据相关的工...
- 鼠须管输入法rime for Mac
-
鼠须管输入法forMac是一款十分新颖的跨平台输入法软件,全名是中州韵输入法引擎,鼠须管输入法mac版不仅仅是一个输入法,而是一个输入法算法框架。Rime的基础架构十分精良,一套算法支持了拼音、...
- Go语言 1.20 版本正式发布:新版详细介绍
-
Go1.20简介最新的Go版本1.20在Go1.19发布六个月后发布。它的大部分更改都在工具链、运行时和库的实现中。一如既往,该版本保持了Go1的兼容性承诺。我们期望几乎所...
- iOS 10平台SpriteKit新特性之Tile Maps(上)
-
简介苹果公司在WWDC2016大会上向人们展示了一大批新的好东西。其中之一就是SpriteKitTileEditor。这款工具易于上手,而且看起来速度特别快。在本教程中,你将了解关于TileE...
- 程序员简历例句—范例Java、Python、C++模板
-
个人简介通用简介:有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读过XXX,XXX等多个开源项目源码从而学习增强代码的健壮性与扩展性。具备良好的代码编程习惯及文档编写能力,参与多个高...
- Telerik UI for iOS Q3 2015正式发布
-
近日,TelerikUIforiOS正式发布了Q32015。新版本新增对XCode7、Swift2.0和iOS9的支持,同时还新增了对数轴、不连续的日期时间轴等;改进TKDataPoin...
- ios使用ijkplayer+nginx进行视频直播
-
上两节,我们讲到使用nginx和ngixn的rtmp模块搭建直播的服务器,接着我们讲解了在Android使用ijkplayer来作为我们的视频直播播放器,整个过程中,需要注意的就是ijlplayer编...
- IOS技术分享|iOS快速生成开发文档(一)
-
前言对于开发人员而言,文档的作用不言而喻。文档不仅可以提高软件开发效率,还能便于以后的软件开发、使用和维护。本文主要讲述Objective-C快速生成开发文档工具appledoc。简介apple...
- macOS下配置VS Code C++开发环境
-
本文介绍在苹果macOS操作系统下,配置VisualStudioCode的C/C++开发环境的过程,本环境使用Clang/LLVM编译器和调试器。一、前置条件本文默认前置条件是,您的开发设备已...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- resize函数 (64)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- mybatis大于等于 (64)
- xcode-select (66)
- httperror403.14-forbidden (63)
- logstashinput (65)
- hadoop端口 (65)
- dockernetworkconnect (63)
- esxi7 (63)
- vue阻止冒泡 (67)
- c#for循环 (63)
- oracle时间戳转换日期 (64)
- jquery跨域 (68)
- php写入文件 (73)
- java大写转小写 (63)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)