ホームページ > バックエンド開発 > PHPチュートリアル > PHP プログラム構成ファイル (ベスト?) プラクティス

PHP プログラム構成ファイル (ベスト?) プラクティス

WBOY
リリース: 2016-06-23 13:19:16
オリジナル
1163 人が閲覧しました

最も独創的な方法

php プログラムを作成するとき、データベースとキャッシュされた接続情報は config.php ファイルに直接配置されます。これには 2 つの欠点があります。 1. 開発中およびデバッグ中に、まず接続情報をローカル接続に変更し、次にコードを送信するときに接続情報をリモート接続に戻す必要があります。これは面倒で、見落としがちです。 2. 開発者はオンライン データベースの接続アドレス、アカウント番号、パスワードを直接見ることができますが、これは安全ではありません。

http://leo108.com/pid-2184.asp

どうすればいいですか?

PHP プログラムをオンラインで実行する場合、通常、Apache や nginx などの HTTP サーバーが必要です。 nginx を例に挙げると、設定ファイルで fastcgi_param 命令を渡して PHP leo108 のブログに変数を渡すことができます

fastcgi_param  DB_HOST  "192.168.1.1";
ログイン後にコピー

このようにして、PHP コード内の $_SERVER['DB_HOST'] を通じて対応する値を取得できます。 PHP

そのため、開発環境とオンライン環境がnginxで構築されていれば、コードを変更することなくプログラムを実行することができます。

構成

さらに進むと、

PHP

fastcgi_param  CODE_ENV  "production";
ログイン後にコピー
など、現在の環境を示す変数を渡すことができます

その後、プログラム内で $_SERVER['CODE_ENV'] に基づいていくつかの異なるロジックを実行できます (たとえば、 、開発環境ではすべてのエラー メッセージが表示されますが、オンライン環境では表示されません)

設定

これは完璧ですか?

いいえ、実際のアプリケーションでは次の 2 つの問題が見つかります: 1. この PHP プログラムが Web サービスを提供するだけでなく、cli ツール (データベース アップグレード スクリプトなど) も提供する場合、nginx によって渡される変数を nginx で渡すことができなくなります。この時。 。 2. 配列変数の受け渡しはサポートされていないようです。 http://leo108.com/pid-2184.asp

解決策のアイデア

Web と cli の両方をサポートするには、nginx 設定を介して変数を渡すことができなくなりました。PHP 独自の設定を使用できますか?

leo108 のブログ

そこで、php.ini の最後に次の設定を追加しました:

http://leo108.com/pid-2184.asp

[userconf]userconf.db_host=127.0.0.1userconf.db_name=test
ログイン後にコピー

php-fpm を再起動した後、ini_get( 'userconf.db_host ') 取得されたデータは空だったので、PHP ドキュメントを詳細に確認したところ、カスタム構成項目は get_cfg_var() 関数を通じて取得する必要があることがわかりました。テスト後、Web モードおよび CLI モードでは、get_cfg_var(‘userconf.db_host’) を通じて正しい値を取得できます。

構成

再最適化

ただし、この解決策にもまだ欠点があります: 1. 構成を変更するには、php-fpm を再起動する必要があります。 2. php.ini は配列データをサポートしていますが、まだ十分な柔軟性がありません。PHP で直接設定するのが最善です。

設定

したがって、php.ini には設定ディレクトリへのパスのみを設定できます。各プログラムの設定ファイルは、まず php.ini からこのディレクトリへのパスを取得します。このディレクトリからphp形式の設定ファイルを読み込みます。サンプルコード: 設定

$path = get_cfg_var('userconf.dir');$conf = include($path . '/test.php');
ログイン後にコピー

このようにすると、設定ファイルはアクセスされるたびに再読み込みされ、変更時に php-fpm を再起動する必要がなく、異なるサイトが 1 つのサーバー上に共存できます。別の構成ファイル名を選択してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート