एक ही समस्या थी।
<?php
error_reporting(E_ALL);
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_URL, 'https://api-3t.sandbox.paypal.com/nvp');
$response = curl_exec($curl);
var_dump($response);
exit;
प्रतिक्रिया:
bool(false)
और कोई त्रुटि लॉग!
तो मैं कर दिया है छोटा सा स्क्रिप्ट:
<?php
error_reporting(E_ALL);
var_dump(file_get_contents('https://api-3t.sandbox.paypal.com/nvp'));
और यहाँ है कि मैं क्या लॉग में मिल गया है:
[12-Feb-2016 15:56:19] PHP Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure in /xxx/yyy.php on line 3
[12-Feb-2016 15:56:19] PHP Warning: file_get_contents(): Failed to enable crypto in /xxx/yyy.php on line 3
[12-Feb-2016 15:56:19] PHP Warning: file_get_contents(https://api-3t.sandbox.paypal.com/nvp): failed to open stream: operation failed in /xxx/yyy.php on line 3
मेरे समाधान किया गया था:
- अद्यतन (1.0+) ओपनएसएसएल का संस्करण।
- पुन: संयोजित कर्ल
नई कर्ल के साथ
- पुन: संयोजित पीएचपी
- यकीन कर्ल SSL संसकरण OpenSSL/(1.0+)
SSL संसकरण OpenSSL/1.0.1e है - अच्छा
एसएसएल संस्करण एनएसएस/3.13.6.0 - खराब
मैं सेंटोस पर चल रहा हूं।
अद्यतन OpenSSL:
openssl संस्करण
अगर नीचे 1.0 रन: यहाँ है कि मैं क्या अद्यतन करने के लिए किया था यम अद्यतन openssl यकीन है कि यह वास्तव में अपडेट किया हुआ है
- PHP को पुनर्स्थापित करें। तो php.ini फ़ाइल
बचाने के माध्यम से स्थापित सभी पीएचपी मॉड्यूल की एक सूची रखें:
यम सूची स्थापित | grep php
आउटपुट सहेजें!
- यम मिटा php
- यम मिटा php-कर्ल
- यम स्थापित php
यम स्थापित php-कर्ल
पुनः आरंभ अपाचे या एफ पी एम और यदि आप भाग्यशाली हैं तो आपको
- php.ini कॉन्फ़िगरेशन और PHP मॉड्यूल को पुनर्स्थापित करने वाली चीजें मिलेंगी: yum php-pgsql इंस्टॉल करें; yum स्थापित php-gd; आदि
हालांकि यदि आपके पैकेज रिपॉजिटरीज पुरानी हैं या आपके पास एनएसएस एसएसएल बाइंडिंग के साथ कर्ल लाइब्रेरी स्थापित है तो आप मैन्युअल रूप से कर्ल लाइब्रेरी को डाउनलोड और संकलित कर सकते हैं। मैंने का उपयोग किया है phpize उपकरण php-devel पैकेज के साथ बंडल किया गया है। तो मेरी समस्या मैं लिया है:
cURL Information 7.19.7
SSL Version NSS/3.13.6.0
और यहाँ कैसे मैं यह करने के लिए बदल दिया है है:
cURL Information 7.22.0
SSL Version OpenSSL/1.0.1e
अद्यतन OpenSSL:
openssl संस्करण
यदि 1.0 से नीचे चला गया है: yum अद्यतन openssl सुनिश्चित करें कि यह वास्तव में
- PHP को पुनर्स्थापित करें। तो php.ini फ़ाइल
बचाने के माध्यम से स्थापित सभी पीएचपी मॉड्यूल की एक सूची रखें:
यम सूची स्थापित | grep php
आउटपुट सहेजें!
- यम मिटा php
- यम मिटा php-कर्ल
- यम स्थापित php-devel
आरपीएम के साथ
- प्रिंट PHP संस्करण -qa --queryformat '% { संस्करण} 'php और जहाँ आप ठीक उसी पीएचपी सूत्रों
- बैश स्क्रिप्ट के बाद डाउनलोड कर सकते हैं विशिष्ट कर्ल पुस्तकालय स्थापित हो जाएगा लगता है:
<pre>
#!/bin/bash
PHP_VERSION=$(rpm -qa --queryformat '%{version}' php)
CURL_VERSION=7.22.0
#echo $CURL_VERSION
#exit
#wget --no-check-certificate http://mirror.cogentco.com/pub/php/php-${PHP_VERSION}.tar.gz -O /tmp/php-${PHP_VERSION}.tar.gz
wget --no-check-certificate http://museum.php.net/php5/php-${PHP_VERSION}.tar.gz -O /tmp/php-${PHP_VERSION}.tar.gz
wget --no-check-certificate http://curl.haxx.se/download/curl-${CURL_VERSION}.tar.gz -O /tmp/curl-${CURL_VERSION}.tar.gz
cd /tmp; tar xzf php-${PHP_VERSION}.tar.gz
cd /tmp; tar xzf curl-${CURL_VERSION}.tar.gz
cd curl-${CURL_VERSION}
./configure
make
make install
cd /tmp; rm -rf curl-${CURL_VERSION}*
sleep 2
cd /tmp/php-${PHP_VERSION}/ext/curl/
phpize
./configure
make
make install
cd /tmp; rm -rf php-${PHP_VERSION}*
</pre>
- पुनः आरंभ अपाचे या एफ पी एम और अगर तुम भाग्यशाली हो आप काम कर
- php.ini कॉन्फ़िगरेशन और PHP मॉड्यूल बहाल चीजें मिल जाएगा: यम php-pgsql स्थापित ; yum स्थापित php-gd; आदि
एकमात्र समाधान एक नए कर्ल संस्करण वाले OpenSSL शामिल 1.0+ को उन्नत करने के लिए है के साथ Centos7 पर इस्तेमाल किया गया है। सलाह के लिए धन्यवाद :) – inf3ction