作者:小爬虫 | 来源:互联网 | 2013-06-24 21:41
通常情况下,对文件的操作分为:打开文件,读或者写文件,最后关闭文件。今天就来谈一谈文件操作的第一步:打开文件。要在PHP中打开一个文件,可以使用PHP内置函数fopen()函数。当使用这个函数打开一个文件的时候,还需要指定如何使用该文件,也就是选择文件模式。
通常情况下,对文件的操作分为:打开文件,读或者写文件,最后关闭文件。今天就来谈一谈文件操作的第一步:打开文件。要在PHP中打开一个文件,可以使用PHP内置函数fopen()函数。当使用这个函数打开一个文件的时候,还需要指定如何使用该文件,也就是选择文件模式。
WEB服务器上的操作系统必须知道要对打开的文件进行什么操作。操作系统需要了解在打开这个文件后,这个文件是否允许其他脚本再打开,它还需要了解使用者(或脚本属主)是否具有在这种方式下使用该文件的权限。从本质上说,文件模式可以告诉操作系统一种机制,这个机制可以决定如何处理来自其他人或脚本的访问请求,以及一种用来检查你是否有权访问这个文件的方法。当打开一个文件的时候,有以下3种选择:
1.打开文件只是为了只读、只写或者读和写。
2.如果要写一个文件,你可能希望覆盖所有已有的文件内容,或者仅仅将新数据追加到文件末尾。如果文件已经存在,也可以终止程序的执行而不是覆盖该文件。
3.如果希望在一个分区了二进制方式和纯文本方式的系统上写一个文件,还必须指定采用的方式。
fopen()函数支持以上3种方式的单一或者组合操作。
一、使用fopen()打开文件
例子:假设某网友要在一个小说网站中打开一个页面阅读一本书,那么网站后台可以调用如下所示的语句打开要阅读的文件:
$fp = fopen("$DOCUMENT_ROOT/../books/book1.txt", 'r');
调用fopen()函数的时候需要传递2个到3个参数。通常使用2个参数,如上代码所示。第一个参数是要打开的文件。以上代码中指定的是一个文件的路径,其中变量$DOCUMENT_ROOT指定了WEB服务器的根目录,使用 ".."表示文档根目录的父目录。这个路径称为相对路径,因为它描述了一个相对于文档根目录的文件系统设置。根据服务器设置不同,可以通过以下3种方式各到文档的根目录:
1.$_SERVER['DOCUMENT_ROOT']
2.$DOCUMENT_ROOT
3.$HTTP_SERVER_VARS['DOCUMENT_ROOT']
对于表单数据,第一风格是首选的。
fopen()函数的第二个参数是文件模式,它是一个字符串,指定了将对文件进行的操作。在以上面的例子中,我们将"r"传给了fopen()—这就意味着要以只读的文件打开这个文件。
如果fopen()函数成功地打开一个文件,该函数将返回一个指向这个文件的文件指针。在上面的例子中,文件指针保存在变量$fp中。当读者的确希望能够只读这个文件时,将使用这个变量来访问该文件。
二、通过FTP或HTTP打开文件
除了打开一个本地文件进行读写操作之外,也可以使用fopen()函数通过FTP、HTTP或者其它协议来打开文件。在PHP配置文件php.ini中,可以通过allow_url_fopen指令来启用或禁用这个功能。如果在使用该函数打开一个远程文件时遇到问题,请检查php.ini文件。
如果使用的文件名是ftp://开始的,fopen()函数将建立一个到指定服务器的HTTP连接,并返回一个指定HTTP响应的指针。当使用PHP早期版本的HTTP模式时,必须在目录名称后添加结束斜线,如下所示:
http://www.hostname.com/,而不是http://www.hostname.com
当使用后一种地址形式(不带斜线)时,WEB服务器通常会使用HTTP重写向到第一个地址(带斜线地址)。请记住,URL中的域名不区分大小写,但是路径和文件名可能会区分大小写,如果没注意这些细节可能会造成文件操作失败。