【问题标题】:How to enable PCNTL on Ubuntu server 16.04如何在 Ubuntu 服务器 16.04 上启用 PCNTL
【发布时间】:2017-03-17 10:19:43
【问题描述】:

我想知道如何在 Ubuntu 服务器 16.04 上运行的 PHP7 中启用 pcntl 扩展。
我看到了http://www.crimulus.com/2010/07/30/howto-enable-pcntl-in-ubuntu-php-installations/,但我们真的需要重新编译 PHP7 吗?

令我惊讶的是,其他扩展通常很容易使用 apt-get 添加。

谢谢

【问题讨论】:

    标签: php-7 ubuntu-server


    【解决方案1】:

    您不需要 apt-get install 其他任何东西。

    当你通过包管理器安装 php 时包含了 pcntl 模块,尝试sudo apt update 然后sudo apt-get upgrade,它可能会有所帮助。 您也可以使用它来确认您是否拥有它。

    php -i | grep pcntl
    //pcntl suppport=>enable
    

    还可以通过包管理器列出我安装的所有模块。

    sudo apt install php7.0 php7.0-cli php7.0-common php7.0-fpm php7.0-imap php7.0-json php7.0-mbstring php7.0-opcache php7.0-readline php7.0-xml
    

    【讨论】:

    • 实际上仅适用于 CLI。它可能在 Web 处理程序中被禁用
    【解决方案2】:

    根据您的需要,我的解决方案是使用HowToForge的以下教程。

    今天,当前版本是7.4.11,但您可以更改它。

    cd /tmp
    wget https://www.php.net/distributions/php-7.4.11.tar.gz
    tar xfz php-7.4.11.tar.gz
    cd php-7.4.11
    

    接下来你会发现--enable-pcntl有什么有趣的事情。

    ./configure --prefix=/opt/php-7.4 --with-pdo-pgsql --with-zlib-dir --with-freetype --enable-mbstring --enable-soap --enable-calendar --with-curl --with-zlib --enable-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --with-zip --with-pdo-mysql --with-mysqli --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg --with-openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-imap --with-imap-ssl --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-intl --with-pear --enable-fpm
    

    请按照整个教程在此处获取完整的工作解决方案: https://www.howtoforge.com/tutorial/how-to-compile-and-install-php-7.4-on-ubuntu-18-04/

    【讨论】:

      【解决方案3】:

      对于 ubuntu 18 和 20:

      1-php -v
      例如结果:PHP 7.4.10

      2-sudo wget https://www.php.net/distributions/php-7.4.10.tar.gz
      将 7.4.10 替换为您的 php 版本。

      3-sudo tar xfz php-7.4.10.tar.gz && sudo rm -rf php-7.4.10.tar.gz
      将 7.4.10 替换为您的 php 版本。

      4-cd php-7.4.10/ext/pcntl/
      将 7.4.10 替换为您的 php 版本。

      5-sudo phpize
      如果没有安装 phpize,你可以使用apt install php7.0-dev 安装它

      6-sudo ./configure --with-php-config=/usr/bin/php-config

      7-sudo make && sudo make install
      结果必须像Installing shared extensions: /usr/lib/php/20190902/

      8-cd ../../../ && sudo rm -rf php-7.4.10
      将 7.4.10 替换为您的 php 版本。

      9-cd /etc/php/7.4
      用你的 php 版本替换 7.4。

      10-sudo sh -c "echo 'extension=pcntl.so' > ./mods-available/pcntl.ini"

      11- sudo nano ./cli/php.ini 然后添加 extension=pcntl
      sudo nano ./apache2/php.inisudo nano ./fpm/php.ini 重复这项工作。

      12- 在以上所有php.ini 中有disable_functions 包括pcntl 前缀。你必须启用你想要的。

      13- 重启你的 apache2 或 fpm:
      sudo service apache2 restart
      sudo service php7.4-fpm restart
      用你的 php 版本替换 7.4。

      14- 你可以在 test.php 中使用die(extension_loaded('pcntl')); 进行检查

      注意:如果出现错误:PHP Warning: Module 'pcntl' already loaded in Unknown on line 0,请仅在 cli/php.ini 中删除 extension=pcntl

      【讨论】:

      • 适用于 Ubuntu Server 20 和 PHP 8.0.8。一些注意事项:可以跳过第 11 步的一部分(例如,将 extension=pcntl.so 添加到 php.ini),因为我们已经在第 10 步中添加了它,但不要忘记在 Ubuntu 上调用 sudo phpenmod pcntl。第 14 步:您还可以检查您的 phpinfo() 输出
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 2018-04-03
      • 2017-11-10
      相关资源
      最近更新 更多