Как я могу редактировать файл PHP из другого файла, например, из файла Wordpress install.php - PullRequest
0 голосов
/ 09 февраля 2012

Я пытаюсь создать сценарий установки для моей CMS, но я не знаю, как ...

Я хочу, чтобы мой скрипт установил $var в config.php на введенное значение.

Как:

<?php
$file = config.php
$file_handle = fopen($file, "rw");

fwrite($file_handle, "$settings1 = ".$_POST['settings1']);

fclose($file_handle);
?>

Это работа или я использую дурной путь? Потому что я попробовал, и это не работает ...

Ответы [ 4 ]

2 голосов
/ 09 февраля 2012

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

Еслиэто ваша собственная cms, и вы создаете систему, я бы выбрал конфигурацию массива, такую ​​как $ settings ['key'] = $ value;или вы также можете создавать ini-файлы и использовать встроенные функции php для анализа, а затем перезаписи данных.

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

Пример

Вот пример использования для компонента Zend Framework Zend_Config_Writer: (http://zendframework.com/manual/en/zend.config.writer.introduction.html)

$config = new Zend_Config_Ini('config.ini',
                          null,
                          array('skipExtends'        => true,
                                'allowModifications' => true));

// Modify a value
$config->production->hostname = 'foobar';

// Write the config file
$writer = new Zend_Config_Writer_Ini(array('config'   => $config,
                                       'filename' => 'config.ini'));
$writer->write();

У них есть компоненты для ini, xml, yaml и nativephp-массивы. Было бы целесообразно либо включить его в ваши cms, либо исследовать методы, которые они используют для этого.

Надеюсь, это поможет,

Jay

0 голосов
/ 09 февраля 2012

Я рекомендую вам использовать .ini файлы для конфигурации. Их чрезвычайно легко читать (посмотрите, например, parse_ini_file () ). Написание их немного сложнее, но я все еще думаю, что это проще, чем то, что вы пытаетесь сделать.

Также вы можете использовать JSON-файл с json_encode () и json_decode () для таких же целей, поскольку для них вы закончили функции для чтения и записи таких файлов.

0 голосов
/ 09 февраля 2012

Быстро и грязно.
Файл, который нужно отредактировать:

$i_am_a_var = [I AM A PLACE HOLDER NUMBER 4];

Вот скрипт установки:

$c=file_get_content('file_to_edit.php');
$c=str_replace('[I AM A PLACE HOLDER NUMBER 4]',"'zimbabue the new value'",$c);
file_put_content('file_to_edit.php',$c);
0 голосов
/ 09 февраля 2012
file_put_contents('/path/to/config.php', "$settings1 = ".clean($_POST['settings1']), FILE_APPEND | LOCK_EX);

И знать о разрешении.

...