PHP 文件写入和读取操作实例详解【必看篇】(2)
• $_SERVER是PHP的超级全局变量(在代码任何地方都可访问,类型是数组),通过$_SERVER['DOCUMENT_ROOT']可取到服务器的默认根目录
服务器的默认根目录可通过php.ini修改(这个可自行百度)
• $_SERVER['DOCUMENT_ROOT']在这里等同于C:/wamp64/www
本小节的结论:推荐使用相对路径
<2>fopen的第二个参数为打开模式
设置打开模式后,我们就相当于为接下来的读写操作设置了权限:
最基本的几个模式:
“r”:只能读取文件,不能写入文件(写入操作被忽略)
“w”:只能写入文件,不能读取文件(读取操作被忽略)
“a”:只追加文件,与“w”类似,区别是“w”删除原有的内容,“a”不删除原有内容,只追加内容
<?php $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; $fp = fopen("$DOCUMENT_ROOT/text.txt",'w'); fwrite($fp,'在写模式下写入'); fclose($fp); ?>
在设置了写操作的权限后,就能正常地写入文件了
运行后打开C:/wamp64/www/text.txt:
这次我们把权限设置为只读,并尝试写入文本:'在只读模式下写入' ?
<?php $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; $fp = fopen("$DOCUMENT_ROOT/text.txt",'r'); fwrite($fp,'在读模式下写入'); fclose($fp); ?>
运行后打开C:/wamp64/www/text.txt,发现文件内容并没有改变,说明由于没有设置相应的权限,操作被忽略了
关于打开模式的网络资料,我想大家最可能找到的是这张表:(图来自W3C)
很全面,但我觉得这张表对新手有些不太友好,让人看后不知多云。 r是只读,w是只写(原来有的内容全删除),a是追加(不删除原有内容),这都好理解。
但r+,w+,和a+的区别和联系讲的实在太模糊了呀。 这里我就想详细地讲一下r+,w+,和a+三者的区别和联系:
首先r+,w+,和a+都是可读可写的,读取时的方式是一样的,关键在于写入方式的不同:
r+: 从文件[头部][覆盖]原有内容 ([不删除]原有内容);
a+:从文件[尾部][追加]内容 ([不删除]原有内容);
w+:[完全删除]原有内容,然后[再添加]新的内容
下面我依次演示上述的结论,首先我们没有写入的时候文本是”I am initialized value”(意为我是初始值)