2014-01-28 3 views
0

У меня странная проблема здесь, в нашем ящике CentOS 6.4 (2.6.32-431.3.1.el6.i686), работающем под управлением PHP 5.5.8. Все приложения Facebook перестали работать, так как мы обновили cURL/libcurl до версии 7.34. Это просто время при попытке выполнить'curl_exec ($ ch) '.Facebook SDK cURL 7.34.0 не работает, 7.19.7 работает

Использование ня понизить и ни установить завиток Libcurl, я был в состоянии воспроизвести ошибку (и всегда работает), см различия phpinfo() здесь:

cURL comparison

Пытался запустить завиток в многословном и поймать данные, отправленные и полученные.

Если кто-то другой хочет знать, как поймать этот Curl данных (было не легко найти):

$opts[CURLOPT_VERBOSE] = true; // enable verbose logging 
$verbose = fopen('php://temp', 'rw+'); 
$opts[CURLOPT_STDERR] = $verbose; 
curl_setopt_array($ch, $opts); 
$result = curl_exec($ch); 
rewind($verbose); 
$verboseLog = stream_get_contents($verbose); 
echo "Verbose information:\n<pre>". htmlspecialchars($verboseLog), "</pre>\n"; 

Это работает с 7.19.7:

* About to connect() to graph.facebook.com port 443 (#0) 
* Trying 173.252.101.48... * connected 
* Connected to graph.facebook.com (173.252.101.48) port 443 (#0) 
* Initializing NSS with certpath: sql:/etc/pki/nssdb 
* CAfile: /etc/pki/tls/certs/ca-bundle.crt 
    CApath: none 
* SSL connection using SSL_RSA_WITH_RC4_128_SHA 
* Server certificate: 
* subject: CN=*.facebook.com,O="Facebook, Inc.",L=Palo Alto,ST=California,C=US 
* start date: Oct 28 00:00:00 2013 GMT 
* expire date: Aug 05 23:59:59 2015 GMT 
* common name: *.facebook.com 
* issuer: CN=VeriSign Class 3 Secure Server CA - G3,OU=Terms of use at https://www.verisign.com/rpa (c)10,OU=VeriSign Trust Network,O="VeriSign, Inc.",C=US 
> POST /me HTTP/1.1 
User-Agent: facebook-php-3.2 
Host: graph.facebook.com 
Accept: */* 
Content-Length: 232 
Content-Type: application/x-www-form-urlencoded 

< HTTP/1.1 200 OK 
< Access-Control-Allow-Origin: * 
< Cache-Control: private, no-cache, no-store, must-revalidate 
< Content-Type: application/json; charset=UTF-8 
< ETag: "a4238b670d50df51506644bd20277a7cffbfaa80" 
< Expires: Sat, 01 Jan 2000 00:00:00 GMT 
< Last-Modified: 2014-01-15T13:20:35+0000 
< Pragma: no-cache 
< X-FB-Rev: 1097933 
< X-FB-Debug: ekyERaUVGaiB7H+tLQn1m6sll33KkF8CUhlHGd9/lGs= 
< Date: Tue, 28 Jan 2014 09:51:40 GMT 
< Connection: keep-alive 
< Content-Length: 253 
< 
* Connection #0 to host graph.facebook.com left intact 

При попытке сделать то же самое с 7.34.0, httpd работает со 100% и получает таймаут через 30 секунд (или что-то, что установлено в php.ini). Никакой подробный вывод вообще, просто время. Ничего не найти в Apache error_log.

Любые идеи, как отлаживать дальше?

С уважением, Max

ответ

0

Его очень трудно, чтобы сказать вам, не будучи на вашем положении. Но все же здесь несколько предложений от моего конца. Не знаете, насколько это вам поможет.

Сначала напишите основной код и запустите его для примера example.com (например). И посмотрите, что он возвращает.

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 
$result = curl_exec($ch); 

Если приведенный выше код не подходит для вас, то это проблема с завитой.

Теперь запустите тот же код, изменив URL-адрес на https://www.google.com/, а также добавьте другие параметры завитка для вещей ssl/certificate (используйте существующий код). И проверьте, что он делает. Если это не сработает, то это вопрос ssl с завитком.

Если это сработает, измените URL-адрес на графический api-url. И проверьте, что он делает. Если это не так, то проблема CURLOPT_SSLVERSION для завитки, которую вы используете.

Наконец, вы также можете попытаться запустить мой код выше с помощью опции ниже для https://www.google.com и https://graph.facebook ... сайтов. И посмотрите, как они реагируют.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
Смежные вопросы