পিএইচপি ফাইল_জেট_কন্টেন্টস () রিটার্ন দেয় "প্রবাহ খুলতে ব্যর্থ হয়েছে: এইচটিটিপি অনুরোধ ব্যর্থ হয়েছে!"


91

পিএইচপি কোড থেকে url কল করতে আমার সমস্যা হচ্ছে। আমার পিএইচপি কোড থেকে কোয়েরি স্ট্রিং ব্যবহার করে আমাকে একটি পরিষেবা কল করতে হবে। আমি যদি ব্রাউজারে ইউআরএল টাইপ করি তবে এটি ঠিক আছে, তবে আমি কল করার জন্য যদি ফাইল-গেট-সামগ্রী () ব্যবহার করি তবে আমি পাই:

সতর্কতা: ফাইল-গেট-সামগ্রী (HTTP: // ....) প্রবাহ খুলতে ব্যর্থ: HTTP অনুরোধ ব্যর্থ হয়েছে! HTTP / 1.1 202 এতে স্বীকৃত ...

আমি যে কোডটি ব্যবহার করছি তা হ'ল:

$query=file_get_contents('http://###.##.##.##/mp/get?mpsrc=http://mybucket.s3.amazonaws.com/11111.mpg&mpaction=convert format=flv');
echo($query);

আমি যেমন বলেছি - ব্রাউজার থেকে কল করুন এবং এটি ঠিক কাজ করে। কোনও পরামর্শ?

আমি আরও একটি ইউআরএল দিয়ে চেষ্টা করেছি যেমন:

$query=file_get_contents('http://www.youtube.com/watch?v=XiFrfeJ8dKM');

এটি ঠিকঠাক কাজ করে ... ... আমি যে ইউআরএলটি কল করতে চাইছি http://তাতে কি এটির দ্বিতীয়টি থাকতে পারে?

উত্তর:


111

সিআরএল ব্যবহার করার চেষ্টা করুন।

<?php

$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'http://###.##.##.##/mp/get?mpsrc=http://mybucket.s3.amazonaws.com/11111.mpg&mpaction=convert format=flv');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Your application name');
$query = curl_exec($curl_handle);
curl_close($curl_handle);

?>

11
এটি বাস্তবিক জটিল যখন অ্যাম্পারস্যান্ডগুলির মধ্যে থাকে complicated
খ্রিস্টান

4
@ খ্রিস্টিয়ান, আপনি কি আরও বিস্তারিত বলতে পারবেন?
ভনউবিশ

4
প্রত্যেকেরই সিআরএল ইনস্টল নেই (তবে হওয়া উচিত)। সিআরএল নিশ্চিত যে বহুগুণ দ্রুত, তবে ফাইল_জেট_কন্টেন্টগুলি যে ধীরে ধীরে হয় না, এবং যখনই আপনি এটি ব্যবহার করেন তখন সমস্ত বিকল্প মনে রাখার প্রয়োজন নেই।
খ্রিস্টান

4
এটি CURLOPT_USERAGENTআমার ক্ষেত্রে খুব গুরুত্বপূর্ণ ছিল, ধন্যবাদ!
ইমোলেটিলি

আমি বিশ্বাস করি যে আমার সমস্যাটি সময়োপযোগী হওয়ার সাথে সাথে ছিল এবং এটি এটি সংশোধন করেছে। ধন্যবাদ!
evadecaptcha

28

ওপি-তে আমার একই ত্রুটি ছিল এবং এটি ছিল আমার সমস্যা - যুক্তিগুলির ফাঁকে। urlencode()জিইটি পরামিতিগুলিতে সমস্যার সমাধান হয়েছে।
ওয়াল্ট ডাব্লু

আপনি যদি সিআরএল সমাধানটি ব্যবহার করতে না চান তবে এইটি কাজ করে! পরামিতিগুলিতে ইউআরএলকনোড ব্যবহার করুন।
অ্যারন গং

এটিই এই সমস্যার আসল সমাধান।
হেনরিক পিটারসন

23
<?php

$lurl=get_fcontent("http://ip2.cc/?api=cname&ip=84.228.229.81");
echo"cid:".$lurl[0]."<BR>";


