2016-12-05 10 views
1

PHP関数file_put_contents()を使用して、コンテンツをtxtファイルに入れています。ドキュメントの例がfclose()を使用して終了していない場合、ファイルを閉じるか不要なのですか?PHPでは、file_put_contents()を使用するときにfclose()を使用する必要がありますか?

私はこれをやっている:

 $root = $_SERVER['DOCUMENT_ROOT']; 
     $log = $root.'/logs/logsContenido.txt'; 
     $agregadoLog = "texto a agregar"; 
     file_put_contents($log, $agregadoLog, FILE_APPEND | LOCK_EX); 

そして、ちょうどそれを。私は何も閉じない。

私はむしろのような何かを行う必要があります。

  $root = $_SERVER['DOCUMENT_ROOT']; 
      $log = $root.'/logs/logsContenido.txt'; 
      $agregadoLog = "texto a agregar"; 
      $file = file_put_contents($log, $agregadoLog, FILE_APPEND | LOCK_EX); 
fclose($file); 
+1

少なくとも、ユーザランド環境では、 'file_put_contents'に' fclose'を使うことは不可能です。終了するストリームはありません。 – Andrew

+5

あなたはそれをすべてやりましたか? http://php.net/manual/en/function.file-put-contents.php - 1つのインスタンスが表示されます。* "これは、あなたが1つの書き込みをしている場合にのみ使用してください。 "* and *"この関数は、fopen()、fwrite()、fclose()を連続して呼び出して、データを書き込むのと同じです。ファイル "* –

+0

*"この関数は、ファイルに書き込まれたバイト数を返すか、失敗した場合はFALSEを返す "* - * fclose' *を*? – deceze

答えて

10

をいいえ、あなたはいけない/できません。 file_put_contentsは、ファイルのオープン、内容の書き込み、ファイルのクローズを行います。実際には、あなたがしたい場合でもすることができますあなたに任意のハンドルを公開していません。

+2

ありがとう!短く、素敵でとてもクリアです! – Rosamunda

1

file_put_contentsでは、PHPが処理します。したがって、fcloseは必要ありません。

しかし、fopenのようなハンドルを使用している場合は、スクリプトの完全な除外中にファイルを開いたままにしておくので、閉じる必要があります。ああ、それが完了したらハンドルを閉じるのも良い習慣です

+0

@alexの[ここで別の応答:](https://stackoverflow.com/questions/3938534/download-file-to-server-from-url/)を参照してください。 彼は以下を使用します: 'file_put_contents(" Tmpfile.zip "、fopen(" http://someurl/file.zip "、 'r'));' そして 'fclose(...)使用すべきです。しかし、** HTTP要求が失敗しました!**エラーで予期せぬ問題が発生しました。 – vlakov

関連する問題