2012-02-26 12 views
0

私はPHPとbashスクリプトを含むプロジェクトを持っています。bashとphpの設定ファイル

すべてのユーザー設定をファイル "settings.conf"に委託したいと考えています。したがって、このファイルにはbash変数とphp変数が含まれている必要があります。

しかし、bashはphpコードが非常に刺激的で、phpがbashコードに対応できないことがわかります。

私のPHPスクリプトがファイルのPHP部分だけを処理し、bashがbash部分だけを気にしていることを確認するベストプラクティスは何でしょうか?

設定ファイルは、この

### Settings-File 

## php-settings 
<$php 
    $language = "en"; 
    $url   = "http://foo.bar"; 
    $copyright = "Copyleft License"; 
?> 
## end php-settings 

## bash-settings 
    pathToCertainFile="/home/johndo/files/certainFile" 
## end bash-settings 

## EOF 
+0

PHPは 'system( 'command-here');'コマンドでbashスクリプトを実行でき、シェルは 'php command-here'コマンドでPHPを実行できます。設定については? .htaccessファイルでカスタムのPHP関連の設定(php.iniを上書き)を設定することができます。また、PHPとbashスクリプトの両方で任意の内容の.htaccessファイルを生成することができます。役に立った? – ionFish

+0

あなたのコメントをありがとうが、これは私が欲しいものではないと思う。あなたは私の質問が正確でないことを知りますか?現時点では、各スクリプトの初めに( '$ pathToCertainFile'や' $ language'のように)いくつかの変数があります。これらの設定は、自分のスクリプトのユーザーが編集する必要があります。しかし、私はすべての設定変数を1つのファイルに委託したい。 – speendo

+2

ベストプラクティスは、2つの言語(bash、php)で1つのファイルを設定に使用する*ではありません。 –

答えて

2

よりもむしろPHPとBashの両方でネイティブに解析される、単一の設定ファイルを使用してのように見えるかもしれませんが、あなたはあなたのために意味を作る形式で設定を保存する必要があります設定を開き、両方のスクリプトを使用してそのファイルを読み取ります。実行可能である必要はありません。あなたの設定が含まれている必要があります。

settings.conf:それはevalを使用することが一般的に悪い考えだと

#!/usr/local/bin/bash 

eval `egrep '^[a-z]+=("[a-z0-9]+"|[0-9]+)$' settings.conf` 

printf "foo=%s\nbar=%s\nsomeint=%s\n\n" "$foo" "$bar" "$someint" 

注:

foo="this" 
bar="that" 
someint=123 

bashスクリプトは次のようになります。 bashには他の(より良い)ソリューションがあります。私は便宜のためにこれをしました。

そして、PHPスクリプトは次のようになります。

#!/usr/local/bin/php 
<?php 

$fh=fopen("settings.conf", "r"); 
while ($line=fgets($fh, 80)) { 
    if (preg_match('/^[a-z]+=("[a-z0-9]+"|[0-9]+)$/', $line)) { 
    $line_a=explode("=", $line); 
    $conf[$line_a[0]]=$line_a[1]; 
    } 
} 

print_r($conf); 

そして、これらの例は、実際に動作します:

[email protected] $ ./doit 
foo=this 
bar=that 
someint=123 

[email protected] $ ./doit.php 
Array 
(
    [foo] => "this" 
    [bar] => "that" 
    [someint] => 123 
) 
[email protected] $ 
1

speendo、なぜbashを使用して、cronジョブを実行したいですか?あなたの設定をPHP形式で保存し、上のghotiののようなPHPスクリプトを使用してください。 PHPは、シェルとcronのための完全に有効なスクリプト言語です。

関連する問題