Как перезаписать строку в php файле?

Sankaboy

Постоялец
Регистрация
1 Фев 2012
Сообщения
112
Реакции
3
Привет! Подскажите как перезаписать к примеру строку №3 (считая с нуля) в php-файле. Гуглил, были не которые примеры, но они почему-то не работают.
Или может проще создать файл с нужным текстом, чем перезаписать? Только этого я вовсе в гугле не нашел.:(
 
PHP:
<?php
 
$filename = 'file.txt';
$contents = file_get_contents($filename);
 
if ($contents) {
    $contents = explode("\n", $contents);
   
    if (isset($contents[3])) {
        $contents[3] = 'Перезаписанная строка';
       
        if (is_writable($filename)) {
            if (!$handle = fopen($filename, 'w')) {
                echo "Не могу открыть файл ($filename)";
                exit;
            }
                   
            if (fwrite($handle, implode("\n", $contents)) === FALSE) {
                echo "Не могу произвести запись в файл ($filename)";
                exit;
            }
           
            fclose($handle);
           
           
        } else {
            echo "Файл недоступен для записи";
            exit;
        }
    } else {
        echo "Строка не найдена";
        exit;
    }
 
} else {
    echo "Файл пуст";
    exit;
}

Можно вот так вот...
 
PHP файлы для компилятора являются исполнительными файлами. При попытке открыть такой файл в большинстве случаев Вы получите не тело файла, а результат выполнения скрипта. Соответственно, лучше хранить файл, который регулярно нужно перезаписывать, под другим расширением(как резервную копию), и уже на основании этого файла генерировать нужное содержание. Есть и другой вариант, который заключается в кучах настроек сервера и прав доступа к папкам. Но при выполнении тривиальных задач второй вариант себя не оправдывает.

P.S. Еще этот вопрос можно решить, если есть возможность выполнять в PHP скрипте команды системы(командной строки). Но это опять же сводится к настройкам сервера.
 
Viodele, php-файл - это текстовый файл, с ним можно работать как с любым текстовым файлом, я в примере указал file.txt, но можно аналогично file.php редактировать, в имени файла разницы нет.
 
PHP:
<?php
 
$filename = 'file.txt';
$contents = file_get_contents($filename);
 
if ($contents) {
    $contents = explode("\n", $contents);
 
    if (isset($contents[3])) {
        $contents[3] = 'Перезаписанная строка';
 
        if (is_writable($filename)) {
            if (!$handle = fopen($filename, 'w')) {
                echo "Не могу открыть файл ($filename)";
                exit;
            }
           
            if (fwrite($handle, implode("\n", $contents)) === FALSE) {
                echo "Не могу произвести запись в файл ($filename)";
                exit;
            }
    fclose($handle);
   
   
        } else {
            echo "Файл недоступен для записи";
            exit;
        }
    } else {
        echo "Строка не найдена";
        exit;
    }
 
} else {
    echo "Файл пуст";
    exit;
}
Спасибо! php файл перезаписало. Правда не знаю как такое редактирование повлияет на дальнейшую работу php файла.
 
Если перезаписано без ошибок, то работать должно нормально. Могут только возникнуть проблемы с chmod и chown. Но это тоже все можно настроить в скрипте. А если есть возможность использовать system, exec и passthru, так это вообще хорошо.
 
Если перезаписано без ошибок, то работать должно нормально. Могут только возникнуть проблемы с chmod и chown. Но это тоже все можно настроить в скрипте. А если есть возможность использовать system, exec и passthru, так это вообще хорошо.
Где можно ошибки посмотреть? Кодировка осталась прежняя. Файл запускается.
 
Если запускается, значит ошибки отсутствуют.
 
Назад
Сверху