PHP написать во включенный файл - PullRequest
0 голосов
/ 02 апреля 2012

Мне нужно включить один файл PHP и выполнить из него функцию.После выполнения, в конце PHP-скрипта я хочу что-то добавить к нему.

Но я не могу открыть файл.Можно закрыть включенный файл / что-нибудь подобное, чтобы я мог добавить информацию в файл PHP.

include 'something.php';
echo $somethingFromIncludedFile;

//Few hundred lines later

$fh = fopen('something.php', 'a') or die('Unable to open file');
$log = "\n".'$usr[\''.$key.'\'] = \''.$val.'\';';
fwrite($fh, $log);
fclose($fh);

Как этого добиться?

Ответы [ 3 ]

5 голосов
/ 02 апреля 2012

Как правило, вы никогда не должны изменять свой код PHP, используя сам PHP.Это плохая практика, прежде всего с точки зрения безопасности.Я уверен, что вы можете достичь того, что вам нужно другим способом.

0 голосов
/ 02 апреля 2012

Как говорит Алекс, самоизменяющийся код очень, ОЧЕНЬ опасен. И НЕ отделять данные от кода просто глупо. Помимо этих двух предупреждений, факт, что массивы PHP относительно медленны и плохо масштабируются (так что вы можете file_put_contents ('data.ser', serialize ($ usr)) / $ usr = unserialize (file_get_contents ('data). ser ')) но это будет работать только для небольшого количества пользователей).

Тогда у вас возникла проблема с использованием обычных файлов для хранения данных в многопользовательском контексте - это возможно, но вам необходимо создать сложное управление очередью блокировок. Это обычно влечет за собой использование демона для управления очередью / мьютексом и всегда требует больше усилий, чем стоит.

Использование базы данных для хранения данных.

0 голосов
/ 02 апреля 2012

Как вы уже знаете, эта попытка не одна из хороших. Если вы ДЕЙСТВИТЕЛЬНО хотите включить свой файл, а затем добавить к нему что-то, вы можете сделать это следующим образом.
Помните, что с помощью eval (); рискованно, если вы не можете быть на 100% уверены, что содержимое файла не содержит вредоносного кода.

//  This part is a replacement for you include
$fileContent = file_get_contents("something.php");
eval($fileContent);
//  your echo goes here

//  billion lines of code ;)

//  file append mechanics
$fp = fopen("something.php", "a") or die ("Unexpected file open error!");
fputs($fp, "\n".'$usr[\''.$key.'\'] = \''.$val.'\';');
fclose($fp);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...