Datei von Server zu Server will nicht
Beppo
- php
Hallo,
ich möchte per php eine datei von Server1 zu Server 2 karren. Leider gehts nicht. Das PDF wird in Hyroglythen auf dem Bildschirm dargestellt und im Zielverzeichnis ist es nicht zu finden.
$zielpfad = "/up/to/my/path";
if (file_exists($zielpfad)) {
$ch = curl_init($zielpfad."/meinPDF.pdf");
$ch = curl_init("http://otherserver.de/testPDF.pdf");
$zieldatei = fopen($zielpfad, "w");
curl_setopt($ch, CURLOPT_FILE, $zieldatei);
curl_setopt($ch, CURLOPT_TIMEOUT, 3600);
curl_exec($ch);
fclose($zieldatei);
echo("Der Download ist erfolgt");
} else {
echo("Der Pfad wurde nicht gefunden!");
}
exit;
Was mache ich falsch?
Beppo
Hello,
mal grundsätzlich ohne andere Aspekte:
Was soll das?
$ch = curl_init($zielpfad."/meinPDF.pdf");
$ch = curl_init("http://otherserver.de/testPDF.pdf");
Liebe Grüße
Tom S.
Hallo Beppo,
ich habe keine Ahnung von cURL, aber nach dem, was ich in der PHP Hilfe lese, einiges...
Ansonsten noch ein Hinweis für Beispiel-URLs: Dafür gibt's Vorgaben. Man verwendet example.org oder example.com, die sind dafür extra freigehalten (siehe RFC 2606)
Rolf
Hallo Rolf,
ich habe das Beispiel aus dem Netz von jemandem übernommen.
Ich glaub, ich such mal nach anderen Beispielen 😉
Beppo
D:\tmp>lwp-mirror http://www.mvv-muenchen.de/fileadmin/media/Dateien/3_Tickets_Preise/dokumente/TARIFPLAN_2017-Innenraum.PDF plan.pdf
D:\tmp>lwp-mirror https://www.mvv-muenchen.de/fileadmin/media/Dateien/3_Tickets_Preise/dokumente/TARIFPLAN_2017-Innenraum.PDF plan.pdf
Geht Beides bei mir. Guck mal, ob du die Ressource mit dem Browser kriegst, also dass nicht etwa der Port 80 bzw 443 oder der URL selbst blockiert ist über eine Firewall Policy.
Und in Sachen PHP ob alle Bibliotheken verfügbar sind. MfG
Ich habe jetzt mal versucht, es besser zu machen, aber das Ergebnis ist dasselbe:
$zielpfad = "/up/to/my/path";
if (file_exists($zielpfad)) {
$ch = curl_init("http://example.com/123.pdf");
$zieldatei = fopen($zielpfad."/321.pdf", "w");
curl_setopt($ch, CURLOPT_FILE, $zieldatei);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 3600);
curl_exec($ch);
curl_close($ch);
fclose($zieldatei);
echo("Der Download ist erfolgt");
} else {
echo("Der Pfad wurde nciht gefunden!");
}
exit;
Dieses beispiel habe ich übernommen von:
http://php.net/manual/de/curl.examples-basic.php
<?php
$ch = curl_init("http://www.example.com/");
$fp = fopen("example_homepage.txt", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
?>
Beppo
Hallo Beppo,
dieses Script funktioniert bei mir LOKAL - also ohne Zutun eines Webservers:
<?php
$zielpfad = "d:/temp/php";
if (file_exists($zielpfad)) {
$ch = curl_init("http://www.mvv-muenchen.de/fileadmin/media/Dateien/3_Tickets_Preise/dokumente/TARIFPLAN_2017-Innenraum.PDF");
if ($ch === false) echo "init lieferte FALSE\n";
$zieldatei = fopen($zielpfad."/innenraum.pdf", "w");
if ($zieldatei === false) echo "fopen lieferte FALSE";
curl_setopt($ch, CURLOPT_FILE, $zieldatei);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 3600);
$ex = curl_exec($ch);
if ($ex === false) {
echo "exec lieferte FALSE\n";
echo curl_error($ch)."\n";
}
curl_close($ch);
fclose($zieldatei);
echo("Der Download ist erfolgt");
} else {
echo("Der Pfad wurde nicht gefunden!");
}
exit;
Ich habe erfolgreich den Innenraumplan des MVV bekommen.
Was mir nicht gelungen ist, ist ein https-Download, da zeigt curl_error mir an, dass er Probleme mit dem Zertifikat hat. Keine Ahnung, habe ich jetzt nicht näher erforscht. Möglicherweise muss ich da noch was an meinem lokalen PHP konfigurieren.
Interessant für Dich kann das Error-Handling sein, bau's mal ein und guck was rauskommt.
Rolf
Hi Rolf,
Interessant für Dich kann das Error-Handling sein, bau's mal ein und guck was rauskommt.
War es. Hierdurch konnte ich nämlich herausfinden, dass die Datei keine Schreibrechte auf dem Server hatte. Ich habs geändert und nun läufts auch bei mir wie gewünscht. Dankeschön.
Beppo
Hallo Beppo,
MUUUUH - immer diese Fehler nach denen man als letztes schaut 😂
Rolf
Hallo Beppo,
MUUUUH - immer diese Fehler nach denen man als letztes schaut 😂
Wem sagst Du das? :-))
Beppo
Hallo Beppo,
ich vermute mal (schuß ins blaue), du willst hier Curl nutzen, weil (wie du selber sagst) du das irgendwo gefunden hast und für deine Aufgabe sinnvoll erscheint.
Da ich leider deinen genauen Anspruch nicht kenne aber vermute, dass du lediglich Dateien importieren willst, wäre Curl unnötig. (Curl ist zb. sinnvoll bei POST-Requests) In deinem Fall aber gibt ne Menge Alternativen zb. file_get_contents oder noch simpler readfile.
Gruss
Henry
Hi Henry,
Da ich leider deinen genauen Anspruch nicht kenne aber vermute, dass du lediglich Dateien importieren willst, wäre Curl unnötig. (Curl ist zb. sinnvoll bei POST-Requests) In deinem Fall aber gibt ne Menge Alternativen zb. file_get_contents oder noch simpler readfile.
Geb Dir recht, aber jetzt läufts auch mit curl. Danke dennoch Beppo