pcntl_fork() 返回,致命错误:调用未定义的函数 pcntl_fork()

我正在尝试使用pcntl_fork()分叉命令行运行XAMPP php进程。当我运行以下命令时:

$pid = pcntl_fork();
if($pid == -1){
    file_put_contents('testlog.log',"\r\nFork Test",FILE_APPEND);
    return 1; //error
}
else if($pid){
    return 0; //success
}
else{   
    file_put_contents($log, 'Running...', FILE_APPEND);
}

我得到:

Fatal error: Call to undefined function pcntl_fork()

任何人都可以建议如何解决这个问题?


答案 1

当PHP用作Apache模块(例如XAMPP)时,不可能使用函数“pcntl_fork”。您只能在 CGI 模式下或从命令行使用pcntl_fork。

使用此函数将导致:'Fatal error: Call to undefined function: pcntl_fork()'

资料来源:http://php.net/manual/en/function.pcntl-fork.php


答案 2

要查看它是否已安装,请运行:

php -i | grep pcntl

如果它存在并启用,则 pcntl 函数可能被禁用,这似乎是较新的 PHP 5.x 安装中的默认设置。要进行检查,请运行:

php -i | grep disable_functions

如果您看到pcntl_*函数的列表,则需要编辑php.ini文件(XAMPP内部)并注释掉该行disable_functions=

我建议你使用这个适用于OS X的PHP发行版,它有当前版本,我可以确认确实有扩展。pcntl


推荐