curl_exec () সর্বদা মিথ্যা প্রদান করে


113

আমি কোডের এই সহজ টুকরোটি লিখেছি:

$ch = curl_init();

//Set options
curl_setopt($ch, CURLOPT_URL, "http://www.php.net");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$website_content = curl_exec ($ch);

আমার ক্ষেত্রে $website_contentহিসাবে আসে false। কেউ কি ভুল পরামর্শ দিতে পারে এমন পরামর্শ / পরামর্শ দিতে পারে?


8
curl_error()ত্রুটি বিশদ বিশদ জন্য পরামর্শ এবং এগুলি এখানে পোস্ট করুন, দয়া করে।
লিনাস ক্লিন

@ লিনাসক্লেন আপনি যদি উত্তর হিসাবে কার্ল_অরার () পোস্ট করেন তবে আমি এটিকে উপস্থাপন করব কারণ এটি আমার সমস্যাটি কি তা দেখার অনুমতি দিয়েছে।
জিলস রবার্টস

সমস্যাটা আসলে কী ছিল? কোন ত্রুটি curl_error()প্রকাশ পেয়েছে?
শোদেব

উত্তর:


241

ত্রুটি পরীক্ষা করা এবং পরিচালনা করা প্রোগ্রামারটির বন্ধু। সিআরএল ফাংশনগুলি আরম্ভ এবং সম্পাদন করে ফেরতের মানগুলি পরীক্ষা করুন। curl_error()এবং curl_errno()ব্যর্থতার ক্ষেত্রে আরও তথ্য থাকবে:

try {
    $ch = curl_init();

    // Check if initialization had gone wrong*    
    if ($ch === false) {
        throw new Exception('failed to initialize');
    }

    curl_setopt($ch, CURLOPT_URL, 'http://example.com/');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt(/* ... */);

    $content = curl_exec($ch);

    // Check the return value of curl_exec(), too
    if ($content === false) {
        throw new Exception(curl_error($ch), curl_errno($ch));
    }

    /* Process $content here */

    // Close curl handle
    curl_close($ch);
} catch(Exception $e) {

    trigger_error(sprintf(
        'Curl failed with error #%d: %s',
        $e->getCode(), $e->getMessage()),
        E_USER_ERROR);

}

* curl_init() ম্যানুয়াল পদ বলে:

সাফল্যের জন্য একটি ক্রিয়াল হ্যান্ডেল ফেরত দেয়, ত্রুটিতে মিথ্যা

আমি ফাংশনটি ফিরে FALSEআসার জন্য পর্যবেক্ষণ করেছি যখন আপনি এর $urlপ্যারামিটারটি ব্যবহার করেন এবং ডোমেনটি সমাধান করা যায় না। যদি প্যারামিটারটি অব্যবহৃত থাকে তবে ফাংশনটি আর ফিরে আসতে পারে না FALSE। যাইহোক, সর্বদা এটি পরীক্ষা করুন, যেহেতু ম্যানুয়ালটিতে স্পষ্টভাবে বলা হয়নি যে "ত্রুটিগুলি" আসলে কি।


9
+1: curl_execমিথ্যা রিটার্নে পিএইচপি-তে কার্লের জন্য সহজ এবং সরল সমস্যা-শ্যুটিং । - পিএইচপি উদাহরণে কার্ল
ভারবোজ

হাঁ। আসলে এটি অনেক দিন আগে খুঁজে পেয়েছিল। যদিও উত্তরের জন্য ধন্যবাদ :)
অদিত্যা

7
সমস্যা নেই. এর জন্য একটি পুনর্জীবন ব্যাজ পেয়েছেন :-) গ্রহণ করার জন্য ধন্যবাদ।
লিনাস ক্লিন

@ মার্কেরিক্স ভাল, তার নাম লিনাস: পি
নিনো একপা্যাক

এবং curl_close ($ ch) ভুলবেন না;
রফিক বারী

10

আমার ক্ষেত্রে আমার এইগুলি সেট করা VERIFYHOSTএবং এটি VERIFYPEERকরা দরকার false:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

কল করার আগে curl_exec($ch)

কারণ আমি স্ব-নির্ধারিত শংসাপত্র সহ দুটি বিকাশ পরিবেশের মধ্যে কাজ করছি। বৈধ সংশাপত্র সাথে সেট করার কোন প্রয়োজন নেই VERIFYHOSTএবং VERIFYPEERকরতে falseকারণ curl_exec($ch)পদ্ধতি কাজ এবং প্রতিক্রিয়া আশা ফিরে আসবে।


এটি আসলে আমার পক্ষে কার্যকর ছিল। বখশিশের জন্য ধন্যবাদ!
n8adams

3

গতকাল আমার সাথে এটি ঘটেছিল এবং আমার ক্ষেত্রে এটি ছিল কারণ আমি কোনও API এর সাথে যোগাযোগের জন্য কিছু মডিউল বিকাশের জন্য একটি পিডিএফ ম্যানুয়াল অনুসরণ করছিলাম এবং কোনও অদ্ভুত কারণে লিঙ্কটি সরাসরি ম্যানুয়াল hyphenথেকে অনুলিপি করার সময়, অনুলিপিযুক্ত লিঙ্কটি থেকে অন্যরকম ছিল এনকোডিং এবং সুতরাং এটি curl_exec()সর্বদা ফিরে আসছিল falseকারণ এটি সার্ভারের সাথে যোগাযোগ করতে অক্ষম।

অবশেষে চরিত্রগুলিতে বিচ্ছিন্নতা বুঝতে আমার কয়েক ঘন্টা সময় লেগেছিল:

https://www.e‐example.com/api
https://www.e-example.com/api

যতবারই আমি ব্রাউজার থেকে সরাসরি লিঙ্কটি অ্যাক্সেস করার চেষ্টা করেছিলাম তেমন কিছুতে রূপান্তরিত করে https://www.xn--eexample-0m3d.com/api

এটি আপনার কাছে সমান বলে মনে হতে পারে তবে আপনি যদি hyphens এখানে এনকোডিং পরীক্ষা করেন তবে আপনি দেখতে পাবেন যে প্রথমটি hyphenহ'ল ইউনিকোড অক্ষর U + 2010 এবং অন্যটি হ'ল U + 002D

আশা করি এটি কাউকে সাহায্য করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.