[PHP] Script - problem mit Safe_mode on und fread()
-
Hallo ihr lieben,
mal wieder wende ich mich vertrauensvoll mit einem kleinen PHP - Problem an euch
Ich habe ein Script geschriebne, was oer mail() dateien verschickt.
Funktioniert soweit auch ganz gut, allerdings:
Wenn ich es auf servern laufen lasse, wo safe_mode auf on ist, geht es nicht.
Denn fread darf mit safe_mode nicht ausgeführt werden... habt ihr andere ideen?
Es sollte auf jeden fall auch mit safe_mode on funktionieren.Für tipps und hilfe wäre ich sehr dankbar
Und nun noch nen stück code, damit ihr seht, wie ich es anhänge:
$Dateiname = "pdf/Datei.pdf"; $DateinameMail = "Dateiname.pdf"; $Trenner = md5(uniqid(time())); //Header vorher schon modifiziert, dies wird nur noch "angehängt" $Header .= "\n"; $Header .= "MIME-Version: 1.0"; $Header .= "\n"; $Header .= "Content-Type: multipart/mixed; boundary=$Trenner"; $Header .= "\n\n"; $Header .= "This is a multi-part message in MIME format"; $Header .= "\n"; $Header .= "--$Trenner"; $Header .= "\n"; $Header .= "Content-Type: text/plain"; $Header .= "\n"; $Header .= "Content-Transfer-Encoding: 8bit"; $Header .= "\n\n"; $Header .= "Titel der Email"; $Header .= "\n"; $Header .= "--$Trenner"; $Header .= "\n"; $Header .= "Content-Type: application/pdf; name=$DateinameMail"; $Header .= "\n"; $Header .= "Content-Transfer-Encoding: base64"; $Header .= "\n"; $Header .= "Content-Disposition: attachment; filename=$DateinameMail"; $Header .= "\n\n"; $Dateiinhalt .= fread(fopen($Dateiname, "r"), filesize($Dateiname)); //Fehler liegt in dieser Zeile !!!! $Header .= chunk_split(base64_encode($Dateiinhalt)); $Header .= "\n"; $Header .= "--$Trenner--";
P.S.: Ja die Datei existiert...
Bei bedarf kann ich auch noch die Fehlermeldung nennenLiebe grüsse
-
Ich bin mir nicht sicher ( verwende selbst keinen safe_mode):
Ist es nicht so, daß die Datei dem Benutzer gehören muß, der sie lesen will (richtig per uid) wenn safe_mode aktiviert ist.. Ein Leserecht reicht dann glaube ich nicht. sprich hilft ein
chown wwwrun dateiname.pdf # gemeint ist der apache-user
um das Problem zu lösen ?
Gruß Karsten
-
wegus schrieb:
Ich bin mir nicht sicher ( verwende selbst keinen safe_mode):
Ist es nicht so, daß die Datei dem Benutzer gehören muß, der sie lesen will (richtig per uid) wenn safe_mode aktiviert ist.. Ein Leserecht reicht dann glaube ich nicht. sprich hilft ein
chown wwwrun dateiname.pdf # gemeint ist der apache-user
um das Problem zu lösen ?
Gruß Karsten
Danke, ich denke das würde das problem lösen.
Nur das problem an der gesamten geschichte ist, dass die dateien per pdf automatisch erstellt werden (php - script) und immer mehr werden und andere namen haben.
D.H. ich müsste bei jeder neu erstellten PDF - Datei immer wieder chown ausführen, was ich aber nicht kann, da ich per Script keine Rechte dafür habe...Trotzdem danke schonmal für die antwort
Liebe grüsse
Edit:
Mittlerweile bin ich soweit dass er zumindest die datei einzulesen scheint. (Mit hilfe der Angabe der Direkten adresse http://www.domain.de/datei.pdf)
Allerdings nimmt filesize diesen pfad nicht. Fehlermeldung:
Warning: filesize(): Stat failed for http://domain.net/ordner/pdf/datei.pdf (errno=2 - No such file or directory) in /home/webspace/srv1/ws2/web/ordner/functions.inc.php on line 662
Allerdings: die Datei besteht und die Datei lässt sich auch normal per Browser anzeigen...
Liebe grüsse
-
Die PHP-Doku zu filesize() schrieb:
Diese Funktion ist nicht für remote Dateien geeignet, die zu prüfende Datei muss über das Dateisystem des Servers verfügbar sein.
Aber du könntest mal versuchen, die Datei erst in einen Buffer einzulesen - dann kannst du anschließend nachschauen, wie groß er ist
Vielleicht geht es aber auch eleganter
-
flenders schrieb:
Die PHP-Doku zu filesize() schrieb:
Diese Funktion ist nicht für remote Dateien geeignet, die zu prüfende Datei muss über das Dateisystem des Servers verfügbar sein.
Aber du könntest mal versuchen, die Datei erst in einen Buffer einzulesen - dann kannst du anschließend nachschauen, wie groß er ist
Vielleicht geht es aber auch eleganter
Das hab ich dann auch gemerkt
Ich hab eine Funktion geschrieben, die bei Remote - Dateien den Filesize berechnet.
Auf wunsch kann ich die auch gern hier posten...
Liebe grüsse