2013-06-22 7 views
1

У меня есть сложный код php4 и хотите написать что-то в файл, используя file_put_contents, как показано на следующем:Почему file_put_contents не добавляет данные в файл?

$iCounter = 0; 
foreach blah... 
    ... code 
    file_put_contents("/tmp/debug28364363264936214", "test" . $iCounter++ . "\n", FILE_APPEND); 
    ...code 

Я использую FILE_APPEND для добавления данных в указанный файл, я уверен, что то, что я print не содержит контрольных символов, последовательность случайных чисел гарантирует, что файл не используется в каком-либо другом контексте, а переменная счетчика (используется только для распечатки) используется для управления тем, как часто вызывается file_put_contents.

Выполнение кода и, глядя на содержимое файла я просто вижу

test8 

в то время как я ожидал увидеть

test1 
test2 
test3 
test4 
test5 
test6 
test7 
test8 

Есть ли проблема с моим синтаксисом? Может быть, код не работает для php4? Что еще я могу использовать вместо этого?

P.S. Я работаю над очень большим, довольно древним проектом php4, поэтому нет способа перекодировать проект в php5. Не в 2-х лет ...

+0

Поскольку file_put_contents() ___overwrites___ существующий файл, согласно документации –

+0

Он должен работать .... совершенно какая версия и ОС вы используете? Обратите внимание, что 'file_put_contents' является PHP5, а не PHP4 ??? – Baba

+0

Его 4.4.9-pl0-gentoo на 2.6.30-gentoo-r4. Но если эта функция существует только в PHP5, почему я что-то получаю? Он не должен работать, я бы предположил. – Alex

ответ

2

fopen();file_put_contents() - это php5.

$file = fopen("/tmp/debug28364363264936214", "a+"); 
fwrite($file, "test" . $iCounter++ . "\n"); 
fclose($file); 
0

если вы хотите добавить данные, то выполните следующие действия

$file = "yourfile.txt"; 
$data = file_get_contents($file); 
$data = $data . $newdata; 
file_put_contents($file, $data); 
+0

Но whyn мой код не работает? Или почему это работает на php4? – Alex

+0

ваше право, я не знал о флаге 'FILE_APPEND'. – DevZer0

2

вы можете использовать Foreach это есть входной массив это будет similuar процедуру

for ($iCounter = 1; $iCounter <= 10; $iCounter++) { 

$test_var .= "test" . $iCounter . PHP_EOL; 

} 


if (file_exists("/tmp/debug28364363264936214")) { 

file_put_contents("/tmp/debug28364363264936214", $test_var, FILE_APPEND); 

    echo "The file was written"; 
} else { 
    echo "The file was not written"; 
} 

php4 код

if (file_exists("/tmp/debug28364363264936214")) { 

$fp = fopen('/tmp/debug28364363264936214', 'a'); 
fwrite($fp, $test_var); 
fclose($fp); 

    echo "The file was written"; 
} else { 
    echo "The file was not written"; 
} 

ваш код может быть в PHP4, но он должен работать в php5 php5 при использовании которых у ou должно быть. вам просто нужно перекодировать ошибки.

 Смежные вопросы

  • Нет связанных вопросов^_^