Announcement

Collapse
No announcement yet.

Seltsamer Effekt beim Lesen einer Datei über CURL

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Seltsamer Effekt beim Lesen einer Datei über CURL

    Gerade habe ich einen ziemlich unerklärlichen Effekt, der schon dran zweifeln lässt, ob das alles so mit rechten Dingen zugeht. Hat irgendwer vielleicht Ideen dazu?

    Ich möchte eine Datei lesen über:

    Code:
    $handle = curl_init('https://www.testblabla.de/soundso.txt');
    curl_setopt($handle, ...)
    $tab = curl_exec($handle);
    Danach liefert mir
    Code:
    echo curl_error($handle);
    die Meldung: "SSL certificate problem: unable to get local issuer certificate"

    Zu diesem Fehler habe ich folgenden Fix gefunden: Zertifikat von "http://curl.haxx.se/ca/cacert.pem" downloaden und über die php.ini verknüpfen. Leider hat das keinen Effekt. Alternativ sagt selbige Empfehlung kann auch auf den Eintrag in der ini verzichtet werden und anstatt dessen über

    Code:
    curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, $certificate_location);
    curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, $certificate_location);
    direkt vor dem curl_exec die entsprechende Verknüpfung hergestellt werden. Das habe ich ausprobiert und es funktioniert. Das Problem daran: Ich hatte versehentlich den Pfad falsch geschrieben! Der Pfad, den ich in $certificate_location drinstehen hatte, existiert überhaupt nicht! Da kann ich irgendeinen beliebigen, nicht existierenden Müllpfad reinpacken und es führt dazu, dass der oben gesagte Fehler nicht mehr kommt und die Datei sauber eingelesen wird. Trotz des nicht existierenden Pfads würde er auch in folgende Bedingung NICHT reingehen.

    Code:
    if(curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, $gibts_gar_nicht_pfad) === false)
    Klingt das komisch für Euch? Für alle Ideen bin ich dankbar. Wie gesagt, es funktioniert zwar aber das hätte ich dann doch ganz gern aufgeklärt.

  • #2
    Nur mal eine kurze Vorab-Info: Ich habe noch ein bisschen weitergesucht und es scheint so zu sein, dass die Web-Seite, auf der ich die oben genannte Verwendung von CURLOPT_SSL_VERIFYHOST und CURLOPT_SSL_VERIFYPEER gefunden habe, ziemlicher Müll ist. Der Parameter, in dem ich den Pfad drinstehen habe, kann scheinbar nur die Werte 0, 1, 2 annehmen, ist also gar nicht für den Pfad gedacht. Leider habe ich jetzt keine Zeit mehr mich näher damit zu beschäftigen, aber ich werde mir das heute Abend nochmal genauer anschauen.

    Comment


    • #3
      Leider bin ich noch nicht deutlich weitergekommen. Also die Sache mit dem Pfad scheint jedenfalls ein Holzweg zu sein. Und das einbinden des neusten cacert.pem in die php.ini führt nicht zum Erfolg. Gemacht habe ich folgendes:

      https://stackoverflow.com/questions/...er-certificate

      Relating to 'SSL certificate problem: unable to get local issuer certificate' error. It is important to note that this applies to the system sending the CURL request, and NOT the server receiving the request.
      1. Download the latest cacert.pem from https://curl.haxx.se/ca/cacert.pem
      2. Add the following line to php.ini: (if this is shared hosting and you don't have access to php.ini then you could add this to .user.ini in public_html).

        curl.cainfo="/path/to/downloaded/cacert.pem"
      Da kann man ja eigentlich nicht viel bei falsch machen.

      Falls noch irgendwer irgendeine Idee oder Ansatz hat, gerne raus damit :-)

      Ich habe mir jetzt erstmal damit beholfen, dass ich in meiner lokalen Umgebung den Check über oben genannte Parameter deaktiviere:

      Code:
      if($sys_environment_local_id)
      {
       curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, 0);
       curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, 0);
      }

      Comment

      Working...
      X