ID: 25480
User updated by: colin at grandecom dot com
Reported By: colin at grandecom dot com
Status: Bogus
Bug Type: Program Execution
Operating System: Solaris 2.8
PHP Version: 4.3.3
New Comment:

Yes, I guess I thought you meant you reduced the number of system file
descriptors.

For what its worth though, my system is set w/rlimit 1024 and with
4.3.3, it would continually fail the exec commands after mere hours of
operation. I did not check how many FDs were in use with Apache at the
time, but for the purposes of comparison, my server (which has been
running 4.3.1 flawlessly non-stop since 09/08, or about a month and a
half) is currently using 21 descriptors.

So my guess is that 4.3.3 has some kind of problem releasing ones that
have already been used?


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

[2003-10-18 23:11:42] [email]sniperphp.net[/email]

Given the above comment, this is not PHP bug.



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

[2003-10-18 11:14:33] bk at galaxy dot net

I guess you misunderstood. I reduced the number of file
descriptors in use to make sure fd value is < 256.

In the FILE* structure, which is what fopen(), popen(), etc
uses, they only have a "char" to hold the file descriptor.
fopen() and popen() will fail if the file descriptor it gets
assigned is >= 256. This problem goes away in 64 bit mode,
but not many people are using that yet.

Sure enough, all my problems with shell_exec() have gone
away since eliminating all the ErrorLog lines from my web
server. If you run "pfiles" on your httpd process, you'll
see the ulimit as well as how many file descriptors you have
open. If this value goes above 255, you'll start seeing
intermittent exec failures. Its intermittent since some
fd's less than 256 may get closed and reused to allow an
exec to work, however once they're all full in the lower
numbers, you'll fail again.

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

[2003-10-16 13:17:53] colin at grandecom dot com

I only had mine (ulimit -n) set to 256, and I tried upping it to 1024
with no discernible result. My system is an internal one, and has no
customer vhosts - just a couple of name vhosts, referencing about 4
logs total. I'm not sure why _dropping_ your number of file
descriptors would fix the problem - if anything, that would make it
worse it would seem. I have to say that I doubt your problem is gone
for good.

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

[2003-10-16 10:28:46] bk at galaxy dot net

Sure enough, when I reduce the file descriptors down (it was over 400),
the intermittent problems went away. I
eliminated the ErrorLog for the virtual hosts to knock
the file descriptors down to 200 and it seems to work
consistently (so far).

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

[2003-10-16 09:25:13] bk at galaxy dot net

I'm seeing the same thing. I get shell_exec() to fail
ever since upgrading to 4.3.3 as well as popen() within
the sendmail module of pear.

I'm wondering if this has something to do with the
solaris limit of 256 file descriptors in FILE streams
and running out of them. But it is strange that this
didn't start until I upgraded to 4.3.3.

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

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
[url]http://bugs.php.net/25480[/url]

--
Edit this bug report at [url]http://bugs.php.net/?id=25480&edit=1[/url]