2013-03-08 14 views
6

Mam wyszukiwane i wyszukiwane i przeprowadziłem obszerne debugowanie i dla mojego życia nie mogę zrozumieć, dlaczego fputcsv nie działa dla mnie.fputcsv w PHP nie zapisuje do pliku

Mogę pomyślnie otworzyć plik .csv i napisać do niego.

Moje debugowanie dowodzi, że tablica jest poprawnie załadowana i że pętla foreach działa poprawnie. Jednak funkcja fputcsv nie zapisuje niczego w ogóle. Usunąłem wszystkie ciągi znaków, które jednak mogą powodować problemy, takie jak adresy URL itp., Ale nadal nie zostaną zapisane.

Jestem jedyną osobą mającą dostęp do tego środowiska, więc wiem, że nie jest to konflikt blokady plików. Mogę utworzyć plik i napisać do niego, więc wiem, że to nie jest problem z uprawnieniami. I otrzymuję dane wyjściowe debugowania z pętli foreach, więc wiem, że nie jest to problem z tablicą lub pętlą.

będę zapewnić mój kod i dziennik debugowania poniżej ...

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

A oto powstały log Debug ...

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. 

Wszystko, co pojawia się w pliku csv jest (jak widać w powyższym kodzie debugowania) "Ten plik jest otwarty i działa."

Wszelkie myśli, które ktoś może mieć, zostaną docenione!

Dziękuję bardzo !!!

podróży

+0

Powinieneś logować wartości zwracane przez wywołanie fputcsv. zwróci liczbę bajtów zapisanych, jeśli się powiedzie, boolean false w przeciwnym wypadku. ponieważ w ogóle nie otrzymujesz kodu odpowiedzi, prawdopodobnie jest to fałsz logiczny na końcu pętli, który zazwyczaj nie nadaje się do drukowania. –

Odpowiedz

5

Drugi argument fputcsv() powinien być tablicą, ale są przechodzącą w ciąg, ponieważ jesteś zapętlenie tablicę ciągów i pisać każdy indywidualnie.

Podejrzewam chcesz po prostu to:

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

Jeśli chcesz pisać nagłówki kolumn, a także, co chyba to polubisz ponieważ używasz tablicę asocjacyjną, prawdopodobnie chcesz jakąś logikę więcej tak:

$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

Ahhhh, to było to! Jesteś piękny! Dziękuję bardzo i życzę udanego weekendu! - Trip – user2149399

+3

Nie akceptuj odpowiedzi! On nie potrzebuje przedstawiciela! Po prostu robi to, aby pomóc ludziom! – rdlowrey

+0

LOL! Dziękuję wszystkim! – user2149399

Powiązane problemy