Skip to content

[Console] "pcntl_signal_get_handler() has been disabled for security reasons" during installation #38496

@wouterj

Description

@wouterj

Symfony version(s) affected: 5.2-dev (0000dfe)

Description
When running the Symfony CLI to install the 5.2 dev, I get this error:

Symfony operations: 3 recipes (41e56f6eef7707ea357a0a4dd6d9d3b8)
  - Configuring symfony/framework-bundle (>=5.2): From github.com/symfony/recipes:master
  - Configuring symfony/console (>=5.1): From github.com/symfony/recipes:master
  - Configuring symfony/routing (>=5.1): From github.com/symfony/recipes:master
Executing script cache:clear [KO]
 [KO]
Script cache:clear returned with error code 1
!!
!!  In SignalRegistry.php line 28:
!!
!!    Warning: pcntl_signal_get_handler() has been disabled for security reasons
!!
!!
!!
Script @auto-scripts was called via post-update-cmd

  unable to run /usr/local/bin/composer create-project symfony/skeleton /home/wouter/projects/local/symfony/sf-52 5.2.x@dev: exit status 1

I never explicitly disabled any functions, so it seems like it ships as default settings on some distributions (for reference, I'm using Debian with Sury's PHP repository). Googling online, it seems like the pcntl_*() functions are one of the functions that are more frequently disabled.

Even more, when commenting this line in my php.ini, it seems like Symfony CLI (4.19.2) explicitly disables these functions:

§ php -r "var_dump(ini_get('disable_functions'));"
Command line code:1:
string(0) ""

§ symfony php -r "var_dump(ini_get('disable_functions'));"
Command line code:1:
string(384) "pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,"

How to reproduce

symfony new --version=next

Possible Solution

  • Should we add a friendlier error message if this function is disabled? (or maybe just skipping the new signal features if this function is disabled?)
  • Or should we add this to the Symfony installation requirements (in the docs and in the requirement checker)?

Additional context

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions