ID:               18833
 Comment by:       klaus dot wendel at lednew dot de
 Reported By:      antoine dot bajolet at tdf dot fr
 Status:           No Feedback
 Bug Type:         *General Issues
 Operating System: GNU/Linux 2.4.9 RH 7.1
 PHP Version:      4.2.1
 New Comment:

I've forgotten: Please aslo add a

$result = explode("\n",trim($result));

function user_proc_exec ($command,& $result,& $status)
        {
        $process = proc_open(
                        $command,
                        array(
                        0 => array("pipe", "r"), //STDIN
                        1 => array("pipe", "w"), //STDOUT
                        2 => array("pipe","w")), //STDERR
                        $pipes
                        );
        $result = stream_get_contents($pipes[1]);
        $error = stream_get_contents($pipes[2]);
        fclose($pipes[1]);
        fclose($pipes[2]);
        $status= proc_close($process);
        $result = explode("\n",trim($result));
    return($error);
        }


Previous Comments:
------------------------------------------------------------------------

[2009-12-19 12:26:49] klaus dot wendel at lednew dot de

[Ubuntu karmic 9.10; php-cli 5.2.10]

> The per-user process number limit is set in 
> /etc/security/limits.conf.
> In my case, it was enough to raise it and reboot.

In my case, this wasn't the answer, unfortunately. Or fortunately,
because I was forced to find a workaround, which could help others,
too.

In my code I replaced exec by following function:

function user_proc_exec ($command,& $result,& $status)
        {
        $process = proc_open(
                        $command,
                        array(
                        0 => array("pipe", "r"), //STDIN
                        1 => array("pipe", "w"), //STDOUT
                        2 => array("pipe","w")), //STDERR
                        $pipes
                        );
        $result = stream_get_contents($pipes[1]);
        $error = stream_get_contents($pipes[2]);
        fclose($pipes[1]);
        fclose($pipes[2]);
        $status= proc_close($process);
    return($error);
    }

Everything is working fine now.

------------------------------------------------------------------------

[2009-05-04 14:42:05] scherbakov_koksa at mail dot ru

It seems I've finally figured out the reason (after a huge amount of
googling UNIX forums).

The PHP fork() error is accompanied by the following entries in Apache
error_log:

[Mon May 04 20:55:59 2009] [alert] (11)Resource temporarily
unavailable: setuid: unable to change to uid: 48
[Mon May 04 20:55:59 2009] [alert] Child 10053 returned a Fatal
error... Apache is exiting!

The system configuration doesn't allow Apache to execute more than N
child processes simultaneously. Apache runs out of this limit and can't
start any more processes. Hence is the error.

The per-user process number limit is set in /etc/security/limits.conf.
In my case, it was enough to raise it and reboot.

------------------------------------------------------------------------

[2009-03-09 13:33:36] steveg at bscopes dot com

1. did you ever figure out what caused this problem?
2. do you know which apache/php parameters to adjust ?

------------------------------------------------------------------------

[2009-02-05 11:37:09] scherbakov_koksa at mail dot ru

I'm having the same issue with PHP 5.2.8, Apache 2.2.11, GNU/Linux
(2.6.20-1.2320.fc5). A php script periodically (per user request)
executes the following command:

xsltproc <filename> <filename>

In some time the script starts throwing the "unable to fork" warning.
It is fixed by Apache restart.

------------------------------------------------------------------------

[2008-06-01 16:48:39] pahan at hubbitus dot spb dot su

Have same trouble in PHP snapshot 200805080630:

PHP Warning:  exec(): Unable to fork [echo -ne '2008-06-01 05:15:27:
Login: Unable to login (User: hel...@simpla
y.ru)! reason:not connected! (CMD:LOGIN)
         sleep 50 seconds

' >> /home/pasha/temp/php-IMAP/logs/log_ERR 2>&1] in
/var/www/_SHARED_/Debug/HuLOG.php on line 115
PHP Stack trace:
PHP   1. {main}() /home/pasha/temp/php-IMAP/IMAP_answer.php:0
PHP   2. IMAP_mailbox_change_answer()
/home/pasha/temp/php-IMAP/IMAP_answer.php:201
PHP   3. HuLOG->toLog() /home/pasha/temp/php-IMAP/IMAP_answer.php:67
PHP   4. HuLOG->writeLogs() /var/www/_SHARED_/Debug/HuLOG.php:158
PHP   5. HuLOG->log_to_file() /var/www/_SHARED_/Debug/HuLOG.php:162
PHP   6. exec() /var/www/_SHARED_/Debug/HuLOG.php:115

Warning: exec(): Unable to fork [echo -ne '2008-06-01 05:15:27: Login:
Unable to login (User: hel...@simplay.ru)
! reason:not connected! (CMD:LOGIN)
         sleep 50 seconds

' >> /home/pasha/temp/php-IMAP/logs/log_ERR 2>&1] in
/var/www/_SHARED_/Debug/HuLOG.php on line 115

Call Stack:
    0.0019     375364   1. {main}()
/home/pasha/temp/php-IMAP/IMAP_answer.php:0
184145.8861   16442044   2. IMAP_mailbox_change_answer()
/home/pasha/temp/php-IMAP/IMAP_answer.php:201
184145.8903   16451552   3. HuLOG->toLog()
/home/pasha/temp/php-IMAP/IMAP_answer.php:67
184145.8908   16451648   4. HuLOG->writeLogs()
/var/www/_SHARED_/Debug/HuLOG.php:158
184145.8908   16451648   5. HuLOG->log_to_file()
/var/www/_SHARED_/Debug/HuLOG.php:162
184145.8917   16451824   6. exec()
/var/www/_SHARED_/Debug/HuLOG.php:115

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/18833

-- 
Edit this bug report at http://bugs.php.net/?id=18833&edit=1

Reply via email to