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);
}
Другие вопросы по тегам