web-dev-qa-db-fra.com

pcntl_fork () retour, erreur fatale: appel à la fonction non définie pcntl_fork ()

J'essaie de créer une ligne de commande pour exécuter un processus php XAMPP à l'aide de pcntl_fork (). Quand je lance la commande ci-dessous:

$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);
}

Je reçois:

Fatal error: Call to undefined function pcntl_fork()

Quelqu'un peut-il suggérer comment résoudre ce problème?

17
Ben Pearce

Il n'est pas possible d'utiliser la fonction 'pcntl_fork' lorsque PHP est utilisé comme module Apache (tel que XAMPP). Vous ne pouvez utiliser pcntl_fork qu'en mode CGI ou en ligne de commande.

L'utilisation de cette fonction entraînera: 'Erreur fatale: appel de la fonction non définie: pcntl_fork ()'

Source: http://php.net/manual/en/function.pcntl-fork.php

27
Andrea

Pour voir s'il est installé, lancez:

php -i | grep pcntl

Si elle est présente et activée, les fonctions pcntl sont probablement désactivées, ce qui semble être la configuration par défaut des nouvelles installations PHP 5.x. Pour vérifier, lancez:

php -i | grep disable_functions

Si vous voyez une liste de fonctions pcntl_ *, vous devrez éditer votre fichier php.ini (à l'intérieur de XAMPP) et mettre en commentaire la ligne disable_functions=

Je vous recommanderais d'utiliser cette distribution de PHP pour OS X, qui possède les versions actuelles et que je peux confirmer qui possède l'extension pcntl.

9
Stuart Carnie

pcntl_* fonctions, la prise en charge du contrôle de processus dans PHP n'est pas activée par défaut. Vous devez compiler la version CGI ou CLI (non utilisée en tant que module Apache) de PHP avec l'option de configuration --enable-pcntl lors de la compilation de PHP pour activer la prise en charge de Process Control.

Actuellement, ce module ne fonctionnera pas sur plates-formes non Unix (Windows).

ref

1
Nabi K.A.Z.