function get_fcontent( $url,  $javascript_loop = 0, $timeout = 5 ) {
    $url = str_replace( "&amp;", "&", urldecode(trim($url)) );

    $cookie = tempnam ("/tmp", "CURLCOOKIE");
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
    curl_setopt( $ch, CURLOPT_ENCODING, "" );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );    # required for https urls
    curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
    curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout );
    curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
    $content = curl_exec( $ch );
    $response = curl_getinfo( $ch );
    curl_close ( $ch );

    if ($response['http_code'] == 301 || $response['http_code'] == 302) {
        ini_set("user_agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");

        if ( $headers = get_headers($response['url']) ) {
            foreach( $headers as $value ) {
                if ( substr( strtolower($value), 0, 9 ) == "location:" )
                    return get_url( trim( substr( $value, 9, strlen($value) ) ) );
            }
        }
    }

    if (    ( preg_match("/>[[:space:]]+window\.location\.replace\('(.*)'\)/i", $content, $value) || preg_match("/>[[:space:]]+window\.location\=\"(.*)\"/i", $content, $value) ) && $javascript_loop < 5) {
        return get_url( $value[1], $javascript_loop+1 );
    } else {
        return array( $content, $response );
    }
}


?>

4
কোডটির জন্য ধন্যবাদ, দেখে মনে হচ্ছে আপনি এটিটি পেয়েছেন: php.net/manual/en/ref.curl.php মূল সমস্যাটি হ'ল ফাংশন কলটি get_urlআসলে হওয়া উচিত get_fcontentযেহেতু আপনি নিজেই ফাংশনের নাম পরিবর্তন করেছেন। এটি আসলে একটি পুনরাবৃত্তির ফাংশন কল যা কিছু পরামিতি পরিবর্তন করে URL সামগ্রীগুলি পুনরায় পেতে চেষ্টা করে get
এসএসএইচ এই

তুমি বুঝতে পেরেছ! https চেষ্টা করছিল এবং প্রত্যাখ্যান করা হচ্ছে। আপনি এটি পেরেক। আপলোড করা;)
টনি গিল

21

file_get_contents()মোড়কগুলি ব্যবহার করে fopen(), সুতরাং এটি allow_url_fopenphp.ini এর মধ্যে বিকল্পের মাধ্যমে URL- এ অ্যাক্সেস করা থেকে বিরত ।

এই বিকল্পটি চালু করতে বা সিআরএল নামে একটি বিকল্প পদ্ধতি ব্যবহার করার জন্য আপনাকে আপনার php.ini পরিবর্তন করতে হবে - এখন পর্যন্ত সর্বাধিক জনপ্রিয় এবং আপনি যা করতে চেষ্টা করছেন তা করার জন্য সত্যনিষ্ঠ, মানক উপায়।


কিছুই নয়, কেবলমাত্র তিনি লক্ষ্য file_get_contents()করেছেন যে তিনি একটি অন্য ইউআরএল নিয়ে কাজ করেছেন। যাইহোক, এটি অন্যদের জন্য এখনও এই সমস্যাটি রয়েছে good
মাইকেল ওয়েলস

হ্যাঁ, আমি অন্যান্য বিকল্পগুলির দিকে নজর রেখে দেখেছি যে সিআরএল হ'ল মানক উপায় কিন্তু এটি সহজ হওয়ায় এটি চেষ্টা করেছি এবং অন্যান্য ইউআরএলগুলির সাথে কাজ করেছি, আমি মনে করি ইনসাল সিআরএল-এ অ্যাপাচি পুনরায় চালু করতে হবে? এবং এই (অপর এক প্রশ্নের) কিভাবে করতে হবে আউট নাকিসুরে কথা চিত্রে ... আপনার দ্রুত সাড়া দেওয়ার জন্য ধন্যবাদ
undefined

11

আপনাকে অনুরোধটি সহ কিছু তথ্য প্রেরণ করতে হবে।

এটা চেষ্টা কর,

