调用未定义函数 pcntl_fork() php-fpm nginx

2024-04-10

我正在尝试使用pcntl_fork()在 php-fpm 中,但它不可用,我得到:

Call to undefined function pcntl_fork()

尽管我已经评论过了disable_functions in the php.ini. phpinfo()显示作者和php -m还列出了pcntl。如果我从 cli 执行脚本,它就会起作用。我还需要启用其他选项吗?

作为 MWE,我准备了一个最小的 docker 环境https://github.com/white-gecko/pcntl-mwe https://github.com/white-gecko/pcntl-mwe resp.

docker pull whitegecko/pcntl-mwe

如果你运行它docker run -it --rm --name pcntl -p 8080:80 pcntl您将在以下位置找到示例http://localhost:8080/和 phpinfo 在http://localhost:8080/phpinfo.php。它是一个 debian jessie 系统。


Answer recommended by PHP /collectives/php Collective

PCNTL 扩展仅限于在 CLI 中运行;您不能在其他服务器环境(fpm、mod_php 等)中使用它。

应该发生的情况是,标记为“cli”的扩展仅意味着静态链接到 CLI 二进制文件,或允许在 CLI 中共享加载,并从针对其他 SAPI (libphp7.so) 的共享构建中省略。

为 PHP 配置 PCNTL 的 autoconf (ext/pcntl/config.m4) 文件应该指示构建过程禁止在其他 SAPIS 中加载 PCNTL,碰巧 1) 它不是很好,2) 这不是当 FPM 合并到 PHP 中时考虑到这一点:因此 FPM 会忽略它并与 PCNTL 源链接(如果在编译时启用扩展),并且其他 SAPI 将允许您加载库(如果它是共享的),因为 DSO(共享)库)本身不强制 SAPI 限制。这些事情(FPM 链接和其他加载)都不应该被允许,这是一个糟糕的主意强制不支持的 SAPI 加载 PCNTL。

当您 fork 一个进程时,您会创建一个调用 fork 的进程的写时复制克隆:在 Apache 或 FPM 内部,这意味着您无法在子进程中优雅地管理重复的文件(套接字)句柄(因为您没有从 PHP 访问它们)。

