1

存在しないファイルを作成しようとしているか、既に存在するファイルに書き込もうとしています。

PHPファイル内でこれを試しています:

$file = fopen("data.txt", "a");

fwrite($file, "\n" . $name); fwrite($file, "," . $lastname);

fwrite($file, "," . $email);

fclose($ファイル);

Windows XP で Apache を実行していますが、ファイル "data.txt" が作成されていません。ドキュメントによると、パラメーターを追加すると、最初のパラメーター (data.txt) に記載されている名前のファイルが作成されます。私はここで何をしているのですか?

よろしくお願いします

4

4 に答える 4

3

コードにいくつかのテストとデバッグ出力を追加しましょう

echo 'cwd is: ', getcwd(), "<br />\n";
echo 'target should be: ', getcwd(), "/data.txt <br />\n";
echo 'file already exists: ', file_exists('data.txt') ? 'yes':'no', "<br />\n";

$file = fopen("data.txt", "a");
if ( !$file ) {
  die('fopen failed');
}
$c = fwrite($file, "\n$name,$lastname,$email");
fclose($file);
echo $c, ' bytes written';
于 2010-04-01T08:36:31.643 に答える
1

スクリプトも現在のディレクトリと見なしているそのディレクトリを調べていますか? あなたのApacheプロセスには書き込み権限がありますか?エラーログには、失敗したコマンドが記載されていますか?

于 2010-03-31T23:13:12.900 に答える
0

既存のdata.txtへの追加は機能するが、まだ存在しないファイルを作成しない場合は、ファイルのアクセス許可で書き込みが許可されているが、ファイルが存在するフォルダーがApacheによって所有されていないことを意味している可能性があります。そのため、そこにファイルを作成することはできません。

于 2011-07-21T07:31:52.860 に答える
0

ファイルは、プロセスのメイン スレッドが実行されているディレクトリに作成されることに注意してください。これは、「メイン」プログラムが A/ にあり、「.」にファイルを作成する B/ の関数からの関数ファイルが含まれている場合を意味します。A で作成する/ B ではなく/

また、fwrite 関数を 3 回呼び出す必要はありません。

fwrite($file, "\n" . $name . ", " . $lastname . ", " . $email);
于 2010-03-31T23:27:51.697 に答える