b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

由于路径和权限问题,Fopen()无法创建和写入文件

电脑杂谈  发布时间:2020-03-30 10:00:46  来源:网络整理

fopen与fopen-s_php fopen wb_fopen wb 权限

我一直在使用asp和.net环境,但很少使用php. 如果我使用asp或asp.net进行文件操作fopen wb 权限,我仍然有更多经验. 今天,由于需要,我不得不在php环境中进行文件读写操作,这对我来说还是第一次.

尽管我对编写程序充满信心,但是当我运行它时,我发现它并不那么简单.

由于路径问题,Fopen()无法创建和写入文件

首先,在本地测试程序. 步骤如下:

<? php

$ fileDir ='/phpDemo/fopen.txt';

$ str ='正在测试';

$ h = fopen($ fileDir,'w +');

if(fwrite($ h,$ str))

{

回显“文件已成功写入”;

fopen与fopen-s_php fopen wb_fopen wb 权限

}

fclose($ h);

?>

但是执行失败,提示“无法打开流: 没有这样的文件或目录”,即文件路径不正确,问题应该出在这句话.

$ fileDir ='/phpDemo/fopen.txt';

我更改了

$ fileDir ='../ phpDemo / fopen.txt';

终于成功了.

但是,上述相对路径不是我的习惯. 我更喜欢使用绝对路径. 检查后,我发现可以通过以下方式写入文件路径:

$ RootDir = $ _SERVER ['DOCUMENT_ROOT'];

$ fileDir = $ RootDir. '\ phpDemo \ fopen.txt';

fopen与fopen-s_fopen wb 权限_php fopen wb

此方法首先定义根目录,然后写出文件的绝对路径,该路径更加通用且易于管理.

不可忽视的权限问题

本地测试通过. 我认为上传到该空间后会很好. 有什么新消息?

根据提示,没有权限.

事实证明,该空间中的目录写权限未打开. PHP不再是问题.

知识扩展

打开

打开-打开文件或URL.

格式:

打开(字符串$文件名,字符串$模式)

fopen()将文件名指定的资源绑定到流.

fopen wb 权限_php fopen wb_fopen与fopen-s

文件名可以是本地文件或URL.

如果filename指定了本地文件fopen wb 权限,则该文件必须可由PHP访问,并且文件访问权限允许该访问.

如果filename指定一个URL,PHP将检查以确保allow_url_fopen已激活. 如果关闭,PHP将发出警告,并且对fopen的调用将失败. (使用fopen()和file_get_contents()来打开URL以获取网页内容的用法的区别)

fopen()中模式可能的值列表

说明

打开只读文件,将文件指针指向文件头.

以读写模式打开,将文件指针指向文件头.

以写入模式打开,将文件指针指向文件的末尾. 如果该文档不存在,请尝试创建它.

打开以进行读写,将文件指针指向文件的末尾. 如果该文档不存在,请尝试创建它.

以写模式打开,将文件指针指向文件头,并将文件大小截断为零. 如果该文档不存在,请尝试创建它.

以读写模式打开,将文件指针指向文件头并将文件大小截断为零. 如果该文档不存在,请尝试创建它.

php fopen wb_fopen与fopen-s_fopen wb 权限

返回值

成功返回一个文件指针资源(如何打开通过调用fopen()打开的资源). 如果打开失败,则此函数返回FALSE.

错误/异常

如果打开失败,则会生成E_WARNING错误. 您可以使用@掩盖错误.

有时,我们看到fopen中的mode值包含一个“ b”字符​​,例如“ wb”. 发生了什么事?

这是因为:

不同的操作系统系列具有不同的行尾习惯. 编写文本文件并要插入新行时,需要使用与操作系统匹配的行尾符号. 基于Unix的系统使用\ n作为行尾字符,基于Windows的系统使用\ r \ n作为行尾字符,而基于Macintosh的系统使用\ r作为行尾字符.

如果在写入文件时使用了错误的行尾符号,则其他应用程序在打开这些文件时可能会表现出异常.

Windows下提供了一个文本转换标签('t'),可将\ n透明地转换为\ r \ n. 您也可以使用'b'强制采用二进制模式,以便不转换数据. 要使用这些标志,请使用“ b”或“ t”作为mode参数的最后一个字符.

默认转换模式取决于SAPI和所使用的PHP版本,因此始终建议您指定适当的标记以实现可移植性. 如果要处理纯文本文件并在脚本中使用\ n作为行终止符,但还希望其他应用程序(例如记事本)可以读取这些文件,请在模式下使用't'. 在所有其他情况下,请使用“ b”.

如果在处理二进制文件时未指定'b'标记,则可能会遇到一些奇怪的问题,包括损坏的图像文件和带有\ r \ n字符的奇怪问题.

出于可移植性的原因,强烈建议在使用fopen()打开文件时始终使用'b'标记.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-157595-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      每日福利
      热点图片
      拼命载入中...