2013-03-08 25 views
6

私は検索して検索して広範なデバッグを行いました。私の人生はなぜfputcsvが私にとってうまくいかないのか理解できません。PHPのfputcsvはファイルに書き込まない

.csvファイルを正常に開いて書き込みできます。

私のデバッグでは、配列が正しくロードされ、foreachループが正しく動作していることがわかります。しかし、fputcsv関数は何も書き込めません。 URLなどの問題を引き起こす可能性があるすべての文字列を削除しましたが、まだ書き込まれません。

私はこの環境にアクセスできる唯一の人です。そのため、ファイルロックの競合ではありません。私はファイルを作成してそれに書き込むことができるので、アクセス権の問題ではないことが分かります。そして、foreachループからデバッグ出力を得るので、配列やループの問題ではないことが分かります。

私は私のコードと下記のデバッグログを提供します...

$posts_meta = array(
    'twitter_title'  => $this_title, 
    'twitter_brandtag' => $this_brandtag, 
    'twitter_hashtags' => $this_hashtags, 
    'twitter_iterations' => $this_iteration, 
    'twitter_timing'  => $this_timing, 
    'twitter_time'  => $this_time, 
    'twitter_id'   => $post_id, 
); 

// Debuging 
file_put_contents("/blog/debug.txt", "About to write CSV file.\n", FILE_APPEND); 
file_put_contents("/blog/debug.txt", print_r($posts_meta, true)."\n", FILE_APPEND); 

$myfile = fopen('/blog/pdm_twitter_ouptut.csv', 'a+'); 

// More debugin 
file_put_contents("/blog/debug.txt", "myfile handle = ".$myfile."\n", FILE_APPEND); 
fwrite($myfile, "This file is open and working.\r\n"); 

foreach ($posts_meta as $fields){ 
    $fresponse = fputcsv($myfile, $fields); 

    // A little more debugging... 
    file_put_contents("/blog/debug.txt", $fields."\n", FILE_APPEND); 
} 

fclose($myfile); 

// And more debugging 
file_put_contents("/blog/debug.txt", "fputcsv response = ".$fresponse."\n", FILE_APPEND); 
file_put_contents("/blog/debug.txt", "Just closed CSV file.", FILE_APPEND); 

そして、ここでは、結果のデバッグログです...

About to write CSV file. 
Array 
(
    [twitter_title] => World Stocks Up As US Jobs, China Exports Improve 
    [twitter_brandtag] => - FP test 9 
    [twitter_hashtags] => #Economy #Markets #Business #Investing #Stocks 
    [twitter_iterations] => 12 
    [twitter_timing] => 240 
    [twitter_time] => 2013-03-08 07:55:24 
    [twitter_id] => 11051 
) 

myfile handle = Resource id #548 

// Print-out of $fields here... 
World Stocks Up As US Jobs, China Exports Improve 
- FP test 9 
#Economy #Markets #Business #Investing #Stocks 
12 
240 
2013-03-08 07:55:24 
11051 

fputcsv response =  // Hm!? I wonder why no response code? 
Just closed CSV file. 

.csvファイルに表示されるすべてがあります(上記のデバッグコードで見られるように) "このファイルは開いていて動作しています。"

誰もが持っている可能性があります大変感謝します!

ありがとうございます!

トリップ

+0

fputcsv呼び出しの戻り値を記録する必要があります。それが成功した場合は書き込まれたバイト数を返し、そうでない場合はfalseを返します。応答コードはまったく得られないので、ループの終わりにはおそらくブール値falseであり、通常は印刷不可能です。 –

答えて

5

fputcsv()の2番目の引数は配列でなければなりませんが、あなたは文字列の配列をループして、個別に各1を書いているので、あなたは、文字列で渡しています。

$myfile = fopen('/blog/pdm_twitter_ouptut.csv', 'a+'); 
fputcsv($myfile, $posts_meta); 

あなたが連想配列を使用しているので、私はあなたがかもしれない推測され、同様に列ヘッダを書きたい場合、あなたはおそらくもっとこのようないくつかのロジックをしたい:

私はあなただけでこれが欲しい疑います:

$filePath = '/blog/pdm_twitter_ouptut.csv'; 

$exists = file_exists($filePath) && filesize($filePath) > 0; 

$myfile = fopen($filePath, 'a+'); 

if (!$exists) { 
    fputcsv($myfile, array_keys($posts_meta)); 
} 

fputcsv($myfile, $posts_meta); 
+0

ああ、そうだった!あなたは美しいです!本当にありがとう、素晴らしい週末を過ごす! - 旅行 – user2149399

+3

答えを受け入れないでください!彼は担当者を必要としません!彼はちょうど人々を助けるためにこれを行います! – rdlowrey

+0

LOL!みんなありがとう! – user2149399

関連する問題