1

我已经配置了一个新的 FPM 池(www.conf中的配置文件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。问题是所有这些扩展一旦配置似乎对所有池都通用......

我还尝试在全局范围内禁用 mysql 扩展,phpdismod然后在其中附加一行www.conf

php_admin_value[extension] = mysqli.so

这似乎不起作用(上面没有为该池启用 mysqli)

4

1 回答 1

2

您不能为每个池加载不同的扩展名,扩展名是在.ini文件中定义的,由主进程加载。php-fpm主进程分叉成子进程,这意味着它们共享主进程加载的内容。你不能让孩子在分叉后加载不同的扩展集,或者卸载它们。开发解决方案可能是可能的,但实际上没有必要看到您可以通过不同的方法解决您的问题。

为了实现您的目标,只需在不同的端口/unix 套接字上设置完全不同的 php-fpm 进程并加载您需要的扩展,设置您的池即可。它实际上比听起来要少得多,它可能不会花费你超过几分钟。

于 2017-10-05T12:20:17.040 回答