Calendar - *.ics Datei via PHP downloaden

Status
Für weitere Antworten geschlossen.

springboy69

Benutzer
Mitglied seit
10. Jan 2010
Beiträge
8
Punkte für Reaktionen
0
Punkte
7
Hallo zusammen und ein gutes Neues Jahr.

von meinem Calendar Konto kann ich ohne weiteres über den Browser die entsprechende *.ics Datei downloaden.
Dazu einfach https://<meineDS>/caldav/<User>/xyzabc/ eingeben und schon geht ein Anmeldefenster für Benutzernamen und Kennwort auf. Die Datei wird gespeichert - alles funtzt.
Ebenso mit https://<Benutzer>:<Kennwort>@<meineDS>/caldav/<User>/xyzabc/ - damit entsprechend ohne das Anmeldefenster.

Nun möchte ich dies aber nicht "manuell" ausführen, sondern über ein PHP Script. Die soll die Datei herunter laden und in einem Verzeichnis als schedule.ics speichern.
Ich habe dies mit:

$meinedatei = file_get_contents('https://<Benutzer>:<Kennwort>@<meineDS>/caldav/<User>/xyzabc/')
$meinedatei = file('https://<Benutzer>:<Kennwort>@<meineDS>/caldav/<User>/xyzabc/')

versucht. Die Variable bleibt immer leer.

Nun bin ich "nur" ein ambitionierter Hobby-Programierer - deshalb komme ich hier auch nach stundenlanger Recherche im Netz nicht weiter.

Ich freue mich über jeden Tipp.

Grüße
 

4bob

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
604
Punkte für Reaktionen
1
Punkte
38
Hi,

$meinedatei = file_get_contents('https://<Benutzer>:<Kennwort>@<meineDS>/caldav/<User>/xyzabc/')

Bleibt die Variable leer, stimmt die URL nicht oder file_get_contents kann es in dieser Form nicht verarbeiten.
Der Aufruf ist nicht mit dem Browser vergleichbar, die URL wurde sicher umgeschrieben. Mein CalDav Server erwartet bspw. immer ein ?export am Ende der URL.
Schau mal in die Logs: /var/log/synocal_caldav.log wie wird deine Anfrage protokolliert?

Du schreibst explizit php ?? Wenn es dir nur um das Erstellen der schedule.ics geht ?? per Script sollte das recht schnell auch mit wget umsetzbar sein:
Rich (BBCode):
wget --no-check-certificate --http-user=MeinUser --http-password=MeinPasswort https://<meineDS>/caldav/<User>/xyzabc/ -O /volumeX/caldav/schedule.ics

Ist php aber immer noch dein Favorit kannst du diesen Aufruf auch dort platzieren:

Rich (BBCode):
<?php
exec("wget --no-check-certificate --http-user=MeinUser --http-password=MeinPasswort https://<meineDS>/caldav/<User>/xyzabc/ -O /volumeX/caldav/schedule.ics")
?>

Noch immer nicht passend :confused: Dann gibts noch cURL; das verfügt über deutlich mehr Optionen mit (CURLOPT_USERPWD und CURLOPT_HTTPAUTH).

Bob
 

springboy69

Benutzer
Mitglied seit
10. Jan 2010
Beiträge
8
Punkte für Reaktionen
0
Punkte
7
Hallo Bob,

Vielen Dank für deine Hilfe.
Beide Varianten funktionieren ohne Probleme. Du hast mir sehr geholfen. :D
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat