• 10-08-2018, 00:01:22
    #1
    Merhaba arkadaşlar, Curl veya file_get_contents ile çekilmek üzere api hizmeti yazdım. Fakat normal sunucularda çalışan curl localhostta çalışmıyor.
    CURLOPT_FOLLOWLOCATION komutunu FALSE yapınca 301 moved permanently hatasını veriyor, aksi takdirde api sunucusuna dahi bağlanmıyor gibi.
    Aklıma local iplerine engelli mi diye geldi fakat serverde engelli bir ip bulamadım. (PLESK Panel).

    Aşağıda 2 yoluda kullandım. Sondaki file_get_contents sorunsuz çalışıyor. fakat curl için bir çok yol denedim, en sonunda dayanamayıp bu halde bıraktım. Nereyi atlıyor olabilirim?


    Burada ise ilk sonuç Curl ile çekilen fakat boş veri çıkarıyor. Alttaki ise file_get_contents ile çekilen, curl'da aynı biçimde veri alması lazım.

  • 10-08-2018, 00:50:32
    #2
    openssl açmanız gerekiyor olabilir.

    https://stackoverflow.com/a/17249932
  • 10-08-2018, 13:48:53
    #3
    aCadir adlı üyeden alıntı: mesajı görüntüle
    openssl açmanız gerekiyor olabilir.

    https://stackoverflow.com/a/17249932
    Sağolasın ama zaten openssl ve allow_url_fopen açık. Ne yaptıysam localhost bu vds'den curl ile veri çekmedi. Napayım artık, localdan kullanan olursa file_get_contents fonksiyonunu kullansın
  • 10-08-2018, 19:08:30
    #4
    Bunu deneyin:
    https://stackoverflow.com/a/12715313
  • 10-08-2018, 20:48:49
    #5
    aCadir adlı üyeden alıntı: mesajı görüntüle
    Sağolasın, SSL doğrulamayı kapatmak için komut varmış.

    Benzer bir sorunla karşılaşan olursa ben tüm sunucularda sorunsuz çalışabilmesi için SSL doğrulamasının şarta göre kapanmasını istedim.

    function m_curl($url = null, $get = array(), $post = false){
        if(is_array($get) && count($get)){ $url = $url."?".http_build_query($get); }
        $ch = curl_init();
        if(empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on"){
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        }
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, $post ? true : false);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post ? $post : false);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; tr-TR; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
        curl_setopt($ch, CURLOPT_REFERER, $_SERVER['HTTP_HOST']);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $rt = curl_exec($ch);
        curl_close($ch);
        return $rt;
    }
  • 10-08-2018, 20:52:56
    #6
    Ref kısmına https://www.google.com yazar mısınız? Daha önce firewallden kaynaklı böyle yazınca çoğu site kabul ediyordu.
  • 10-08-2018, 20:56:14
    #7
    Misafir adlı üyeden alıntı: mesajı görüntüle
    Ref kısmına https://www.google.com yazar mısınız? Daha önce firewallden kaynaklı böyle yazınca çoğu site kabul ediyordu.
    Sağolasın, dediğinizi denemiştim ama işe yaramamıştı. Zaten çözümü aCadir arkadaşımız sayesinde buldum.