Skip to content

Call to undefined function EE\Site\Type\pcntl_signal #1956

Closed

Description

@rapbando
root@srv261:~# wget -qO ee https://rt.cx/ee4 && sudo bash ee
-----> Checking dependencies
=====> Updating apt cache
Hit:1 http://security.ubuntu.com/ubuntu noble-security InRelease
Hit:2 https://nginx.org/packages/mainline/ubuntu noble InRelease
Hit:4 http://archive.ubuntu.com/ubuntu noble InRelease
Hit:5 https://deb.nodesource.com/node_24.x nodistro InRelease
Get:6 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Hit:7 https://apt.hestiacp.com noble InRelease
Hit:8 https://ppa.launchpadcontent.net/ondrej/php/ubuntu noble InRelease
Hit:3 https://dlm.mariadb.com/repo/mariadb-server/11.4/repo/ubuntu noble InRelease
Hit:9 http://archive.ubuntu.com/ubuntu noble-backports InRelease
Get:10 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [1406 kB]
Get:11 http://archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages [1707 kB]
Fetched 3239 kB in 1s (2841 kB/s)
Reading package lists...
-----> Installing Docker
-----> Installing PHP
=====> Existing PHP 8.3 detected; keeping it (set EE_PHP_VERSION to override)
-----> Installing PHP extensions
-----> Installed PHP : 8.3
-----> Checking if required PHP modules are installed...
-----> curl is already installed
-----> sqlite3 is already installed
-----> zip is already installed
-----> Checking swap
-----> Setting up EasyEngine
-----> Downloading EasyEngine phar
-----> Verifying EasyEngine phar checksum
-----> Checksum verified. Installing EasyEngine
-----> Pulling EasyEngine docker images
-----> Pulling EasyEngine docker images
+-------------------+---------------------------------------------------------------------------------------------+
| OS                | Linux 6.8.0-147-generic #147-Ubuntu SMP PREEMPT_DYNAMIC Thu Sep 24 11:33:16 UTC 2026 x86_64 |
| Shell             | /bin/bash                                                                                   |
| PHP binary        | /usr/bin/php8.3                                                                             |
| PHP version       | 8.3.36                                                                                      |
| php.ini used      | /etc/php/8.3/cli/php.ini                                                                    |
| EE root dir       | phar://ee.phar                                                                              |
| EE vendor dir     | phar://ee.phar/vendor                                                                       |
| EE phar path      | /root                                                                                       |
| EE packages dir   |                                                                                             |
| EE global config  | /opt/easyengine/config/config.yml                                                           |
| EE project config |                                                                                             |
| EE version        | 4.13.3                                                                                      |
+-------------------+---------------------------------------------------------------------------------------------+
-----> Adding ssl-renew cron
-----> Run "ee help site" for more information on how to create a site.
root@srv261:~# ee
root@srv261:~# ee site create site.com --type=wp --cache --ssl=le
PHP Fatal error:  Uncaught Error: Call to undefined function EE\Site\Type\pcntl_signal() in phar:///usr/local/bin/ee/vendor/easyengine/site-command/src/helper/class-ee-site.php:87
Stack trace:
#0 phar:///usr/local/bin/ee/vendor/easyengine/site-type-wp/src/WordPress.php(86): EE\Site\Type\EE_Site_Command->__construct()
#1 phar:///usr/local/bin/ee/php/EE/Dispatcher/CommandFactory.php(95): EE\Site\Type\WordPress->__construct()
#2 [internal function]: EE\Dispatcher\CommandFactory::EE\Dispatcher\{closure}()
#3 phar:///usr/local/bin/ee/php/EE/Dispatcher/Subcommand.php(272): call_user_func()
#4 phar:///usr/local/bin/ee/php/EE/Runner.php(384): EE\Dispatcher\Subcommand->invoke()
#5 phar:///usr/local/bin/ee/php/class-ee.php(1318): EE\Runner->run_command()
#6 phar:///usr/local/bin/ee/vendor/easyengine/site-command/src/Site_Command.php(154): EE::run_command()
#7 [internal function]: Site_Command->__invoke()
#8 phar:///usr/local/bin/ee/php/EE/Dispatcher/CommandFactory.php(96): call_user_func()
#9 [internal function]: EE\Dispatcher\CommandFactory::EE\Dispatcher\{closure}()
#10 phar:///usr/local/bin/ee/php/EE/Dispatcher/Subcommand.php(272): call_user_func()
#11 phar:///usr/local/bin/ee/php/EE/Runner.php(384): EE\Dispatcher\Subcommand->invoke()
#12 phar:///usr/local/bin/ee/php/EE/Runner.php(407): EE\Runner->run_command()
#13 phar:///usr/local/bin/ee/php/EE/Runner.php(931): EE\Runner->_run_command_and_exit()
#14 phar:///usr/local/bin/ee/php/EE/Bootstrap/LaunchRunner.php(23): EE\Runner->start()
#15 phar:///usr/local/bin/ee/php/bootstrap.php(74): EE\Bootstrap\LaunchRunner->process()
#16 phar:///usr/local/bin/ee/php/init-ee.php(27): EE\bootstrap()
#17 phar:///usr/local/bin/ee/php/boot-phar.php(8): include('...')
#18 /usr/local/bin/ee(5): include('...')
#19 {main}
  thrown in phar:///usr/local/bin/ee/vendor/easyengine/site-command/src/helper/class-ee-site.php on line 87
root@srv261:~#

Activity

  1. mrrobot47 commented on Oct 29, 2026

    @mrrobot47
    Member

    Thanks for the report.

    Cause

    HestiaCP disables several pcntl_* functions for the PHP CLI in /etc/php/8.3/cli/php.ini. EasyEngine needs two of them, pcntl_signal and pcntl_signal_dispatch, and on PHP 8 calling a disabled function is a fatal error.

    Fix

    Hestia upgrades can rewrite php.ini, so override the setting in a separate file instead:

    1. Create /etc/php/8.3/cli/conf.d/99-easyengine.ini containing the same disable_functions = … line from php.ini, minus pcntl_signal and pcntl_signal_dispatch.

    2. Check that it worked:

      php -r 'var_dump(function_exists("pcntl_signal"));'

      It should print bool(true).

    This only changes the PHP CLI that ee runs on; PHP-FPM is not affected.

    The installer will detect this and explain it up front (EasyEngine/installer#49).

    Note

    EasyEngine runs its own nginx-proxy on ports 80 and 443, which conflicts with Hestia's web server on the same machine, so running both on one server isn't a supported setup.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions