13

次のコマンドを指定します。

/usr/bin/php -c /path/to/custom/php.ini /path/to/script.php

内部オプションを取得したい:

-c /path/to/custom/php.ini

私が試したことはうまくいきません:

  • $argv含む['/path/to/script.php']
  • getopt('c')含む[]
  • $_ENVそれを含まない
  • $_SERVER それを含まない

PHP_*定数 ( など)も探しましたPHP_BINARYが、これらの引数の定数が見つかりません。

これらの引数を取得する方法はありますか? ロードされたiniファイルを取得しようとしているのではなく、ここに存在する可能性のある引数を取得しようとしていることに注意してください。

4

4 に答える 4

3

PHP にはこれを行う内部的な方法がないため、特定のシステム情報とパーミッションに依存する必要があります。

$pid = getmypid();
$ps = `ps aux | grep $pid`;
$command = substr($ps, strpos($ps, '/usr/bin/php'));
$args = explode(' ', $command); //not pretty, should probably use preg
于 2013-03-21T22:03:30.293 に答える
2

-c /path/to/custom/php.iniスクリプトを開始する前に、PHPパーサー、インタープリター、およびその他の内部的なものに渡されるオプションです。

/path/to/script.php PHP実行可能ファイルだけでなく、スクリプトにも渡される実際の引数です。

次のような引数/usr/bin/php -c /path/to/custom/php.ini /path/to/script.php A B Cもスクリプトに渡されます。

残念ながら、-cオプションはそれらの1つではありません。

php.iniを使用して、実行されたPHPスクリプト内で使用済みファイルを取得できますget_cfg_var

echo get_cfg_var('cfg_file_path');

オプションを渡す場合は-c、php.iniファイルへのパスを取得します。それ以外の場合は、デフォルトのphp.iniファイルを取得します。

于 2013-03-21T21:47:49.153 に答える
0

残念ながら、コマンド ライン BASH 引数の解析方法が原因で、スクリプト呼び出しの前に引数にアクセスすることはできません。現在、プログラム/usr/bin/phpには

argv[0]=/usr/bin/php
argv[1]=-c
argv[2]=/path/to/custom/php.ini
argv[3]=/path/to/script.php

そして、それがあなたの議論が着陸するところです。一方、スクリプトには次のものがあります。

argv[0]=/path/to/script.php

引数が右から左に処理され、スクリプト呼び出しの後に引数がないという理由だけで。

于 2013-03-21T22:00:09.627 に答える
0

解析を必要としないため、次のように使用します。

$ (ARGS="-c /path/to/custom/php.ini"; /usr/bin/php $ARGS /path/to/script.php $ARGS)
于 2013-03-21T22:47:34.203 に答える