2013-05-30 47 views
13

Tôi đang cố gắng chia rẽ dòng lệnh chạy quy trình php XAMPP bằng cách sử dụng pcntl_fork(). Khi tôi chạy lệnh dưới đây:pcntl_fork() trả về, Lỗi nghiêm trọng: Gọi hàm không xác định 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); 
} 

tôi nhận được:

Fatal error: Call to undefined function pcntl_fork() 

bất cứ ai có thể đề xuất làm thế nào để sửa lỗi này?

+0

OS của bạn là gì? Lưu ý rằng Windows không có các 'sysc' '' '' '' '' '' '' '' –

+0

Macintosh - Lion –

+1

Bạn đã cài đặt thành công 'php5-pcntl' chưa? –

Trả lời

7

Để xem nếu nó được cài đặt, chạy:

php -i | grep pcntl

Nếu nó hiện diện và kích hoạt thì hàm pcntl có khả năng tàn tật, mà dường như là mặc định trong phiên bản mới hơn PHP 5.x cài đặt. Để kiểm tra, hãy chạy:

php -i | grep disable_functions

Nếu bạn thấy một danh sách các pcntl_ * chức năng, bạn sẽ cần phải chỉnh sửa file php.ini của bạn (bên trong XAMPP) và xóa bỏ dòng disable_functions=

Tôi khuyên bạn nên sử dụng this distribution PHP cho OS X, có phiên bản hiện tại và tôi có thể xác nhận có tiện ích mở rộng pcntl.

+0

Nhận xét rằng "disabled_functions =" ​​không phải là một lựa chọn cho tôi. # ubuntu1404 # php7.1 – Jacksonkr

23

Không thể sử dụng hàm 'pcntl_fork' khi PHP được sử dụng làm mô-đun Apache (chẳng hạn như XAMPP). Bạn chỉ có thể sử dụng pcntl_fork trong chế độ CGI hoặc từ dòng lệnh.

Sử dụng chức năng này sẽ cho kết quả: 'Fatal error: Call to undefined function: pcntl_fork()'

Nguồn: http://php.net/manual/en/function.pcntl-fork.php