如何在Ubuntu服务器16.04上启用PCNTL

fra*_*lbo 5 ubuntu-server php-7

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

令我感到惊讶的是,其他扩展通常很容易添加apt-get.

谢谢

小智 10

对于 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
    将 7.4 替换为您的 php 版本。

  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.inidisable_functions一个 includepcntl前缀。您必须启用您想要的一项。

  13. 重新启动您的 apache2 或 fpm:
    sudo service apache2 restart
    sudo service php7.4-fpm restart
    将 7.4 替换为您的 php 版本。

  14. die(extension_loaded('pcntl'));你可以在 test.php 中检查它

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


Ale*_*ang 6

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

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

php -i | grep pcntl
//pcntl suppport=>enable
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

  • 这实际上仅适用于 CLI。它可能在 Web 处理程序中被禁用 (5认同)