gpt4 book ai didi

php - 模块 pcntl 已在第 0 行的未知中加载 - Apache x Cli

转载 作者:行者123 更新时间:2023-12-04 18:33:42 26 4
gpt4 key购买 nike

我收到了这个 PHP 警告:

Module 'pcntl' already loaded in Unknown on line 0



但它仅适用于 Apache。在 /etc/php/7.2/apache2/conf.d/20-pcntl.ini 上启用它:

extension=pcntl.so



我没有在 CLI 上启用它。检查:
  • 我没有 /etc/php/7.2/cli/conf.d/20-pcntl.ini文件
  • grep 命令 grep -R extension=pcntl.so /etc/php/7.2只返回 apache2 文件夹中的文件

  • 如果我在 Apache 的 .ini 上禁用此扩展,它不会在 Apache 上加载,而是在 Cli 上加载。

    如果我在 Apache 的 .ini 上启用此扩展,我会收到模块已加载警告。

    我需要在 Apache 上启用 PCNTL 才能使用 Spatie\Async 库。

    这是一个 Ubuntu 14 服务器。

    最佳答案

    有时扩展被编译到 PHP 中,而不是作为单独的模块加载。在摆弄 PHP.ini 文件之前,您可能应该运行一个快速的 PHP 脚本来查看加载了哪些模块:

    <?php
    var_dump(get_loaded_extensions());

    您还应该注意像 这样的 PHP 指令。禁用功能 这可能会禁用 pcntl 功能。在我的 Ubuntu 工作站上,使用此指令禁用 pcntl 功能:
    /etc/php5/apache2/php.ini:disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority

    我建议您尝试更广泛的 grep 搜索,看看 pcntl 是否在其他地方被提及:
    grep -ir pcntl.so /etc/php/7.2

    I don't have a /etc/php/7.2/cli/conf.d/20-pcntl.ini file



    这对我来说似乎有点奇怪。您可以尝试在那里搜索更多 php.ini 文件:
    sudo find /etc -name "php.ini"

    您还应该检查以确保您没有从命令行运行与使用 apache 不同的 PHP。在某些情况下(令人遗憾的是,您可能认为这种情况发生得更频繁)您的 CLI PHP 与您的 Apache PHP 不同。 This article更详细地讨论了这个问题。

    If I disable this extension on Apache's .ini, it won't load on Apache but loads on Cli.



    这对我来说实际上听起来很合理。如果我不得不猜测,我会说聪明的 Ubuntu/Debian 包管理器人员认为允许 pcntl_x 函数在 apache 环境中运行是不明智的,尤其是考虑到这个 stark and ancient warning .我不记得该警告现在是否已过时。我会推荐你​​看这个 other thread我问了一些相关的问题,并被告知我应该在事件模式下使用 PHP-FPM 和 apache。

    综上所述,我使用 pcntl_fork 和 posix_setsid 等在 PHP(技术上不是多线程,而是多处理)中编写“多线程”应用程序取得了巨大的成功。

    总而言之,我猜测 PCNTL 已经在 apache 和 cli 上加载,明智的 Ubuntu 开发人员可能禁用了 php.ini 中的 pcntl 函数。

    关于php - 模块 pcntl 已在第 0 行的未知中加载 - Apache x Cli,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52434166/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com