Achot: Fatal Error & Warning

Hallo,

seit ich mit meiner Seite zu All-Inkl gewechselt bin, erhalte ich folgende Fehlermeldung:

Warning: fopen(): Failed to enable crypto in /www/htdocs/xxx/include/lib/Swift-5.0.3/lib/classes/Swift/ByteStream/FileByteStream.php on line 138

Und einen Fatal Error

Uncaught exception 'Swift_IoException' with message 'Unable to open file for reading [https://example.com/AGBs.pdf]' in /www/htdocs/xxxxx/include/lib/Swift-5.0.3/lib/classes/Swift/ByteStream/FileByteStream.php:139 Stack trace: #0 /www/htdocs/xxxxx/include/lib/Swift-5.0.3/lib/classes/Swift/ByteStream/FileByteStream.php(86): Swift_ByteStream_FileByteStream->_getReadHandle() #1 /www/htdocs/xxxxx/include/lib/Swift-5.0.3/lib/classes/Swift/Mime/ContentEncoder/Base64ContentEncoder.php(39): Swift_ByteStream_FileByteStream->read(8192) #2 /www/htdocs/xxxxx/include/lib/Swift-5.0.3/lib/classes/Swift/Mime/SimpleMimeEntity.php(557): Swift_Mime_ContentEncoder_Base64ContentEncoder->encodeByteStream(Object(Swift_ByteStream_FileByteStream), Object(Swift_Transport_StreamBuffer), 0, 78) #3 /www/htdocs/xxxxx/include/lib/Swif in /www/htdocs/xxxxx/include/lib/Swift-5.0.3/lib/classes/Swift/ByteStream/FileByteStream.php on line 139

Hab zwar zwei Sachen im Web gefunden:

  1. http://stackoverflow.com/questions/32211301/ssl-error-ssl3-get-server-certificatecertificate-verify-failed
  2. https://github.com/swiftmailer/swiftmailer/issues/298

kann damit nicht wirklich etwas anfangen.

