2013-05-30 39 views
13

Sto provando a eseguire una riga di comando eseguendo il processo php XAMPP utilizzando pcntl_fork(). Quando eseguo il seguente comando:pcntl_fork() restituito, errore irreversibile: chiamata alla funzione non definita pcntl_fork()

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

ottengo:

Fatal error: Call to undefined function pcntl_fork() 

Qualcuno può suggerire come risolvere questo problema?

+0

Qual è il tuo sistema operativo? Tieni presente che Windows non ha sottostanti '* fork()' syscalls. –

+0

Macintosh - Lion –

+1

Avete installato correttamente 'php5-pcntl'? –

risposta

7

per vedere se è installato, eseguire:

php -i | grep pcntl

Se è presente e abilitata la funzione PCNTL è probabile disabili, che sembra essere il default nei nuovi PHP 5.x viene installato. Per controllare, eseguire:

php -i | grep disable_functions

Se viene visualizzato un elenco di pcntl_ * funzioni, è necessario modificare il file php.ini (all'interno di XAMPP) e commentare la linea disable_functions=

Ti consigliamo di utilizzare this distribution di PHP per OS X, che ha versioni correnti e posso confermare che ha l'estensione pcntl.

+0

Commentare "disabled_functions =" ​​è stato un no go per me. # ubuntu1404 # php7.1 – Jacksonkr

23

Non è possibile utilizzare la funzione 'pcntl_fork' quando PHP è utilizzato come modulo Apache (come XAMPP). Puoi usare pcntl_fork solo in modalità CGI o da riga di comando.

Utilizzando questa funzione si tradurrà in: 'Fatal error: Call to undefined function: pcntl_fork()'

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