2016-12-06 12 views
1

最近Apache、PHPをインストールし、小さなプロジェクトで作業を始めました。phpでテキストファイルを追加(読み書き)できません。 fopen()とfwrite()を併用する

私は以下のコードを持っています。

<?php 
$tim=time(); 
$ip=$_SERVER['REMOTE_ADDR']; 
$ipadd=$tim."IPaddress".$ip; 

$fp="user_log.txt";// file address 

$myfilea = fopen($fp,"a");//open file 

fwrite($myfilea,$ipadd.PHP_EOL);//add data to file 
echo fread($myfilea,filesize($fp));//read file 
fclose($myfilea);//close file 
?> 

これは私ができることです...「a」モードを使ってテキストを追加することも、「r」モードを使ってテキストを読むこともできます。私は両方を行うことはできません。私は "a +"、 "r +"、 "ar"などを使ってみました。

セットアップ中に何かが恋しいですか?

私はこれをWindows 8.1で実行しています。

ありがとうございました。

+0

なぜ「両方はできない」と思うのですか( 'a +')? –

+0

私は何かできることができるはずですが何らかの理由で私はそれをすることができません。私は+ –

+0

を試しましたあなたのエラーログをチェックしましたか? –

答えて

1

ファイルポインタを巻き戻す必要があります。

$tim = time(); 
$ip = $_SERVER['REMOTE_ADDR']; 
$ipadd = $tim.'IPaddress'.$ip; 

// file address 
$fp = 'user_log.txt'; 

//open file 
$myfilea = fopen($fp, 'a+'); 

//add data to file 
fwrite($myfilea, $ipadd.PHP_EOL); 

// your file pointer is at the end of the file now 
// so rewind before you read 
rewind($myfilea); 

//read file 
echo fread($myfilea, filesize($fp)); 
//close file 
fclose($myfilea); 
+0

おかげで。 rewind()はそれを解決します。 fread()を自動的に呼び出すと、最初からファイルが読み込まれますが、私は基本的にファイルの終わりから読んでいた。ありがとうございます。 –

+0

$ myfilea = fopen( "$ fp、 'a +')の" + ";また必要でした。 私は$ tim = date( "Ymdis")をお勧めします。年の月の分秒の文字列を取得します。私はこれをログに使っています。 –

+0

実際、 "a +"がなければ、[fopenのドキュメント](http://php.net/manual/en/function.fopen.php)に従ってファイルを読むことはできません。 – WEBjuju

0

file_put_contents

file_put_contents =文字列をファイルに書き込む

$fp="user_log.txt"; 
$tim=time(); 
$ip=$_SERVER['REMOTE_ADDR']; 
$ipadd=$tim."IPaddress".$ip; 
$myfile = file_put_contents($fp, $ipadd.PHP_EOL , FILE_APPEND | LOCK_EX); 

そして、あなたのコードのために使用し、このコードを試してみてくださいこれをしようと、それは

ファイルを開いたりしないようにできるようチェックします
fopen("logs.txt", "a") or die("Unable to open file!"); 
+0

ご返信ありがとうございます。これは私がやろうとしていたことです。しかし、私はまだ何が起こっているのか知りたかった。 –

+0

'file_put_contents'を使用した場合、なぜ' file_get_contents'を使用しませんか? – WEBjuju

関連する問題