10

ファイルを開くことができないときに、「FALSE」よりも意味のあるものを取得するにはどうすればよいですか?

$myFile = "/home/user/testFile.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file");

dieステートメントを使用するcan't open fileと、クライアントに返され、ほとんど役に立ちません。削除してもエラーは発生しません。私が返すなら$fh、それはFALSEです。ローカルファイル名と絶対ファイル名の両方を試しました。私のindex.htmlファイルは、ホール フォルダのサブ フォルダの 1 つにあります。さらに、書き込みしようとしているフォルダーで suPHP を使用しています0755(suPHP では、すべてのフォルダーにこれが必要です)。

問題が発生した理由を突き止める方法、またはファイルを開く前にクエリを実行する方法を教えてください。

4

2 に答える 2

11

error_get_last() を使用して、php の (抑制された) エラーをキャッチします。

$f = @fopen("x", "r") or die(print_r(error_get_last(),true));
于 2011-11-05T07:01:09.110 に答える
7

fopen失敗した場合は E_WARNING を発生させる必要があります。それをキャッチするには、 error_get_lastまたはset_error_handler (*) を参照してください。それ以外に、file_existsis_readableを使用して、ファイルが見つからないか、別の (おそらくパーミッションに関連する) 問題があるかどうかを確認できます。

(*) すべての PHP エラーを例外に変換するエラー ハンドラを常に設定することをお勧めします。

于 2011-11-05T07:04:18.037 に答える