2012-02-09 5 views
0

私は私のCMSのインストールスクリプトを作成しようとしているが、私は方法がわからない...Wordpressのinstall.phpファイルのように、別のファイルからPHPファイルを編集する方法は?

は、私は私のスクリプトは、入力された値にconfig.php$varを設定します。

同様:

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

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

fclose($file_handle); 
?> 

がこの作品であるか、私は悪い方法を使用していますか?私はそれを試して、それは動作しません...

+0

「動作しない」と定義してください。 – deceze

+3

注射の最悪の可能性に脆弱であることを除けば、これはうまく見えます。しかし、「動作しない」という定義にもう少し作業をしたいかもしれません。私のクリスタルボールが店内にあります。 –

+1

このコード、それは仕事をした場合でも、完全にあなたの1「設定」の行で、元のファイルを上書きし、PHPファイル構文的に無効(負荷に例えば致命的なエラー)を生じるであろう。 –

答えて

2

方法これを行うに変数に設定ファイルを解析し、それを解析してから設定を変更している。ここで

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

は、インストールスクリプトがありますパースされたデータを読み込み、古いファイルを上書きしてファイルに書き戻します。

これは、独自のCMSであり、あなたがシステムを作成している場合、私は$の設定のような配列の設定[「キー」] = $値のいずれかとなるだろう。または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、およびnative php配列用のコンポーネントを持っています。それをあなたのCMSに組み込むか、そうするために使う方法を研究するのが賢明でしょうか。助け

希望、

ジェイ

+0

もう少し説明できますか?このアプローチは私にとって非常に興味深いものです... '$ settings = array(1 =>" value "、2 =>" value2 "など);' ... –

+0

例と詳細を追加しました –

+0

別の関数で書き込む方法はありますか?ファイルは存在する必要がありますか、作成されるのでしょうか? –

0
file_put_contents('/path/to/config.php', "$settings1 = ".clean($_POST['settings1']), FILE_APPEND | LOCK_EX); 

と許可に注意してください。

+0

:D POSTから直接phpファイルにコードを保存しますか? :DDDこれはちょうど素晴らしいアイデアです! – grisevg

+0

私はCHMOD 777の前と755後にする必要がありますか? –

+0

apacheユーザーは、ファイルに対する書き込み権限を持っている必要があります。 – xdazz

0

クイックで汚れています。あなたが編集する必要が
ファイル:

$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

私はあなたの設定のための.iniファイルを使用してお勧めします。彼らは非常に読みやすい(例えばparse_ini_file()を見てください)。それらを書くことはもう少し難しいですが、私はまだあなたがやろうとしているよりも簡単だと思います。

はまた、あなたが読んで、このようなファイルを書き込むための機能を終了した、あまりにも彼らのため以来、このような目的のためにjson_encode()とjson_decode()とJSONファイルを使用することができます。

+0

そして、もし私がそれにコンテンツを書きたいのであれば、PHPでどうですか? –

関連する問題