PHP保存到文件脚本,在升级到PHP 7.0后出错

时间:2017-06-06 11:14:12

标签: php fopen fwrite php-7 fread

我有一个相当简单的脚本,应该在文件中添加新的字符串。

if (isset($_POST["score"]))
{
$myFile = $_SERVER['DOCUMENT_ROOT']."/xx/zz.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);

$File = $_SERVER['DOCUMENT_ROOT']."/xx/zz.txt"; 
$Handle = fopen($File, 'w');
$Data = $_POST["score"]."\n".$theData; 
fwrite($Handle, $Data); 
fclose($Handle); 
}

升级到PHP 7.0后,我收到错误:

fread() expects parameter 1 to be resource, boolean given in /home/zzz/public_html/zzz.php on line 7
fclose() expects parameter 1 to be resource, boolean given in /home/zzz/public_html/zzz.php on line 8

有人可以解释为什么会出现此错误以及如何修复错误吗?什么是PHP 7.0导致它突然停止工作?

2 个答案:

答案 0 :(得分:5)

//First, see if the file exists
if (!is_file($myFile))
{
    die("<b>404 File not found!</b>");
}

或者您可以尝试使用The SplFileObject class - 文件的面向对象接口。

答案 1 :(得分:1)

fopen()失败时返回false。 false不是资源,因此是警告。

在将其注入类似资源的参数之前,您最好先测试$fh

if($fh = fopen($myFile, 'r')) {

}