Her şeyi yankılanan cURL devre dışı bırakılması, 'erişim ihlali' atıyor

1 Cevap php

Ben (IIS) PHP kodu aşağıdaki satırları gibi bir şey var:

$service_url = 'http://some-restful-client/';
$curl = curl_init($service_url);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$curl_response = @curl_exec($curl);
curl_close($curl);

Bu yürütürken aşağıdaki özel durum almak

PHP 010AD1C0 bir erişim ihlali karşılaştı

Satır curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); çıkarırken, kod gayet yürütüyor. I ext/php_curl.dll Benim IIS hesabının haklarını okudum vermiştir.

Herhangi bir ipucu, ya da emin diken diken edecek bu çevrede başka bir şekilde tepki echo'ing değil mi?

1 Cevap

Bir alternatif yerine düzelene PHPs izle fonksiyonlarını kullanmak olacaktır

http://www.php.net/manual/en/ref.stream.php

Sizin kod gibi bir şey olur

$url = "http://some-restful-client/";

$params = array('http' => array(
    'method' => "GET",
    ));

$ctx = stream_context_create($params);

$fp = @fopen($url, 'rb', false, $ctx);

if (!$fp)
{
    throw new Error("Problem with ".$url);
}

$response = @stream_get_contents($fp);

if ($response === false)
{
    throw new Error("Problem reading data from ".$url);
}

echo $response //this is the contents of your request;

Sen 4> = 4.3.0 ya da PHP 5 Tho PHP kullanarak gerekir

GÜNCELLEME:

Senin için hızlı bir sınıfa bu sarılmış. Bunu kullanmak için, aşağıdaki gibi bir şey yapın

$hr = new HTTPRequest("http://someurl.com", "GET");

try
{
    $data = $hr->send();

    echo $data;
}
catch (Exception $e)
{
    echo $e->getMessage();
}

İşte sınıfının kodudur. Siz de buna göre yazılan veri ve başlıkları ayarlamak için yapıcı 3. ve 4. parametreleri veri geçebilir. Not post verileri bir dize değil bir dizi olmalıdır, başlıkları tuşları başlığının adı olan bir dizi olmalıdır

Bu yardımcı olur umarım!

<?php
/**
 * HTTPRequest Class
 *
 * Performs an HTTP request
 * @author Adam Phillips
 */
class HTTPRequest
{
    public $url;
    public $method;
    public $postData;
    public $headers;
    public $data = "";

    public function __construct($url=null, $method=null, $postdata=null, $headers=null)
    {
        $this->url = $url;
        $this->method = $method;
        $this->postData = $postdata;
        $this->headers = $headers;          
    }

    public function send()
    {
        $params = array('http' => array(
                  'method' => $this->method,
                  'content' => $this->data
               ));

        $headers = "";

        if ($this->headers)
        {
            foreach ($this->headers as $hkey=>$hval)
            {
                $headers .= $hkey.": ".$hval."\n";
            }
        }

        $params['http']['header'] = $headers;

        $ctx = stream_context_create($params);

        $fp = @fopen($this->url, 'rb', false, $ctx);

        if (!$fp)
        {
            throw new Exception("Problem with ".$this->url);
        }

        $response = @stream_get_contents($fp);

        if ($response === false)
        {
            throw new Exception("Problem reading data from ".$this->url);
        }

        return $response;
    }
}
?>