2012-09-11 8 views
9

Ich habe auf Stackoverflow und viele andere Websites nach Ideen gesucht, aber nichts hat bisher funktioniert und ich brauche mehr direkte Hilfe.php mail() Rückgabe falsch, aber nicht in der Befehlszeile

Ich habe einen dedizierten Ubuntu-Server (9.04 jaunty) und ich betreibe mehrere PHP-Websites dort, mit Apache2. Mein Problem ist, dass die Funktion mail() nicht mehr funktioniert. Seit einiger Zeit benutze ich die PEAR Mail Queue für die meisten E-Mails. Daher weiß ich nicht genau, wann Mail() nicht mehr funktioniert, aber ich brauche es immer noch für ein OpenCart Setup, neben einigen anderen Dingen, aber mail() hält die Rückkehr falsch, egal was ich mache. Auch dieser einfache Code wird nicht funktionieren:

<?php 
mail('[email protected]','test','test'); 
?> 

Also, ich habe an den Sendmail-Einstellungen in der php.ini suchen, die alle Check-out, und wenn ich das in der Befehlszeile ausführen, funktioniert es gut und schickt mir eine E-Mail:

# sendmail 
[email protected] 
test message 

also dachte ich, es könnte pHP selbst sein, der ein Problem hat, so dass ich versuchen, den folgenden Befehl ein:

# php -r "mail('[email protected]','test','test');" 

und es sendet auch die E-Mail ohne Probleme! Also was könnte es sein? Ich fing an zu denken, dass es vielleicht eine Art von Berechtigungsproblem wäre, dass www-data einige Probleme mit dem Ausführen des Skripts hatten. Immer noch nicht sicher darüber, weil ich dieses Skript nicht einmal ausführen kann:

<?php 
echo exec('whoami'); 
?> 

Es gibt auch false zurück! Ich habe den visudo Befehl und hinzugefügt, um die folgende Zeile nur für den Fall laufen:

www-data ALL=(ALL) ALL 

Und ich habe die Benutzer- und Gruppen Eigentümer der Dateien von root geändert: root zu www-data: www-data aber immer noch nichts!

Was kann ich noch versuchen? Da muss was sein! Kann mir jemand helfen?

+1

Sind Fehler im System-Mail-Fehler-Protokoll (/ var/log/mail oder so ähnlich) bei der Verwendung von Mail, wenn es fehlschlägt? –

+0

Drop 'mail()'. Verwenden Sie d. H. 'PhpMailer' und lassen Sie es über' SMTP' übertragen und Sie befinden sich auf sicherem Boden. –

+0

Es gibt viele Fehler, die sagen: SYSERR (UID0): Wer sind Sie ?: Berechtigung verweigert und einige, die sich über die Datei submit.cf in der Zeile mit RunAsUser und TrusedUser 'unbekannter Benutzer smmsp: Berechtigung verweigert' wo smmsp ist auf beide gesetzt. Was soll ich damit machen? @Louis – user1663164

Antwort

0

Ich hatte das gleiche Problem vor ein paar Wochen. Ich habe versucht:

und ein paar andere.

Ich hatte einen Eintrag in meinem Fehlerprotokoll sagen Segmentation fault. Nach 2 Tagen habe ich das Problem gefunden. Ich benutzte Exim4 auf meinem Debian-System, die Kombination mit Apache2 gab einen Segmentierungsfehler. Ich habe Exim4 durch Postfix ersetzt und es hat funktioniert!

In Ihrem Fall können Sie jedoch keine Exec wie whoami ausführen, und Sie sollten diesen Pfad verfolgen.

Da die Mail-Funktion schließlich an die OS kommt, sollte ein Exec-Befehl funktionieren!

+0

Dann was schlägst du vor, dass ich es tue? Was in PHP steuert diese Art von Berechtigungen? – user1663164

0

Sie könnten E-Mail senden mit phpMailer werfen SMTP ohne out mit Ihnen mail() -Funktion. Der Code ist here(http://phpmailer.worxware.com/) Nur eine Idee

möglicherweise dieses extation für OpenCart können phpmailer verwenden Mail-Funktion zu ersetzen. Ich habe das nicht gerade so getestet und dachte, es könnte jemandem ein paar Ideen geben.

+0

Nun, nein, OpenCart benutzt die mail() - Funktion, damit ich es leider brauche. Ansonsten würde ich mich nicht so sehr damit beschäftigen. – user1663164

+0

Ich habe meine Antwort aktualisiert es sieht aus wie jemand hat eine Auslöschung für offenen Wagen gemacht, um phpmailer zu verwenden Das mag Ihnen nicht helfen, aber es könnte jemandem helfen, der nicht so viel Zugang zu seinem Server hat. – Justin

2

Commandline und Webserver teilen nicht die gleiche php.ini! Überprüfen Sie, welche php.ini auf der Kommandozeile und im Servermodul verwendet wird.

+0

Wo kann ich das überprüfen? – user1663164

+0

Nevermind, fand es. Aber die Dateien sind ziemlich identisch, das ist nicht das Problem. Irgendwelche anderen Ideen? – user1663164

+0

versuche nur, auf der sicheren Seite zu sein, gib Apache php.ini in php.ini.bak um und kopiere die cli php.ini und check. Es wird Ihren Problembereich eingrenzen –

0

In meinem Fall war es php-fpm in Magento Docker Bild verwendet, mit dem ich spielte. Es hat PHP vorinstalliert (mit Konfiguration).

Nach dem Neustart nahm es neue Einstellungen: how to restart oder nur sudo killall php-fpm.

Verwandte Themen