PHP изменить файл: файл не изменен, но сообщения об ошибках не выводятся на консоль
Я искал в сети некоторое время, но я действительно не могу найти ничего полезного. Я не могу найти ошибки в своем коде, и я не получаю их в консоли. Я могу открыть свой файл, изменить его строку и не получаю никаких ошибок при записи в него, но файл не изменяется. Что мне не хватает?
$file = $_SERVER['DOCUMENT_ROOT']."/files/wsplaetze.OLD.txt";
$newline = "";
$handle = fopen($file, "r+");
$counter = 0;
if($handle) {
while(($line = fgets($handle)) !== false) {
++$counter;
$parts = explode(' ', $line);
$to_add = $parts[0] . " " . intval($parts[1]) . '\n';
foreach($ws_array as $ws) {
if($parts[0] == $ws) {
$anzahl = intval($parts[1])-1;
$to_add = $parts[0] . " " . $anzahl . '\n';
}
}
$newline .= $to_add;
}
} else {
debug_to_console(error_get_last()."ERROR");
}
debug_to_console("length ".$counter);
debug_to_console($newline);
if(!fwrite($handle, $newline)) {
debug_to_console("Error writing to file: ".$file);
} else {
debug_to_console("Great! Everything is fine! This is the file you wrote to: ".$file);
}
fclose($handle);
Сам файл состоит из идентификаторов и связанных с ним чисел, разделенных пробелами, например:
ab 12
abs 23
skd 12
и т.п.
Что я делаю неправильно? Я действительно не знаю, где искать, поскольку я не получаю ни одного из сообщений об ошибках выше! Я могу прочитать файл (правильно!), Поэтому имя файла, похоже, тоже пишется? Но опять же, ничего не меняется.. Я действительно смущен!
РЕДАКТИРОВАТЬ: Используя помощь в комментариях, код работает сейчас!! Файл должен быть открыт заново! Таким образом, старый контент перезаписывается! Я изменил это на это:
$file = $_SERVER['DOCUMENT_ROOT']."files/wsplaetze.OLD.txt";
$newline = "";
$handle = fopen($file, "r+");
$counter = 0;
if($handle) {
while(($line = fgets($handle)) !== false) {
++$counter;
$parts = explode(' ', $line);
$to_add = $parts[0] . " " . intval($parts[1]) . "\n";
foreach($ws_array as $ws) {
if($parts[0] == $ws) {
$anzahl = intval($parts[1])-1;
$to_add = $parts[0] . " " . $anzahl . "\n";
}
}
$newline .= $to_add;
}
fclose($handle);
} else {
debug_to_console(error_get_last()."ERROR");
}
$filew = fopen($file, "w");
if($filew) {
fwrite($filew, $newline);
}
fclose($filew);
1 ответ
Я предполагаю, что вы уже сохранили контент, который хотите записать в файл, в переменную $content.
$file = $_SERVER['DOCUMENT_ROOT']."/files/wsplaetze.OLD.txt";
// @ prevents errors but allows the function to return true or false
if(@file_put_contents($file, $content, LOCK_EX)){
debug_to_console("Great! Everything is fine! This is the file you wrote to: ".$file);
}else{
debug_to_console("Error writing to file: ".$file);
}