2009-05-20 19 views
0

Ich verwende @fopen, um eine Datei im "rb" -Modus zu öffnen. Die Datei, die ich hier öffne, läuft ohne Fehler, aber wenn ich diese Datei mit @fopen öffne, gibt es einen Fehler.Fehler bei der Verwendung von @fopen

Code ist so etwas wie dieses ---

$file = @fopen("xyz.com","rb") or $flag=1; 

if($flag==1) 
{ 
    mail($to, $subject, $message, $from); 
    die(); 
} 

manchmal öffnet sie ohne jeden Fehler Mail zu senden, aber manchmal geht es so viele fehlerhafte E-Mails geben.

Was ist die Lösung, um diese URL ohne Fehler Mail zu öffnen? Hilfe!

+1

Bereitstellung der Fehler messaage eingestellt werden selbst sehr hilfreich sein würde – soulmerge

+0

wir die Fehlermeldung benötigen youre Empfang von irgendeiner Hilfe sein – simon622

+0

sehe ich da $ file genommen haben = @fopen ("xyz.com", "rb") oder $ flag = 1; Wenn die URL geöffnet wird, dann wird $ flag nicht auf 1 gesetzt, sonst wird sie auf 1 gesetzt (siehe $ file) und sobald sie auf 1 gesetzt wird, wird eine Mail erzeugt ............ Ich bekomme diese generierten Mails nicht mit einem bestimmten Fehler .... ich benutze diesen Code in vielen Seiten, aber für eine bestimmte URL generiert er diese Fehler-Mails .... – developer

Antwort

1

Wenn Sie versuchen, eine URL zu öffnen (vorausgesetzt, Sie haben 'xyz.com' angegeben), müssen Sie die Schema-Deklaration davor einfügen. Z.B. http://xyz.com, sonst wird PHP versuchen, eine lokale Datei zu öffnen. Wenn Sie sich auf eine lokale Datei beziehen, sollten Sie alle Backslashes vermeiden, wenn Sie Windows verwenden.

Es gibt jedoch nichts, was von Natur aus falsch mit dem Rest Ihres Codebeispiels ist, das ein Problem verursachen sollte. @ unterdrückt Fehlerausgaben einfach, so dass es an sich kein merkwürdiges Verhalten verursacht.

Obwohl, dass das, ein besserer Weg zu handhaben, es könnte, dies zu tun:

$file = @fopen("xyz.com","rb"); 

if(!$file) 
{ 
    mail($to, $subject, $message, $from); 
    die(); 
} 
+0

ya du bist richtig James aber ich benutze http: // obwohl ich nicht geschrieben habe, dass hier in meinem Code, aber ich benutze es aber immer noch Mails generiert ....... Ich möchte diese Fehler Mails loswerden. .... – developer

+0

Habe meine Antwort auf ein 'besseres' Codebeispiel bearbeitet ... probier das aus, und schau, ob du immer noch das selbe Problem hast. –

+0

kommentieren Sie einfach die mail() -Funktion, wenn Sie die Mails loswerden wollen :) der Grund, warum es manchmal (aber nicht immer) fehlschlägt, kann sein, dass der Zielserver xyz.com nicht immer reagiert (schnell genug). Eine Lösung für dieses Problem hängt davon ab, wofür Sie die App benötigen. – stefs

0

durch die Art und Weise, Sie setzen $ flag = 1, wenn ein Fehler auftritt. Was aber, wenn beim letzten Mal ein Fehler aufgetreten ist und diesmal kein Fehler aufgetreten ist? (dann ist $ flag immer noch 1 von der vorherigen Zeit).

+0

im Initialisierung $ flag = 0 im Start der Datei ....... so immer wenn es zuerst auf 0 gesetzt wird, dann wenn @fopen fehlschlägt dann wird nur auf 1 gesetzt .......... – developer

0

Entfernen Sie den '@' Zeichen vom Anfang der fopen Methode, (das Vorhandensein des @ Symbols unterdrückt jede PHP-gesteuerte Fehlermeldung) Dies gibt Ihnen die Erklärung warum php denkt, dass Sie diese Datei nicht öffnen können - ich würde Gefahr, dass der Pfad zur Datei oder die Berechtigungen der Datei ungültig sind.

+0

okk ich werde das tun und werde überprüfen ...... wird sagen, wenn es einen Fehler gibt ..... – developer

0

Was ist eine Fehlermeldung? Wir können das Problem einfach ohne es erraten.

Ist URL in Ihrem Ini immer erlaubt? Vielleicht überschreibt dieser Wert irgendwo mit ini_set()?

Sind Sie sicher, dass die URL korrekt ist und der Host aktiv ist?

Schließlich empfehle ich stattdessen fsockopen. Es bietet flexiblere Remote-Verbindungen, Fehlerbehandlung für sie und die Möglichkeit, das Verbindungstimeout festzulegen.

1

Versuchen Sie, die

file_get_contents(); 

Funktion anstelle von fopen() zu verwenden.

0

Die @ Symbole unterdrückt Fehler so wird $ flag nie

Verwandte Themen