I write simple requirements checking script. It checks all required PHP modules installed. I need to check if pcntl is installed. But this module is accessible only in cgi environment and invisible for web queries. extension_loaded('pcntl') and function_exists('pcntl_fork') both return false. How can I perform this check?
How to check PCNTL module exists
Asked Answered
Create a file called cli_supports.php
<?php
$supports = array();
if (function_exists("pcntl_fork")) $supports[] = "pcntl";
echo implode(",", $supports);
?>
Then from your feature detection scripts do.
$cli_features = explode(",", shell_exec("/usr/local/bin/php ".escapeshellarg(_DIR_."/cli_supports.php")));
Running php -i | grep pcntl
will return the following if pcntl is enabled.
pcntl
pcntl support => enabled
If it is installed, the code bellow returns true
var_dump (extension_loaded('pcntl'));
Create a file called cli_supports.php
<?php
$supports = array();
if (function_exists("pcntl_fork")) $supports[] = "pcntl";
echo implode(",", $supports);
?>
Then from your feature detection scripts do.
$cli_features = explode(",", shell_exec("/usr/local/bin/php ".escapeshellarg(_DIR_."/cli_supports.php")));
If you're sure it's supported (or shared object exists) then check your php.ini and make sure it's loaded as an extension.
extension_loaded()
should work (and what I prefer over function_exists()
), and the only reason I can imagine it wouldn't is you not loading the shared object.
© 2022 - 2024 — McMap. All rights reserved.
function_exists('pcntl_fork') == false
you can't usepcntl_fork
– Sunbonnet