akzeptierte Antworten

  1. In der Zeile 134 - 150 steht folgendes

    /** Get the resource for reading */
        private function _getReadHandle()
        {
            if (!isset($this->_reader)) {
                if (!$this->_reader = fopen($this->_path, 'rb')) {
                    throw new Swift_IoException(
                        'Unable to open file for reading [' . $this->_path . ']'
                    );
                }
                if ($this->_offset <> 0) {
                    $this->_getReadStreamSeekableStatus();
                    $this->_seekReadStreamToPosition($this->_offset);
                }
            }
    
            return $this->_reader;
        }
    

    In Zeile 139 dieses:

    throw new Swift_IoException(
    
  2. Moin Achot,

    seit ich mit meiner Seite zu All-Inkl gewechselt bin, erhalte ich folgende Fehlermeldung:

    Warning: fopen(): Failed to enable crypto in /www/htdocs/xxx/include/lib/Swift-5.0.3/lib/classes/Swift/ByteStream/FileByteStream.php on line 138

    Und einen Fatal Error

    Uncaught exception 'Swift_IoException' with message 'Unable to open file for reading [https://example.com/AGBs.pdf]' in /www/htdocs/xxxxx/include/lib/Swift-5.0.3/lib/classes/Swift/ByteStream/FileByteStream.php:139 Stack trace: #0 /www/htdocs/xxxxx/include/lib/Swift-5.0.3/lib/classes/Swift/ByteStream/FileByteStream.php(86): Swift_ByteStream_FileByteStream->_getReadHandle() #1 /www/htdocs/xxxxx/include/lib/Swift-5.0.3/lib/classes/Swift/Mime/ContentEncoder/Base64ContentEncoder.php(39): Swift_ByteStream_FileByteStream->read(8192) #2 /www/htdocs/xxxxx/include/lib/Swift-5.0.3/lib/classes/Swift/Mime/SimpleMimeEntity.php(557): Swift_Mime_ContentEncoder_Base64ContentEncoder->encodeByteStream(Object(Swift_ByteStream_FileByteStream), Object(Swift_Transport_StreamBuffer), 0, 78) #3 /www/htdocs/xxxxx/include/lib/Swif in /www/htdocs/xxxxx/include/lib/Swift-5.0.3/lib/classes/Swift/ByteStream/FileByteStream.php on line 139

    Die Fehlermeldung bedeutet, dass die AGBs.pdf nicht über https mit fopen geöffnet werden kann, da "crypto" nicht eingeschaltet ist.

    Muss denn diese Datei zwingend über https gezogen werden oder liegt sie auf dem gleichen Webspace wie das Skript, was den Fehler wirft? Bei einem Zugriff übers Dateisystem brauchst du nämlich keine Crypto.

    Viele Grüße
    Robert

    1. Hallo Robert,

      Die Fehlermeldung bedeutet, dass die AGBs.pdf nicht über https mit fopen geöffnet werden kann, da "crypto" nicht eingeschaltet ist. Muss denn diese Datei zwingend über https gezogen werden oder liegt sie auf dem gleichen Webspace wie das Skript, was den Fehler wirft? Bei einem Zugriff übers Dateisystem brauchst du nämlich keine Crypto.

      danke für deine Erklärung. Nein, die Datei müsste nicht zwingend über https gezogen werden, allerdings läuft meine komplette Seite über https. Ich wüsste nicht, wie ich nur diese Datei davon ausschließen kann.

      EDIT: Die Datei liegt im gleichen Webspace und im selber Ordner wo auch die restlichen Daten liegen.

      1. Moin Achot,

        EDIT: Die Datei liegt im gleichen Webspace und im selber Ordner wo auch die restlichen Daten liegen.

        Und was spricht dann gegen fopen('AGBs.pdf')?

        Viele Grüße
        Robert

        1. Hallo Robert,

          Und was spricht dann gegen fopen('AGBs.pdf')?

          das geht leider nicht, denn das Script meckert an dieser Stelle, beim E-Mail Versand:

          ->attach(Swift_Attachment::fromPath('https://www.example.com/rechtliches/AGB.pdf'))
          ->attach(Swift_Attachment::fromPath('https://www.example.com/rechtliches/Widerrufsbelehrung.pdf'))
          

          Hier braucht er leider eine feste URL. Zumindest in meinem Test.

          1. Hallo Achot,

            Und was spricht dann gegen fopen('AGBs.pdf')?

            das geht leider nicht, denn das Script meckert an dieser Stelle, beim E-Mail Versand:

            ->attach(Swift_Attachment::fromPath('https://www.example.com/rechtliches/AGB.pdf'))
            ->attach(Swift_Attachment::fromPath('https://www.example.com/rechtliches/Widerrufsbelehrung.pdf'))
            

            Hier braucht er leider eine feste URL. Zumindest in meinem Test.

            Das ist aber merkwürdig, denn angeblich kann der Swift-Mailer das. Zeig doch mal bitte die Fehlermeldung, wenn du eine Datei aus dem lokalen Dateisystem anhängen möchtest.

            Viele Grüße
            Robert

            1. Hallo Robert,

              Das ist aber merkwürdig, denn angeblich kann der Swift-Mailer das. Zeig doch mal bitte die Fehlermeldung, wenn du eine Datei aus dem lokalen Dateisystem anhängen möchtest.

              wenn ich es ohne https://www... mache, erhalte ich folgende Meldung

              Warning: fopen(): open_basedir restriction in effect. File(/rechtliches/AGB.pdf) is not within the allowed path(s): xxxxxx in /include/lib/Swift-5.0.3/lib/classes/Swift/ByteStream/FileByteStream.php on line 138

              fopen(/rechtliches/AGB.pdf): failed to open stream: Operation not permitted

              Fatal error: Uncaught exception 'Swift_IoException' with message 'Unable to open file for reading [/rechtliches/AGB.pdf]' in

              EDIT: Ah ich muss den / weg nehmen, dann geht es auch. Vielen Dank für deine Hilfe und einen schönen Abend.

              1. Hallo Achot,

                fopen(/rechtliches/AGB.pdf): failed to open stream: Operation not permitted

                Fatal error: Uncaught exception 'Swift_IoException' with message 'Unable to open file for reading [/rechtliches/AGB.pdf]' in

                EDIT: Ah ich muss den / weg nehmen, dann geht es auch. Vielen Dank für deine Hilfe und einen schönen Abend.

                Wenn du auf Dateien über das Dateisystem zugreifst, musst du natürlich die Regeln des Dateisystems beachten.

                Viele Grüße
                Robert