$opts = array('http'=>array('header' => "User-Agent:MyAgent/1.0\r\n")); 
//Basically adding headers to the request
$context = stream_context_create($opts);
$html = file_get_contents($url,false,$context);
$html = htmlspecialchars($html);

এটি আমার পক্ষে কাজ করেছে


4
এটি আমার জন্যও কাজ করেছিল! দেখে মনে হচ্ছে এটির কোনও এজেন্টের দরকার ছিল
ব্রায়ান

যদি ইউআরএলটি সঠিকভাবে এনকোড করা মনে হয়, তবে এটি খুব ভাল সমস্যা হতে পারে। কিছু সাইট 'ব্যবহারকারী-এজেন্ট' এর উপরেও সীমাবদ্ধ থাকবে, সম্ভবত 'স্বীকারও করুন'।
জহমিক

4
সুপার উত্তর। এটিকে শীর্ষে উন্নীত করার পক্ষে ভোট দিন। সব পিএইচপি এবং https অনুরোধের জন্যও কাজ করেছেন। মাত্র দুটি অতিরিক্ত লাইন কোড। যদি ভাগ করা সার্ভার কার্ল সরবরাহ করে? এটি খুব সহায়ক।
এনডাসাসার্স

10

আমি লক্ষ্য করেছি যে আপনার ইউআরএল এর স্পেস রয়েছে। আমি মনে করি এটি সাধারণত খারাপ জিনিস। এর সাথে URL টি এনকোড করার চেষ্টা করুন

$my_url = urlencode("my url");

এবং তারপরে ফোন করা

file_get_contents($my_url);

এবং দেখুন আপনার ভাগ্য ভাল আছে কিনা।


4

আমি একই সমস্যা পেয়েছি, আমি ইউটিউব ইউআরএল পার্স করেছি। কোডটি হ'ল;

$json_is = "http://gdata.youtube.com/feeds/api/videos?q=".$this->video_url."&max-results=1&alt=json";
$video_info = json_decode ( file_get_contents ( $json_is ), true );     
$video_title = is_array ( $video_info ) ? $video_info ['feed'] ['entry'] [0] ['title'] ['$t'] : '';

তারপরে আমি বুঝতে পারি যে $this->video_urlসাদা স্থান অন্তর্ভুক্ত। আমি এটি ব্যবহার করে সমাধান করেছি trim($this->video_url)

সম্ভবত এটি আপনাকে সাহায্য করবে। শুভকামনা


3

আমি প্যারামিটারগুলি (এমপিএশন, ফর্ম্যাট) সম্পর্কে নিশ্চিত নই, যদি সেগুলি অ্যামাজনওয়াস পৃষ্ঠার জন্য নির্দিষ্ট করা হয় বা ##। ##।

Urlncode () url করার চেষ্টা করুন to


ধন্যবাদ - এগুলি মিডিয়াপ্লাগ উদাহরণের জন্য প্যারাম। যদি আমি urlncode করি তবে এটি এখনও কাজ করে না - আমি ত্রুটির মধ্যে একটি খুব গার্ল্ড url পাই ... ??
undefined

আপনার কেবল প্যারামিটার স্ট্রিংটি এনকোডিং করা উচিত: "রূপান্তর বিন্যাস" "রূপান্তর% 20 ফর্ম্যাট" (অথবা বিকল্পভাবে "রূপান্তর + ফর্ম্যাট") হওয়া উচিত।
বোবিনস

2
$query=file_get_contents('http://###.##.##.##/mp/get?' . http_build_query(array('mpsrc' => 'http://mybucket.s3.amazonaws.com/11111.mpg&mpaction=convert format=flv')));

2

আমি একই সমস্যা পেয়েছি।

সময় শেষ হওয়ার কারণে!

সময়সীমা এভাবে নির্দেশ করা যেতে পারে:

$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => "POST",
        'content' => http_build_query($data2),
        'timeout' => 30,
    ),
);
$context = stream_context_create($options); $retour =
$retour = @file_get_contents("http://xxxxx.xxx/xxxx", false, $context);

LOL যে আমার সমস্যা স্থির, আপনাকে অনেক ধন্যবাদ!
নিগগো

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