这应该仅限于 CLI(和早期的 CGI)的原因是这些 SAPI 使用单一进程模型。虽然 FPM 从技术上来说是一个 CGI 接口,但它肯定不是单一进程,因此永远不会是在用户空间进行分叉的合适环境。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调用未定义函数 pcntl_fork() php-fpm nginx 的相关文章

  • 如何使用 PHP 解释 HTML5 输入日期值

    我需要让用户选择一个日期 最好采用 dd mm yy 格式 我决定尝试新的 HTML5 输入日期类型 但是我不知道如何解释它在服务器端给出的值 我得到的值是 yyyy mm dd 我怎样才能做到这一点 如果用户使用不支持它的旧版浏览器怎么办
  • Paypal Rest API - 来自批准 URL 的令牌生命周期

    我使用 Paypal Rest API 我的问题是 有多长token来自批准 URL 有效吗 我想将此令牌 也包含我的令牌 存储到数据库并生成带有我的令牌的链接 稍后 如果我单击此链接 将我的令牌替换为 paypal 令牌 我想重定向到 p
  • 如何将 PHP 数组中的值插入到 MySQL 表中?

    我正在创建一个注册表单 其中包含姓名 电子邮件和电话号码字段 为了检查用户输入的有效性 我有一个函数validate input 返回一个数组 arr包含用户输入的输入 如果用户输入有效 arr然后传递给一个单独的函数 该函数将值插入arr
  • 提交表单后如何关闭浏览器选项卡?

  • PHP中如何检查输入类型按钮是否被按下?

    isset 函数可用于检查输入类型submit被按下 但是有没有办法检查输入类型按钮是否被按下 在我的代码中 按钮什么也不做 只是在 Onclick 事件上调用一个函数 然后刷新页面并在 PHP 中创建数据库条目 并且我希望它仅在按下按钮后
  • Paypal PDT交易ID有效期

    当我尝试使用交易 ID 检索付款信息时 我从 paypal PDT 收到错误 4003 虽然我这里有一个类似的线程 贝宝 PDT 错误 4003 https stackoverflow com questions 8521800 paypa
  • 动态创建的数据源未传递到 CakePHP 中的关联模型

    我有一个模型 汽车 该汽车有几个关联的模型 让我们考虑其中一个与hasMany关系 轮 在我的 CarsController 中 我使用以下代码动态生成数据源 schemaName this gt Session gt read User
  • 估计 libGD 操作所需的内存

    在尝试使用 libGD 在 PHP 中调整图像大小之前 我想检查是否有足够的内存可用于执行该操作 因为 内存不足 会完全终止 PHP 进程并且无法捕获 我的想法是 原始图像和新图像中的每个像素 RGBA 需要 4 字节内存 check av
  • 定义根路径

    我正在寻找一种将配置变量定义为我的网站的根路径的方法 定义这个的最好方法是什么 我正在使用 Codeigniter config root path 这是我的 config 文件夹中的 site config 文件 dev dev appl
  • 如何实现嵌套注释?

    我想在我的网站上显示评论 如下所示 li Parent ul li child one li li child two ul li grandchild li li other grandchild li ul li ul li li An
  • 清理 php 中的句子

    标题可能听起来很奇怪 但我有点尝试设置这个 preg replace 来处理文本区域的混乱写入者 它必须 如果有感叹号 则不应连续出现另一个感叹号 如果有 则逗号胜出 并且必须是 当昏迷前有一个 空格时 应将其减少到零 该句子不能以逗号开头
  • SimpleXML:使用包含命名空间的 XML

    我正在尝试从 google picasa API 获取地理信息 这是原始 XML
  • Laravel 5:如何检索并显示属于特定类别的所有帖子

    我有3张桌子 user id username subreddits id name created at posts id title link user id subreddit id 问题是 我手动获取 subreddit 类别的 i
  • 从多维数组中删除多个值

    我有一个来自 WordPress 的数组get posts 功能 posts array 15 0 gt object WP Post 285 24 ID gt int 253 post author gt string 1 1 post
  • Yii 2.0 AJAX 请求的 CSRF 验证

    我有一个ajax触发从我的数据库中删除条目的函数 我需要去做CSRF验证相同 我怎样才能做到这一点 我正在发送CSRF cookie连同我的帖子请求 但是Yii 2 0不验证它 并且通过 ajax 传递的任何输入都会到达服务器 我该怎么做C
  • PHP crypt() Blowfish 函数不工作

    这是我第一次在 PHP 中使用 crypt 函数 我不明白为什么它不起作用 我的代码基于这篇文章 http www techrepublic com blog australia secure passwords with blowfish
  • 从数据库结果生成多维数组的递归函数

    我正在编写一个函数 它接受页面 类别数组 来自平面数据库结果 并根据父 ID 生成嵌套页面 类别项目数组 我想递归地执行此操作 以便可以完成任何级别的嵌套 例如 我在一个查询中获取所有页面 这就是数据库表的样子 id parent id t
  • 如何将 ZF2 单元/应用程序模块测试合并到单个调用中?

    我遵循将测试存储在模块中的 ZF2 约定 并且当从每个模块内运行测试时一切正常 我想做的是有一个根级别的 phpunit xml 来调用各个模块测试并将它们合并以生成代码覆盖率数据和其他指标 问题是每个单独的测试套件都是在模块化 phpun
  • 如何创建一个每次调用公共方法时都会调用的方法?

    如何创建一个每次调用公共方法时都会调用的方法 您也可以说这是一个后方法调用挂钩 我当前的代码
  • CodeIgniter 2.1.0 的会话库中是否存在任何已知错误?为什么我会被踢出去? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在开发

