2010-06-01 2 views
2

Разрабатываю админ-центр, где я могу редактировать файлы конфигурации (написанные на PHP). Я НЕ хочу хранить эти значения в таблице mySQL (по разным причинам). Так сказать, мой config.php имеет содержание, как:Редактирование PHP с помощью PHP (admin center)

<?php 
    $option1 = 1; 
    $option2 = 2; 
    $option4 = 5; 
    $option7 = array('test','a','b',c'); 
    ?> 

Сейчас говорят в одном из администраторов страниц я буду меняться только несколько значений, как option2 или ОПЦИЯ4 и т.д. Любые идеи о том, что было бы лучше пойти об этом.

Я знаю, что один из вариантов - полностью прочитать файл PHP и написать его части с помощью REGEX. Любой способ сделать это более эффективным? Я не хочу, чтобы файл config.php прерывался из-за некоторой ошибки на конце пользователя. Любые идеи о том, как обеспечить, чтобы он работал?

+1

Я бы рекомендовал использовать массив для конфигурации вместо и сохранения/загрузки его с сериализации/десериализации, таким образом вы не должны были бы делать какие-либо синтаксический, ни вы должны использовать базу данных. – Turnor

ответ

2

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

Все, что вам нужно сделать, это загрузить содержимое ini-файла в массив с помощью parse_ini_file, а затем изменить значения в этом массиве и, наконец, перезаписать файл новыми значениями, как описано в this comment.

Для очевидных соображений безопасности рекомендуется размещать эти файлы вне вашего корня документа.

содержание образец ини файла:

[first_section] 
one = 1 
five = 5 
animal = BIRD 

[second_section] 
path = "/usr/local/bin" 
URL = "http://www.example.com/~username" 

образец кода (с помощью функции safefilewrite):

<?php 
$ini_file = '/path/to/file.ini'; 
$ini_array = parse_ini_file($ini_file); 

$ini_array['animal'] = 'CAT'; 

safefilerewrite($file, implode("\r\n", $ini_array)); 
?> 
+0

+1 Для базовых данных конфигурации файлы INI или файлы XML (или JSON-кодированные данные) действительно должны быть достаточными. Хотя вы также можете создать динамический PHP-файл (который всегда перезаписывается), содержащий данные конфигурации, если вы считаете, что синтаксический анализ INI/XML/JSON слишком велик. Много вариантов, все будет работать: p. – wimvds

1

var_export(), вероятно, функция, которую вы ищете.

0

Вы можете записывать/считывать настройки в файл, используя следующий код:

$content = array(); 
//fill your array with settings; 
$fh = fopen ($bashfile, 'w') or die ("can't open file"); 
fwrite ($fh, $content); 
fclose ($fh); 

, чтобы прочитать его использовать: file_get_contents() // это вернет строковое значение ИЛИ построчно :

$lines = file('file.txt'); 
//loop through our array, show HTML source as HTML source; and line numbers too. 
foreach ($lines as $line_num => $line) { 
print "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n"; 
}