2017-06-06 4 views
0

新しい文字列をファイルに追加するはずの簡単なスクリプトがあります。 PHP 7.0にアップグレードした後、私はエラーを取得PHPがファイルに保存スクリプトに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); 
} 

:このエラーが現れると、それがどのように固定することができる理由

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で突然動作を停止させたのは何ですか?

+1

あなたはそれが以前のPHPバージョンから古いシステムファイルを読み込んでいないことは確かですか? 'phpinfo()'は何を表示し、そのファイルは最初に内容を持っていますか?ファイルが空の場合、そのエラーがスローされます。権限も確認してください。 –

答えて

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

それとも、The SplFileObject class使用しようとすることができます - ファイルのためのオブジェクト指向のインターフェイスを。

1

fopen()が失敗すると、falseを返します。 falseはリソースではないため、警告です。

あなたは、リソースのような引数としてそれを注入する前に、より良いテスト$fhをしたい:

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

} 
+0

これは、fopenが$ _SERVER ['DOCUMENT_ROOT']というファイルを作成できなかったことを意味します。 "/ xx/zz.txt" しかし、私はチェックしてファイルがあります。スクリプトやFTP上のファイルで変更されたものはありません。 PHP 7.0にアップグレードすると突然fopenが失敗するのはなぜですか? –

+0

権限の確認はどうですか? error_log()を使用して、DOCUMENT_ROOTが信じられているものであることを確認できます。 – Collector

関連する問題