Repository navigation
Closed
Description
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:~#
Metadata
Metadata
Assignees
Labels
No labels
Activity
mrrobot47 commentedon Oct 29, 2026
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_signalandpcntl_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:Create
/etc/php/8.3/cli/conf.d/99-easyengine.inicontaining the samedisable_functions = …line fromphp.ini, minuspcntl_signalandpcntl_signal_dispatch.Check that it worked:
php -r 'var_dump(function_exists("pcntl_signal"));'It should print
bool(true).This only changes the PHP CLI that
eeruns 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.