随机推荐

  • AttachConsole(-1),但 Console.WriteLine 不会输出到父命令提示符?

    如果我将我的程序设置为Windows Application 并使用了AttachConsole 1 API 如何获取Console WriteLine写入我启动应用程序的控制台 这对我不起作用 如果相关的话 我使用的是 Windows 7
  • socket.io redis 和内存泄漏

    我的socket io版本是 电子邮件受保护 cdn cgi l email protection and 电子邮件受保护 cdn cgi l email protection 我在 Windows 上 在某些地方 我看到问题已得到解决 我
  • 为我的网络应用程序生成虚拟数据 - 寻找字典[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 抱歉 如果这不是主题 但它is当然是编程related 我需要大规模测试我的 Web 应用程序 并发用户
  • CouchDB“加入”两个文档

    我有两个看起来有点像这样的文档 Doc id AAA creator id data DataKey id credits left 500 times used 0 data id AAA 我想要做的是创建一个视图 它允许我传递 Data
  • 如果达到标识列的最大值,将附加什么? [复制]

    这个问题在这里已经有答案了 可能的重复 主键 Id 会发生什么情况 当它超过限制时 https stackoverflow com questions 5305232 what happens to the primary key id w
  • “find”(命令)找不到 -wholename 的任何内容

    为什么这个命令有效 home user1 tmp find wholename tmp file c exec echo user2 tmp file c home user1 tmp 而且这个命令不起作用 什么也没发现 home user
  • 使用 StaticResource 作为 VisualTransition 的 Storyboard 时出错

    我在 Button 控件的 VisualStateGroup 内有一个 VisualTransition Storyboard 属性绑定到 StaticResource Storyboard
  • 如何将cropit中的图片导出到php进行上传?

    我已经在互联网上搜索了一段时间 但找不到任何可以告诉我如何将结果从 image cropper cropit export 转换为 PHP 可以上传到服务器的图像 我正在使用 Cropit 插件 我需要的只是一个可以传递到我的 php 上传
  • 如何在文本中间的

    内使用

    标记

    ? [复制]

    这个问题在这里已经有答案了 我想做这样的事情 p This is a p h2 text h2 paragraph 我禁用了 h2 的边距和填充 但它仍然打破了 h2 标签前后的线条 如何在文本中间使用 h2 标签并使其看起来像普通单词 就
  • Xcode 8 Swift 3 音高改变声音

    我正在尝试制作一个带有击中声音的简单游戏 每当您击中某物时 击中声音都会有不同的音调 我以为这很简单 但最终却带来了很多东西 其中大部分是我完全从别人那里复制的 func hitSound value Float let audioPlay
  • C 编程:预处理器、宏作为标记

    我正在尝试做一些概念上与此类似的事情 但似乎无法让它发挥作用 最后显示错误 任何想法 include
  • z/OS 如何调用 Web 服务? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个 COBOL 程序 需要从 Web 服务获取数据 如果不使用 CICS 我最好的选择是什么 我认为 C 程序可以读取 Web
  • Python-2.x 中的 super() 是否损坏? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在页面视图之间导航时如何取消所有正在运行的传奇

    当用户决定导航到应用程序内的另一个 页面 时 我正在尝试找到一种简单易用的方法来取消 页面 内所有正在运行的传奇 我们不使用路由 而是使用每个 页面 是一个更大的主机应用程序中自己的小部件 负责在用户导航时创建和加载每个页面 目前 我们正在
  • 在 .NET 5.0 上向 Windows 窗体添加配置

    我正在将现有的 Windows 窗体 C 应用程序迁移到 NET 5 0 并且我正在尝试遵循迁移文档 https learn microsoft com en us dotnet desktop winforms migration vie
  • CMake:执行宏/函数作为add_custom_command的命令

    我正在使用一个外部库 它提供了用于自动代码生成的 CMake 函数 以在我的 CMakeLists 中使用 问题是 每当我修改 CMakeLists 时 该函数都会再次运行 从而触发新生成但未更改的源的重新编译 我需要像 add custo
  • 如何让 forEach 循环等待每个 Ajax 函数完成

    我有一个array语句 我想循环遍历每个语句并提交给server via an ajax称呼 我必须确保每一个ajax请求在发送下一个请求之前执行 因为server边代码 我正在创建一个unique key为了这array的声明 发生的情况
  • 使用 PDO 设置连接超时

    我正在使用 PDO 从 MySQL 服务器获取数据 我注意到的是 如果 MySQL 服务器不可用 则需要really 相对 很长时间这段代码返回异常 try handle new PDO db type host db host dbnam
  • 如何将 CMD shell 变量展开两次(递归)

    使用 Windows XP CMD 命令行 我可以将变量展开两次 如下所示 set AAA BBB set BBB CCC for F usebackq tokens i in echo AAA do echo i 会回声CCC I e A
  • 调用未定义函数 pcntl_fork() php-fpm nginx

    我正在尝试使用pcntl fork 在 php fpm 中 但它不可用 我得到 Call to undefined function pcntl fork 尽管我已经评论过了disable functions in the php ini