2009-07-04 18 views
1

私は立ち往生して手を必要としています。誰かが助けることを望む?PHP - 書き込みに失敗しました

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

$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); 

ありがとうございます。

+0

わかりませんが、プログラムにファイルへの書き込みに必要な権限があるかどうかを確認できますか? –

+0

ええ、私はそれを確認しました。 777のとても奇妙です。 – frio80

+0

サーバーのエラーログを確認しましたか? – PatrikAkerstrand

答えて

1

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

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

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

0

私はどこでも使われているのを見ましたが、問題は||死ぬ( "Couln't open users_v2!");

まず私が追加:

error_reporting(E_ALL); 

をエラーを報告しているものを見るためにPHP。

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

返されたファイルハンドルは、「リソースID #X」で、それがなければ1の無効なストリームハンドルエラーやファイルハンドルを返します。

に行を変更する:

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

とあなたのコードが正常に動作します。今すぐphp.netでこれを投稿するつもりです。

+0

FreeBSD上で動作しています。 – frio80

関連する問題