2017-10-03 12 views
0

新しいFPMプール(設定ファイルwww.confpool.dに設定)を設定しましたが、その特定のプールに対してmysqlサポートを無効にしたいとします。または、そのプールの拡張機能をロードする方法がでない場合は、ですか?php-fpm:特定のプールのPHP拡張機能を無効にする

私はDebianの9を使用して、ここでファイル構造は次のようになります方法ですよ:

/etc/php/7.0/fpm$ tree 
. 
├── conf.d 
│ ├── 10-mysqlnd.ini -> /etc/php/7.0/mods-available/mysqlnd.ini 
│ ├── 10-opcache.ini -> /etc/php/7.0/mods-available/opcache.ini 
│ ├── 10-pdo.ini -> /etc/php/7.0/mods-available/pdo.ini 
│ ├── 20-calendar.ini -> /etc/php/7.0/mods-available/calendar.ini 
│ ├── 20-ctype.ini -> /etc/php/7.0/mods-available/ctype.ini.ini 
(...) 
├── php-fpm.conf 
├── php.ini 
└── pool.d 
    ├── forgewww.conf 
    └── www.conf 

extension=thing.soファイルconf.d/<extension>.iniで見つけることができます。ない

php_admin_value[extension] = mysqli.so 

:問題は、私はまた、その後にwww.confに行を追加phpdismodでグローバルにMySQL拡張機能を無効にしようとした

...一度設定されたすべてのこれらの拡張子は、すべてのプールに共通するようです(上記はプールにmysqliを有効にしません)

+0

不可能ではないにしても、無効にすることは困難です。デフォルトのiniでは、それを可能にする 'extension = mysql [something]'という行があります。プールが独自のiniをロードする場合、その行を削除/コメントすることができます。 – Jakumi

+0

ありがとうございますが、拡張機能は少なくともdebianではロードされていないようです。私は他のトリック(私の編集を参照してください)を試みたが、それ以上の成功はありません。 –

+0

拡張子をプール単位で無効にすることはできません。別のソケットを使用して、完全に別々の 'php-fpm'を起動しなければなりません。これにより、必要な拡張機能が有効/無効になります。 – Mjh

答えて

0

プールごとに異なる拡張機能をロードすることはできません。拡張機能はマスタープロセスによってロードされた.iniファイルで定義されています。 php-fpmマスタープロセスが子プロセスにforkします。つまり、マスタープロセスによってロードされたプロセスを共有します。子がフォークしたり、アンロードしたりした後、異なるセットのエクステンションをロードさせることはできません。おそらくソリューションを開発することは可能ですが、実際には異なるアプローチで問題を解決する必要はありません。

あなたが何をしているのかを達成するには、別のポート/ UNIXソケットで全く異なるphp-fpmプロセスを設定し、必要な拡張機能をロードしてプールをセットアップすれば完了です。実際にはそれは聞こえるよりもはるかに少ない仕事です、おそらくあなたに数分以上かかることはありません。

+0

initスクリプトのコピーを追加することを意味します。/etc/init.d/php7.0-fpmも –

+0

です。関係するステップを含めるように展開できますか? – Henno

関連する問題