Запись в файл PHP с использованием кода PHP? - PullRequest
2 голосов
/ 05 декабря 2011

Можно ли написать обычный файл PHP, используя сам язык PHP?
Это то же самое, что написать файл .txt?
Или я должен знать что-то еще?

Каждый раз, когда я сохраняю запись в базе данных, я хочу перезаписать один и тот же файл myConfig.php, и он должен содержать что-то вроде этого:

<?php

     $myVar = "myValue";

?>

Ответы [ 2 ]

12 голосов
/ 05 декабря 2011

Написание php файлов ничем не отличается от написания других текстовых файлов. Один из способов сделать это - file_put_contents(). Что-то вроде этого должно работать:

file_put_contents('myConfig.php', "<?php

    \$myVar = \"myValue\";

?>");

Вы должны будете убедиться, что у пользователя, который запускает php, есть права на запись файла в данный каталог. Это распространенная ошибка. Проверьте журналы ошибок на наличие ошибок разрешений, если они не работают.

Кстати, динамическое написание php-кода на основе загрузки данных из базы данных может привести к уязвимостям безопасности. В частности, это может позволить злоумышленнику ввести произвольный код php в вашу систему и выполнить его. Это особенно верно, если данные в базе данных поступают из веб-форм, которые заполняют пользователи. Будь очень осторожен. Проверяйте, очищайте и правильно кодируйте все ваши динамические значения. Лучше всего сделать шаг назад и пересмотреть свой дизайн. Вам действительно нужно динамически записывать эти файлы конфигурации как файлы php? Можете ли вы использовать вместо этого INI-файлы? (подсказка: parse_ini_file()). Или вы можете просто использовать значения конфигурации из базы данных напрямую, без записи файла?

2 голосов
/ 05 декабря 2011

Если ваши права правильные, это должно хорошо работать:

<?php
file_put_contents('selfwrite2.php',<<<END
<?php echo "Hello World!";
END
);
include 'selfwrite2.php';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...