ID:               43105
 User updated by:  ian at onlineloop dot com
-Summary:          Occasionally PHP can't execute external mail program
 Reported By:      ian at onlineloop dot com
 Status:           Open
-Bug Type:         Mail related
+Bug Type:         Unknown/Other Function
 Operating System: Solaris 10
-PHP Version:      5.2.5RC1
+PHP Version:      5.2.5RC2-dev
 New Comment:

Changing this whole report as I have now more information.

After further examining the problem, it is clear that PHP is sometimes
failing to close the files it opens, and is generally failing to cleanly
exit, if it exits at all.  It is running with Apache 2.0.61.  As time
passes, PHP has more and more files open, the apache child processes do
not exit, the status of the child processes stays on "W", writing, for
long periods of time although the network status on the server itsel
clearly shows that all connections to the remote address have closed. 
The memory usage also climbs constantly until the apache child process
dies, if the child process dies at all.  

In the system, this is noticable by the number of open files, in the
last 24 hours, this has changed from 4.2Gb and 30,711 open files to now
6.6Gb and 48,462 open files.  This increase in memory consumption and
the number of open files is continuous.  Additionally, there are more
and more apache child processes that simply do not exit.  It is this
behaviour that is clearly responsible for the problems of opening other
files, and for the failure to be able to execute some system calls, such
as sending mail and writing log files.

The cause for this behaviour is unclear, however it is definately PHP
5.2.x related as under PHP 5.1.6, everything is ok.


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

[2007-10-25 15:03:26] ian at onlineloop dot com

Description:
------------
Working with PHP 5.2.5-RC2, build from php5.2-200710241430, problem
also occurred in php5.2-200710171030.

PHP for what ever reason is occasionally unable to execute the mail
program that we have installed, ssmtp. I am able to run the script below
15-20 times, and 1 or 2 times the mail program fails, every other time
it is successful. This problem seesm to occur only when there is a
higher system load, apache needs to be serving 60-80 requests before
this problem shows itself. Suspicion was in the maximum number of open
files, however that can be ruled out as our system (Sun V440, 16Gb RAM,
4 x SPARC 1.6Ghz) allows up to 10240 open files at any one time.

Additionally, there are sometimes problems creating files. Although the
errors would point to a system problem, this is definately not the case
as other processes on the system do not have problems (proftpd, for
example), and everything was OK with PHP 5.1.6.

A log file extract and system messages are:
# Oct 25 16:28:01 www-walda mod_evasive[21333]: [ID 869489
daemon.alert] Couldn't open logfile
/var/apache2/logs/mod_evasive-log/dos-86.56.222.150: Bad file number

[25-Oct-2007 16:39:48] [UseBB Error] [Thu Oct 25 14:39:48 2007]
[E_WARNING - mb_send_mail() [<a
href='function.mb-send-mail'>function.mb-send-mail</a>]: Could not
execute mail delivery program '/usr/bin/ssmtp -t']
[./sources/functions.php:1164]

[25-Oct-2007 16:30:03] PHP Warning:  mail() [<a
href='function.mail'>function.mail</a>]: Could not execute mail delivery
program '/usr/bin/ssmtp -t' in /ftp/usr/ian/mailtest.php on line 12

These problems have appeared only since we changed from PHP 5.1.6 to
PHP 5.2.x (note that we have had many problems with PHP 5.2.x). We are
currently using the PHP CVS version mentioned above, as up until and
including PHP 5.2.4, bug numbers 41822, 41899 were blocking us.

Reproduce code:
---------------
<?php
// Mail addresses have been removed because of spam concerns!
 $to      = '<enter your mail address here';
 $subject = 'the testmail';
 $message = 'Testmail' ;
 $headers = 'From: <senders mail address>' . "\r\n" .
    'Reply-To: <senders mail address>' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

$date= date("d M y, G:i:s");

if ( mail($to, $subject, $message, $headers) == TRUE)
        echo "OK: $date, mail($to, $subject, $message, $headers)";
else
        echo "False";
?>


Expected result:
----------------
The code should run correctly every time, delivering a mail.

Actual result:
--------------
The mail is sent most times, but occasionally I get an error message
back saying that the sending failed:

Browser:
Warning: mail() [function.mail]: Could not execute mail delivery
program '/usr/bin/ssmtp -t' in /ftp/usr/ian/mailtest.php on line 12
 False

Logs:
[25-Oct-2007 16:56:58] PHP Warning:  mail() [<a
href='function.mail'>function.mail</a>]: Could not execute mail delivery
program '/usr/bin/ssmtp -t' in /ftp/usr/ian/mailtest.php on line 12



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


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

Reply via email to