php-fpm : disabling a php extension for a specific pool

标签 php mysql fpm

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

我还尝试使用 phpdismod 全局禁用 mysql 扩展然后在 www.conf 中添加一行与:

php_admin_value[extension] = mysqli.so

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

最佳答案

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

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

关于php-fpm : disabling a php extension for a specific pool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46541767/

相关文章:

基于每个域用户的 PHP 配置在 fastcgi apache 服务器运行时不起作用

php - 'interface' 在 python 中是否像在 PHP 中一样实现

php - 为什么我的 xmlhtpp 请求返回一个空数组?

mysql - 如何使用最大值进行分组

php - 为什么 mysql Insert 查询 *仅* 在表为空时失败?

php - 错误网关 NGINX 502 PHP-FPM fastcgi

php - 马根托。仅为分组产品创建属性

php - 插入新行,更新旧行 : how?

mysql - SQL性能问题

php - php-fpm容器livenessProbe与/ping路由