1

私は立ち往生していて、手を必要としています。誰かが助けてくれることを願っていますか?

このコードで「書き込みに失敗した」理由を知っている人はいますか?

$write_file = "/usr/home/public_html/php/users_v2.sql";
$write_handle = fopen($write_file, "w") || die("Couln't open users_v2!");

if (is_writeable($write_file)) {
    if ($write_handle === FALSE) echo 'Failed handle?!';
    if (fwrite($write_handle, "Hi\n") === FALSE) echo "Failed write!\n";
}

fclose($write_handle);

前もって感謝します。

4

2 に答える 2

1

ファイルハンドルを作成するときにOR演算子を使用すると、操作に応じてブール値が返されます。したがって、$ write_handleには、ファイルリソースではなく、trueまたはfalseが含まれます。書き込み用にファイルを開いて、それが成功したことをテストするためのより良い方法は、次のとおりです。

$write_handle = fopen($write_file, 'w');
if ($write_handle === false)
{
    die('Could not open file ' . $write_file);
}

さらに、fopen()、fwrite()、およびfclose()を処理する関数を使用できます。これは、同じファイルへの書き込みを1回だけ実行する場合にのみお勧めします。これは、多くのオーバーヘッドが発生し、フラグを渡さない限り、書き込みごとにファイルが空になるためです。file_put_contents()FILE_APPEND

于 2009-07-04T17:31:41.613 に答える
0

どこでも使用されているのを見てきましたが、問題は || です。die("users_v2 を開けませんでした!");

最初に追加しました:

error_reporting(E_ALL);

どのphpがエラーを報告しているかを確認します。

$write_handle = fopen($write_file, "w") || die("Couln't open users_v2!");
fclose($write_handle);

無効なストリーム ハンドル エラーとファイル ハンドル 1 を返します。これがない場合、返されるファイル ハンドルは "Resource id #x" です。

行を次のように変更します。

$write_handle = fopen($write_file, "w"); // || die("Couln't open users_v2!");

あなたのコードは正常に動作します。これをphp.netに投稿します。

于 2009-07-04T16:19:26.323 に答える