Ich versuche, einen XAMPP-PHP-Prozess unter Verwendung von pcntl_fork () mit einer Befehlszeile auszuführen. Wenn ich den folgenden Befehl ausführe:
$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);
}
Ich bekomme:
Fatal error: Call to undefined function pcntl_fork()
Kann jemand vorschlagen, wie man das beheben kann?
Die Funktion 'pcntl_fork' kann nicht verwendet werden, wenn PHP als Apache-Modul (z. B. XAMPP) verwendet wird. Sie können pcntl_fork nur im CGI-Modus oder über die Befehlszeile verwenden.
Die Verwendung dieser Funktion führt zu folgendem Ergebnis: 'Fataler Fehler: Aufruf an undefinierte Funktion: pcntl_fork ()'
Um zu sehen, ob es installiert ist, führen Sie Folgendes aus:
php -i | grep pcntl
Wenn es vorhanden und aktiviert ist, ist die pcntl-Funktion wahrscheinlich deaktiviert, was bei neueren Installationen von PHP 5.x der Standard zu sein scheint. Führen Sie zur Überprüfung Folgendes aus:
php -i | grep disable_functions
Wenn Sie eine Liste der pcntl_ * -Funktionen sehen, müssen Sie Ihre php.ini-Datei (in XAMPP) bearbeiten und die Zeile disable_functions=
auskommentieren.
Ich würde empfehlen, dass Sie diese Distribution von PHP für OS X verwenden, das aktuelle Versionen hat und ich kann bestätigen, dass es die Erweiterung pcntl
hat.
pcntl_*
-Funktionen, Process Control-Unterstützung in PHP ist standardmäßig nicht aktiviert. Sie müssen die CGI- oder CLI-Version (nicht als Apache-Modul verwendet) von PHP mit der Konfigurationsoption --enable-pcntl
kompilieren, wenn Sie PHP kompilieren, um die Prozesssteuerungsunterstützung zu aktivieren.
Dieses Modul funktioniert derzeit nicht auf Nicht-Unix-Plattformen (Windows).