関数のようなphpで.confファイルを解析する特別な関数はありますparse_ini_file()
か? そうでない場合、どうすればそれを達成できますか?ありがとう!
編集 :
Conf は httpd.conf(Apache) のようなものです。(httpd.confファイルを読み込んで編集したい)
関数のようなphpで.confファイルを解析する特別な関数はありますparse_ini_file()
か? そうでない場合、どうすればそれを達成できますか?ありがとう!
編集 :
Conf は httpd.conf(Apache) のようなものです。(httpd.confファイルを読み込んで編集したい)
いいえ、httpd.conf を解析するための特別な関数はありませんが、パーサーは簡単に作成できるはずです。たとえば、 のようにキーと値の設定のみに関心がある場合は、次のようServerRoot /var/www
にします。
<?php
define('HTTPD_CONF', '/tmp/httpd.conf');
$lines = file(HTTPD_CONF);
$config = array();
foreach ($lines as $l) {
preg_match("/^(?P<key>\w+)\s+(?P<value>.*)/", $l, $matches);
if (isset($matches['key'])) {
$config[$matches['key']] = $matches['value'];
}
}
var_dump($config);
およびその他のブロックを解析する場合は<Directory ...>
、さらに数行のコードが必要になりますが、それほど負担にはなりません。それは本当にあなたが何をしたいかによって異なります。$_SERVER
とから多くの情報を取得できるため、構成getenv()
ファイルを解析する必要がない場合があります。
編集
更新に応じて、httpd.conf を編集するには、スクリプトをスーパーユーザー権限で実行し、httpd.conf をリロードする必要があります (例: system("apachectl graceful");
)。
むしろ、.conf ファイルの意味に依存します。タグは、Apache httpd.conf ファイルを意味することを意味しますか? その場合、答えは「いいえ」であると確信していますが、それをどうしたいかによって異なります。
Apache .conf ファイルを解析する一般的なケースは、非常にトリッキーな問題です。<Location>、<Directory>、<VirtualHost> などのブロックはすべて、特定の要求に対するサーバー構成の変更方法を変更できます。最も重要なことは、モジュールが有効になっている場合に追加の構成を追加する <IfModule> ブロックを理解できる必要があることです (したがって、その特定のモジュールが Apache プロセスにロードされているかどうかを判断できる必要があります)。これがすべて完了したら、Include ディレクティブを使用してロードされた追加の構成ファイルを確認する必要があります。軟膏の最後のハエは、独自の構成設定を定義する可能性のある追加のモジュールから発生します。コードは、理解できない構成設定を適切に処理する必要があります。
問題を制限すれば、問題はより簡単になります。サーバー構成を知っていますか (そして制御していますか?) もしそうなら、どのモジュールが読み込まれているか、どのファイルが参照されているか、特別な構造を含めたかどうかがわかります。問題を別の方法で制限できる場合があります。特定の設定が必要なだけで、その設定は一度しか定義されない傾向がありますか? その場合は、その文字列を検索するだけです。
最後に、データを書き込むための前置きとして Apache 構成ファイルを解析しようとしている場合は、これに対して注意する必要があります。Web アプリケーションがサーバー構成を変更できるようにすると、以前はなかったさまざまなセキュリティ脆弱性にさらされることになります。前に利用可能です。
もちろん、Apache .conf ファイルについてまったく話していない場合、質問への回答は難しくなります。カスタム アプリケーション用に独自の構成ファイル形式を定義している場合は、好きなように定義できます。