[PHP] Foutmelding voor PHP header

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • IcE_364
  • Registratie: Februari 2002
  • Laatst online: 20-09 12:07
Bij 2 scripts van een klant, waarbij hij gebruik maakt van de mail() functie geeft deze de volgende foutmelding:

code:
1
No recipient addresses found in header


Opzich duidelijke foutmelding dus, het probleem is echter dat hij de foutmelding voor de php header zet, waardoor apache een internal server error krijgt.

code:
1
2
3
4
[root@srv85 create]# php < namefile6.php
No recipient addresses found in header
Content-type: text/html
X-Powered-By: PHP/4.3.10


Het komt enkel bij 2 scripts van hem voor. Waarschijnlijk zie ik nu iets heel logisch over het hoofd maar ik kom er niet uit... :?

Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Wellicht is dat een error van sendmail oid (lijkt ook niet op een php error), probeer eens wat te echo'en (ookal is het maar '') voordat je mail() aanroept? Gebruik je misschien output buffering?
Stukje script laten zien zou misschien ook handig zijn :)

Acties:
  • 0 Henk 'm!

  • igmar
  • Registratie: April 2000
  • Laatst online: 03-09 22:58

igmar

ISO20022

Sendmail is degene die de melding geeft, en de uitvoer daarvan wordt naar de browser gestuurd. Oplossing : Zorgen dat je de foutmelding niet krijgt :)

Acties:
  • 0 Henk 'm!

  • IcE_364
  • Registratie: Februari 2002
  • Laatst online: 20-09 12:07
Het is inderdaad sendmail die deze foutmelding uitspuugt. Het volgende script geeft ook deze melding

PHP:
1
2
3
<?
mail("", "", "");
?>


Is het niet de taak van PHP om deze foutmelding af te vangen en zijn eigen melding te laten zien? Of om in ieder geval elke externe output voor zijn eigen header af te vangen en die na de header te plaatsen?

Weet iemand toevallig of latere versies van php dit wel doen?

[ Voor 41% gewijzigd door IcE_364 op 22-02-2005 11:15 ]


Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Op http://nl2.php.net/manual/en/function.mail.php bij de comments staat dit:
This can be used in place of mail()
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
function sendmail($to='', $subject='', $message='', $headers='', $extra='')
{
   $fd = popen("/usr/sbin/sendmail -t $extra", 'w');

   fputs($fd, "To: $to\n");
   fputs($fd, "Subject: $subject\n");
   fputs($fd, "X-Mailer: PHP4\n");

   if ($headers) {
       fputs($fd, "$headers\n");
   }

   fputs($fd, "\n");
   fputs($fd, $message);
   pclose($fd);
}
?>


Omdat dat een stream gebruikt zou het geen errors naar de stdout moeten gooien, wellicht werkt dit wel zoals je wilt? (je kan eventueel ook nog zelf errors afvangen door gewoon van die stream te lezen)

Acties:
  • 0 Henk 'm!

  • Yo-han
  • Registratie: December 2001
  • Laatst online: 18-08 20:16

Yo-han

nope.

IcE_364 schreef op dinsdag 22 februari 2005 @ 11:14:
Het is inderdaad sendmail die deze foutmelding uitspuugt. Het volgende script geeft ook deze melding

PHP:
1
2
3
<?
mail("", "", "");
?>


Is het niet de taak van PHP om deze foutmelding af te vangen en zijn eigen melding te laten zien? Of om in ieder geval elke externe output voor zijn eigen header af te vangen en die na de header te plaatsen?

Weet iemand toevallig of latere versies van php dit wel doen?
De functie wordt bij mij gewoon genegeerd wanneer ik niets mee geef. Gebruik 4.3.10-2 op Debian.

Acties:
  • 0 Henk 'm!

  • IcE_364
  • Registratie: Februari 2002
  • Laatst online: 20-09 12:07
Hier gebruiken we 4.3.10 op Fedora Core 1, ondertussen de klant natuurlijk vast aangeraden om een controle voor het email adres toe te voegen, maar toch vind ik het wel vreemd dat dit niet opgevangen wordt.
Pagina: 1