PHP cURL ile Sorunları ne adımlar atın mı?

2 Cevap php

Hemen her çalışan bir PHP programcısı kredi kartı ödeme işlemleri, hain ekran kazıma, ya da in-arasında bir şey için olsun, ham HTTP istekleri göndermek için CURL kullanmak zorunda karşı karşıya kalmıştır.

PHP programcıları bir araya neredeyse herhangi bir forum can't get the cURL functions to do what they want insanların büyük bir numarası vardır.

CURL sizin için çalışmıyor, ne sorun giderme teknikleri bunu neden çalışmadığını anlamaya kullanabilirim? PHP'nin kıvırmak uygulanması ile ne garip gotchas içine çalıştırmak? Birisi bir forumunda bir "halp MY CURL IZ KIRIK" sorusunu, onların isteği neden çalışmadığını anlamaya almak adımlar nelerdir? Sorarsa

2 Cevap

Ben CURLINFO_HEADER_OUT seçeneği çok yararlı buluyorum.

<?php
$curl = curl_init('http://www.php.net');

curl_setopt($curl, CURLOPT_HEADERFUNCTION, 'dbg_curl_data');
curl_setopt($curl, CURLOPT_WRITEFUNCTION, 'dbg_curl_data');
curl_setopt($curl, CURLINFO_HEADER_OUT, true);

curl_exec($curl);

echo '<fieldset><legend>request headers</legend>
  <pre>', htmlspecialchars(curl_getinfo($curl, CURLINFO_HEADER_OUT)), '</pre>
</fieldset>';

echo '<fieldset><legend>response</legend>
  <pre>', htmlspecialchars(dbg_curl_data(null)), '</pre>
</fieldset>';

function dbg_curl_data($curl, $data=null) {
  static $buffer = '';

  if ( is_null($curl) ) {
    $r = $buffer;
    $buffer = '';
    return $r;
  }
  else {
    $buffer .= $data;
    return strlen($data);
  }
}

Aslında, (php) CURL asla kullanmayın. PHP akımı api çok kıvrımlara ve de POST verilerini kullanılabilir. Wez Furlong bu konuda bir makale var.

Bunu kullanmak için olsaydı? Ben (E_ALL rapor ayarını hatası) tüm iletileri açmadan ile başlamak istiyorum. Ben PHP Ben hata mesajları ne gerek söyle olmadığını fark ederseniz, ben muhtemelen aslında neler olup bittiğini görmek için bir proxy yaklaşım kullanmak istiyorum. Gibi bir şey içeren yerel bir php sayfası hedef url değiştirme

<?php
var_dump($_POST);
var_dump($_GET);
var_dump($_SERVER);

bir yoludur. Başka bir yol noktası 80 üzerinde dinleme ve orada isteği göndermek için netcat gibi bir programı kullanmak için:

netcat -l -p 80

Bu kıvırmak şey dönmeyecek, ama bu sorunu teşhis etmek yeterli olabilir sunucu, gönderilen tam olarak ne görmek için izin verir.

Ayrıca apache_request_headers() fonksiyonunu kullanarak PHP başlıkları alabilirsiniz. Ben değiştirilmemiş gerçeği görmek ve aynı zamanda ham post verileri görüntüleyebilir garanti beri çoğu durumda ben, olsa, netcat yaklaşımı tercih.