Fatal Error & Warning
Achot
- php
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:
kann damit nicht wirklich etwas anfangen.
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(
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
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.
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
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.
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
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.
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