web-dev-qa-db-ja.com

php.iniファイルを別のphp.iniファイルに含めるにはどうすればよいですか?

Php.iniファイルを別のphp.iniファイルに含めるにはどうすればよいですか?

31

メインのphp.iniファイルから.iniファイルを「含める」ことはできないと思います。

ただし、考えられる解決策の1つは、PHPをコンパイルするときに、configure行でこのオプションを使用することです。

--with-config-file-scan-dir=PATH                                                        
    Set the path where to scan for configuration files

このオプションがコンパイル時に使用される場合、PHPは、「通常の」php.iniファイルに加えて、このディレクトリ内のすべての.iniファイルを検索します。

これはUbuntuで使用されているものだと思います。たとえば、php.iniを変更するのではなく、ダウンロードした拡張機能ごとに異なる.iniファイルを使用します。

このオプションで定義されているphp.iniファイルへのパスは、configure行にあります:

--with-config-file-path=PATH                                                            
    Set the path in which to look for php.ini [PREFIX/lib]

それでも、おそらくPHP-これはそれほど難しくありません-必要な依存関係を取得するのが最も難しい部分です)を再コンパイルする必要があることを意味します。

そして、これは私と同じことを言っているinternals @ mailling-listの投稿です: config files and PHP_CONFIG_FILE_SCAN_DIR

23
Pascal MARTIN

私はphpにmemcachedをインストールしましたが、そのiniがphp.iniに含まれていることを確認する方法がわかりませんでしたが、実際には自動的に含まれています。 php --iniを実行すると、何がロードされているかを検証できます。

php --ini
Configuration File (php.ini) Path: /opt/local/etc/php5
Loaded Configuration File:         (none)
Scan for additional .ini files in: /opt/local/var/db/php5
Additional .ini files parsed:      /opt/local/var/db/php5/memcached.ini
8
hockey_dave

~/.bashrcでパスを定義することもできます

export PHP_INI_SCAN_DIR=/usr/local/lib/php.d
8
Martin Zeitler

あるiniファイルを別のiniファイルに含めることができないため、参照されてロードされるようです。しかし、どのフォルダーを調べるかを指示することで、複数のファイルをロードするようにphpを設定できます。

FastCGIセットアップを使用している場合(おそらくFPMでも、確かにわかりません)、phpラッパー内から環境変数をエクスポートできます。

そこでできること:

_export PHP_INI_SCAN_DIR=/etc/php5/cgi/conf.d:/var/www/mydomain.net/etc
_

_/var/www/mydomain.net/etc_は単なる例であり、追加のiniファイルを配置するフォルダーです。これは_:_で区切られたリストである可能性があります。

_phpinfo.php_(<?php phpinfo();のみを任意に含むファイル)を使用して、ブラウザで対応するURLを開き、解析されるディレクトリのリストと上部にロードされるファイルのリストを確認しますそれの。

_/etc/php5/cgi/conf.d_は常に含める必要があり(php実行可能ファイルにコンパイルされたためと思います)、おそらく実際には必要ありません。

3
sjas

実はYOU CAN。 PHP-FPMを使ってDebian 9でテストしたところです。いくつかの.ini/.confファイルから、次の構文を使用します。

include=/path/to/special-php.ini

あるいは

include=/path/to/special-dir-full-of-conf-files/*.conf 

それが使用されているように

/etc/php/7.0/fpm/php-fpm.conf
include=/etc/php/7.0/fpm/pool.d/*.conf

ちなみに、これは、設定をトピックごとに分割する場合、または開発用のセットと本番用のセットが必要な場合に最も役立ちます。次に、Debian/Apacheスタイルを次のように実行できます。

/etc/php/conf-available/
/etc/php/conf-enabled/

2番目からもう1つへのsymliksとその1つへのインクルード。

2
ondelettes

できません。オンラインページを読む:

構成ファイル

概要:構成ファイル(php.ini)は、PHPの起動時に読み取られます。サーバーモジュールバージョンのPHPの場合、これはWebサーバーの起動時に一度だけ発生します。CGIおよびCLIの場合バージョン、それはすべての呼び出しで発生します。

。user.iniファイル

概要:メインのphp.iniファイルに加えて、PHPスキャンしてINIファイルをスキャンし、要求されたPHPファイル、現在のドキュメントルート($ _SERVER ['DOCUMENT_ROOT']で設定)までの作業。INI PHP_INI_PERDIRおよびPHP_INI_USERモードの設定のみ.user.ini-style INIファイルで認識されます。

1
adatapost

ini_set 関数を使用してシミュレーションを試みることができます。しかし、「manページ」が示すように、iniオプションをすべてini_setを使用して変更できるわけではありません。ただし、これは間違いなく便利な機能です。

0
Stephen