PHP 升级到 PHP 7.0 后保存到文件的脚本出现错误
PHP save to file script giving errors after upgrade to PHP 7.0
我有一个相当简单的脚本,可以将新的字符串行添加到文件中。
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 是什么导致它突然停止工作?
当 fopen()
失败时它 returns 错误。 false 不是资源,因此是警告。
您最好先测试 $fh
,然后再将其作为类似资源的参数注入:
if($fh = fopen($myFile, 'r')) {
}
//First, see if the file exists
if (!is_file($myFile))
{
die("<b>404 File not found!</b>");
}
或者您可以尝试使用 The SplFileObject class - 面向对象的文件接口。
我有一个相当简单的脚本,可以将新的字符串行添加到文件中。
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 是什么导致它突然停止工作?
当 fopen()
失败时它 returns 错误。 false 不是资源,因此是警告。
您最好先测试 $fh
,然后再将其作为类似资源的参数注入:
if($fh = fopen($myFile, 'r')) {
}
//First, see if the file exists
if (!is_file($myFile))
{
die("<b>404 File not found!</b>");
}
或者您可以尝试使用 The SplFileObject class - 面向对象的文件接口。