我已在www.conf
中配置了一个新的FPM池(配置文件pool.d
),现在让我们说我想禁用该特定池的mysql支持?或者有可能不加载该池的扩展名?
我使用的是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
中找到。问题是所有这些扩展一旦配置似乎对所有池都是通用的......
我还尝试使用phpdismod
全局禁用mysql扩展,然后在www.conf
中附加一行:
php_admin_value[extension] = mysqli.so
哪个似乎不起作用(上面没有为该池启用mysqli)
答案 0 :(得分:0)
您无法为每个池加载不同的扩展名,扩展名在.ini
文件中定义,由主进程加载。 php-fpm
主进程分叉进入子进程,这意味着它们共享主进程加载的内容。在分叉或卸载它们之后,您无法让孩子加载不同的扩展集。可能有可能开发出一种解决方案,但实际上并不需要通过不同的方法来解决您的问题。
为了实现您的目标,只需在不同的端口/ unix套接字上设置完全不同的php-fpm进程并加载您需要的扩展程序,设置您的池并完成。它实际上比听起来要少得多,它可能不会花费你几分钟。