php fopen函数报错failed to open stream 未能打开流

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php fopen函数报错failed to open stream 未能打开流相关的知识,希望对你有一定的参考价值。

$con = '555';
$fp=fopen("../moban/content.html","r");
$str=fread($fp,filesize("../moban/content.html"));
$str=str_replace("-title-","xx网首页",$str);
$str=str_replace("-content-",$con,$str);

fclose($fp);

echo $handle=fopen("../con/con.html","w");
// 截取出来日期
//生成地址
fwrite($handle,$str);
echo "<font color='red'>正在生成</font><br>";
echo "$path";
fclose($handle);

echo "生成成功";
exit;

fopen报错有以下几种情况:

    要打开的文件不存在

    要打开的文件无权限访问(常见于Linux系统)

    打开的模式选择了x+或x,其中x+以读写方式打开,x以写入方式打开,这两种模式会创建一个新的文件,如果文件已经存在,则会打开失败,函数返回false并抛出warning级别的错误

解决方法:

    选择合适的打开模式,对于文件不存在即报错的模式,需要注意打开的文件一定要存在

    为文件设置正确的权限

    打开文件前判断是否存在,根据实际需求删除旧文件或更改文件名 

参考技术A $fp=fopen("../moban/content.html","r");

里面的地址,你最好用绝对地址。
define('_ROOT', str_replace("\\", '/', dirname(__FILE__)));
你写一个这句话,然后_ROOT就是当前文件的地址了。你把这个地址放在你路径前。
$fp=fopen(_ROOT."/../moban/content.html","r");
后面路径都要改。本回答被提问者和网友采纳
参考技术B 你有权限么?确认一下

PHP解析xml文件是报错:I/O warning : failed to load external entity

在代码顶部增加

libxml_disable_entity_loader(false);

libxml_disable_entity_loader()作用是设置是否禁止从外部加载XML实体,设为true就是禁止,目的是防止XML注入攻击(详情自行百度),本意是好的,但这个在设置后存在BUG(具体没深究,以后有时间可以研究下,也许这个BUG在高版本php中已经解决了,没有验证,总之存在这么个BUG,有研究过的朋友可以告诉我原因),影响了服务的正常运行。

对于遇到相同问题的程序猿们,可以尝试此方法来解决。

以上是关于php fopen函数报错failed to open stream 未能打开流的主要内容,如果未能解决你的问题,请参考以下文章

如何解决hadoop文件无法浏览问题“Failed to retrieve data from /webhdfs/v1/?op=LISTSTATUS: Server Error“

php使用include报错require_once(../include.php): failed to open stream: No such file or directo

nginx 报错 connect() failed (111: Connection refused) while connecting to upstream

PHP解析xml文件是报错:I/O warning : failed to load external entity

mac 启动php-fpm报错 failed to open configuration file '/private/etc/php-fpm.conf': No such file

liunx执行pecl install swoole报错“failed to run `phpize‘”