Ankündigung

Einklappen
Keine Ankündigung bisher.

IMAP Verbindung testen, nächster Aufruf bringt 500er

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • IMAP Verbindung testen, nächster Aufruf bringt 500er

    Hallo

    Ich möchte Einstellungen (Domain/Port/etc) für eine IMAP-Verbindung testen. Wenn ich absichtlich falsche Angaben mache, bekomme ich den Fehler

    Code:
    Connection error: Can't connect to imap.example.de,994: Connection refused
    Den Fehler erhalte ich direkt. Wenn ich dann eine andere Seite aufrufe (die nichts mit IMAP zu tun hat), lädt die Seite, bis ich einen 500er bekomme. Ich verstehe nicht warum. Selbst wenn ich erst 3 Minuten nach der Fehlermeldung auf eine andere Seite klicke, bekomme ich noch immer einen 500er.
    Also der erste Aufruf nach der Exception-Meldung bringt mir immer einen 500er.
    Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.


  • #2
    Noch mal langsam. Wie testest du die imap Verbindung? Welche normalen Seiten gehen dann nicht mehr? Wo ist da der Zusammenhang?
    Standards - Best Practices - AwesomePHP - Guideline für WebApps

    Kommentar


    • #3
      Zitat von rkr Beitrag anzeigen
      Wo ist da der Zusammenhang?
      Das ist eine sehr gute Frage.

      Ich verwende die Klasse für Tests.

      Normaler Aufruf wie mit imap_open(url,user,pw) und dann bekomme ich die Fehlermeldung. Egal was ich jetzt mache, der nächste Aufruf an die Domain endet mit einem 500er.
      Beispiel:
      domain.tld/imap.php gibt mir exeption
      danach rufe ich domain.tld/foo.php auf und bekomme 500er.
      Ich kann mir nur nicht erklären, warum der nächste Aufruf einen Internal Server Error verursacht.
      Eben hatte ich den Fehler, war ich 45 Min nicht am PC, komme zurück und drücke F5 und bekomme den 500er. Als wäre er vom letzten Aufruf noch irgendwie im Output.
      Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

      Kommentar


      • #4
        das closed vergessen?
        http://forums.hostgator.com/too-many...al-t86848.html
        sonst mal den provider fragen.

        Kommentar


        • #5
          Da stellt sich mir die Fragen, ob man das machen muss, wenn man keine Verbindung aufbauen konnte.

          PHP-Code:
          protected function initImapStream() {
              
          $imapStream = @imap_open($this->imapPath$this->login$this->password);
              if(!
          $imapStream) {
                  throw new 
          ImapMailboxException('Connection error: ' imap_last_error());
              }
              return 
          $imapStream;

          Schließlich habe ich hier keinen Stream, den ich für imap_close verwenden könnte.
          Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

          Kommentar


          • #6
            Egal was ich jetzt mache, der nächste Aufruf an die Domain endet mit einem 500er.
            was das @ im code soll, während du fehler suchst weisst sicher auch nur du.

            den grund für den fehler verräst du uns ja nicht.
            das statement des providers könnteste auch mal posten.

            raten macht wenig spass.

            Kommentar


            • #7
              Ich verstehe nicht, was ich meinen Anbieter fragen soll. Wenn ich den fehlerhaften Teil in eine eigene Datei packe und aufrufe, macht er genau das, was er soll. Er gibt mir einen Fehler aus und der nächste Aufruf geht auch ohne Probleme.

              Ich habe versucht die Fehlerquelle etwas einzuschränken. Erzeuge ich einen Fehler durch zu wenig Parameter in imap_open, gibt es kein unerwartetes Problem. Erst, wenn ich 3 Parameter angebe, gibt es ein Problem.

              PHP-Code:
              $inbox imap_open('foo-bar','foo','bar'); 
              Das erzeugt

              Code:
              Warning: imap_open(): Couldn't open stream foo-bar in /var/www/htdocs/admin/controller/module/mymodule.php on line 175
              Fatal error:  Call to a member function get() on a non-object in /var/www/htdocs/admin/index.php on line 79
              Im Errorlog ist
              Code:
              [17-Nov-2014 11:04:21 UTC] PHP Fatal error:  Call to a member function get() on a non-object in /var/www/htdocs/admin/index.php on line 79
              [17-Nov-2014 11:04:21 UTC] PHP Warning:  Unknown: A session is active.  You cannot change the session module's ini settings at this time in  Unknown on line 0
              Hier wird versucht auf ein globales Object zuzugreifen, das im error_handler verwendet wird (line 79).
              Code

              Beim 2. Aufruf bekomme ich dann diesen Fehler
              Code:
              [17-Nov-2014 12:05:10 Europe/Berlin] PHP Warning:  Unknown list entry type in request shutdown (0) in Unknown on line 0
              Dieses Problem bekomme ich nur, wenn ich fastCGI einstelle. Sobald ich auf suPHP umstelle, habe ich diese Ausgabe:

              Code:
              Warning: imap_open(): Couldn't open stream foo-bar in /var/www/htdocs/admin/controller/module/mymodule.php on line 175
              Fatal error:  Call to a member function get() on a non-object in /var/www/htdocs/admin/index.php on line 79
              
              Warning:  Unknown: A session is active. You cannot change the session module's ini settings at this time in Unknown on line 0
              Im Errorlog habe ich aber nur die ersten beiden Meldungen. Ich habe absolut keine Idee, wie er zu diesen Meldungen kommt. Die erste ist klar. Aber die 2. ergibt für mich keinen Sinn, da $config ja vorhanden sein muss, zu diesem Zeitpunkt. Und wie er auf die 3. Meldung kommt, kann ich auch nicht sagen.
              Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

              Kommentar


              • #8
                Ich habe absolut keine Idee, wie er zu diesen Meldungen kommt. Die erste ist klar. Aber die 2. ergibt für mich keinen Sinn, da $config ja vorhanden sein muss, zu diesem Zeitpunkt.
                imap_open liefert einen Handle zurück. Da Du die erste Warnung nach eigener Aussage verstehst, solltest Du Dir ausrechnen können, daß Du in dem Fall aber kein Handle erhältst, var_dump() verrät evtl. mehr.

                Auch $config mal an entsprechender Stelle mit var_dump() prüfen!

                Beseitige erstmal die erste, denn alles weitere können durchaus Folgefehler/-meldungen sein!
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  In beiden Fällen ein bool(false).

                  Ich verstehe deinen Ansatz nicht. Welchen Fehler soll ich beseitigen? Die falschen Angaben in imap_open sind doch beabsichtigt.
                  Zitat von SteiniKeule Beitrag anzeigen
                  Ich möchte Einstellungen (Domain/Port/etc) für eine IMAP-Verbindung testen. Wenn ich absichtlich falsche Angaben mache, bekomme ich den Fehler
                  Ich möchte doch am Ende nur einen Handle (true) oder ein false haben. Das mit dem true ist kein Problem. Mein Problem kommt, wenn ich ein false habe.
                  Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

                  Kommentar


                  • #10
                    Die falschen Angaben in imap_open sind doch beabsichtigt.
                    Das ist mir klar. Aber Du sagtest Doch, daß Du den Fehler auch erhältst, wenn Du korrekte Daten einträgst oder hab ich Dich da falsch verstanden?
                    Das mit dem true ( Du meinst ein Handle! ) ist kein Problem. Mein Problem kommt, wenn ich ein false habe.
                    Ja, aber warum bekommst Du denn false?! Wenn Du sagst, daß es kein Problem ist, ein Handle zu bekommen, wo liegt dann Dein weiteres Problem?

                    Bekommst Du den Fehler mit dem get() auch, wenn das Handle stimmt?
                    Dann solltest Du mal schauen, ob vielleicht der error_handler irgendwo vor Zeile 23 bereits aufgerufen wird!
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      Zitat von Arne Drews Beitrag anzeigen
                      Das ist mir klar. Aber Du sagtest Doch, daß Du den Fehler auch erhältst, wenn Du korrekte Daten einträgst oder hab ich Dich da falsch verstanden?
                      Nein, wenn ich richtige Daten angebe, erhalte ich den Handle und keine Fehler. Das passt alles so weit.

                      Zitat von Arne Drews Beitrag anzeigen
                      Ja, aber warum bekommst Du denn false?! Wenn Du sagst, daß es kein Problem ist, ein Handle zu bekommen, wo liegt dann Dein weiteres Problem?
                      Mein Problem ist ganz einfach. Wenn ich falsche Daten angebe, wird der nächste Aufruf einer beliebigen Seite der Domain ein 500er. Egal wie lange ich warte. Nach einem imap_open() == false ist die nächste Anfrage ein 500er. Und das ist das einzige wirkliche Problem.

                      Zitat von Arne Drews Beitrag anzeigen
                      Bekommst Du den Fehler mit dem get() auch, wenn das Handle stimmt?
                      Nein. Ich bekomme diesen Fehler auch nicht, wenn ich imap_open() ohne Parameter aufrufe oder sonst einen Fehler mache. Der Fehler kommt (bisher) NUR bei einem fehlgeschlagenem imap_open mit 3 (oder mehr) Parametern.
                      Zitat von Arne Drews Beitrag anzeigen
                      Dann solltest Du mal schauen, ob vielleicht der error_handler irgendwo vor Zeile 23 bereits aufgerufen wird!
                      Nein, das würde ich an der Log-Datei sehen.
                      Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

                      Kommentar


                      • #12
                        Nach einem imap_open() == false ist die nächste Anfrage ein 500er. Und das ist das einzige wirkliche Problem.
                        PHP-Code:
                         if( imap_open()  == FALSE) return "onhhje"

                        Kommentar


                        • #13
                          Zitat von moma Beitrag anzeigen
                          PHP-Code:
                           if( imap_open()  == FALSE) return "onhhje"
                          ok, du hast mein Problem nicht verstanden

                          Ich erhalte ein Ergebnis, wie ich es brauche. Ich kann auch eine Ausgabe erstellen, die mitteilt, was Sache ist. ABER, wenn imap_open nicht verbinden kann, kackt der NÄCHSTE Request an den Server ab.

                          Aber ist ok, ich habe eine Lösung gefunden, auch wenn ich nicht genau sagen kann, was das Problem ist.

                          Ich habe den den error handler für die Abfrage gegen eine eigenen ausgetauscht. Ist nicht die beste Lösung, aber er macht genau das, was er soll.

                          Jetzt habe ich auch keine Probleme mit dem 500er mehr.

                          Danke für eure Hilfe.
                          Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

                          Kommentar


                          • #14
                            jo hab ich nicht,
                            möglicherweise hilft mir deine lösung weiter das problem zu verstehen, oder jemand anderen der das problem auch hat.
                            sowas in der art hat dir geholfen:
                            http://stackoverflow.com/questions/5...notices-in-php

                            Kommentar


                            • #15
                              Ich gehe auch gerne mehr ins Detail.
                              Der original Error-Handler aus der index.php führte dazu, dass bei einer fehlerhaften IMAP-Verbindung die darauf folgende Anfrage an den Server mit einem 500er beantwortet wurde.

                              PHP-Code:
                              function error_handler($errno$errstr$errfile$errline) {
                                 global 
                              $log$config;

                                 
                              // error suppressed with @
                                 
                              if (error_reporting() === 0) {
                                    return 
                              false;
                                 }

                                 switch (
                              $errno) {
                                    case 
                              E_NOTICE:
                                    case 
                              E_USER_NOTICE:
                                       
                              $error 'Notice';
                                       break;
                                    case 
                              E_WARNING:
                                    case 
                              E_USER_WARNING:
                                       
                              $error 'Warning';
                                       break;
                                    case 
                              E_ERROR:
                                    case 
                              E_USER_ERROR:
                                       
                              $error 'Fatal Error';
                                       break;
                                    default:
                                       
                              $error 'Unknown';
                                       break;
                                 }

                                 if (
                              $config->get('config_error_display')) {
                                    echo 
                              '<b>' $error '</b>: ' $errstr ' in <b>' $errfile '</b> on line <b>' $errline '</b>';
                                 }

                                 if (
                              $config->get('config_error_log')) {
                                    
                              $log->write('PHP ' $error ':  ' $errstr ' in ' $errfile ' on line ' $errline);
                                 }

                                 return 
                              true;
                              }

                              // Error Handler
                              set_error_handler('error_handler'); 
                              Warum das der Fall ist, kann ich nicht sagen.

                              Aus diesem Grund habe ich für die IMAP-Anfrage den Error-Handler geändert.

                              PHP-Code:
                              set_error_handler(array(&$this"fakeErrorHandler"));
                              $inbox = @imap_open('foo-bar','foo','bar'); 
                              Da ich für diese Anfrage keinen Logeintrag oder Fehlerinformation benötige, habe ich einfach eine leere Methode dafür verwendet.
                              PHP-Code:
                              public function fakeErrorHandler()
                              {
                                  return 
                              true;

                              Wenn man es braucht, kann man danach einfach den alten Error-Handler wieder setzen.
                              PHP-Code:
                              set_error_handler("error_handler"); 
                              Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

                              Kommentar

                              Lädt...
                              X