Curl у меня перестал работать.
Вчера я запустил несколько обновлений на своем сервере AWS EC2, поэтому я чувствую, что это причина, но не могу понять.
В основном я использую Curl для добавления людей в различные списки почтовых рассылок. Ни один из этих сценариев сейчас не работает, и я получаю сообщения об ошибке браузера о небезопасном соединении:
«Страница, которую вы пытаетесь просмотреть, не может быть отображена, потому что подлинность полученных данных не может быть проверена».
Я также получаю следующую ошибку в моих журналах ошибок apache, которая выглядит связанной:
/ usr / sbin / httpd: ошибка поиска символа: /usr/lib64/libnsssysinit.so: неопределенный символ: PR_GetEnvSecure
CURL установлен и т. Д. (См. Снимок экрана), и когда я использую curl из командной строки на моем веб-сервере, удаленный сервер отвечает мне ... так что проблем нет.
Любая помощь очень ценится.
Дэнни.
// Set API Key and list ID to add a subscriber
$api_key = 'api key';
$list_id = 'our list id';
$dc = 'data center';
/* ================
* DESTINATION URL
* ================
*/
$url = 'https://' . $dc . '.api.mailchimp.com/3.0/lists/' . $list_id . '/members/';
/* ================
* DATA SETUP
* ================
*/
$pfb_data = array(
'email_address' => 'some.email@gmail.com',
'status' => 'pending',
'merge_fields' => array(
'FNAME' => 'First Name',
'LNAME' => 'Last Name',
),
'interests' => array( 'Interest List ID' => true )
);
// Encode the data
$encoded_pfb_data = json_encode($pfb_data);
// Setup cURL sequence
$ch = curl_init();
/* ================
* cURL OPTIONS
* The tricky one here is the _USERPWD - this is how you transfer the API key over
* _RETURNTRANSFER allows us to get the response into a variable which is nice
* This example just POSTs, we don't edit/modify - just a simple add to a list
* _POSTFIELDS does the heavy lifting
* _SSL_VERIFYPEER should probably be set but I didn't do it here
* ================
*/
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $api_key);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded_pfb_data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$results = curl_exec($ch); // store response
$response = curl_getinfo($ch, CURLINFO_HTTP_CODE); // get HTTP CODE
$errors = curl_error($ch); // store errors
curl_close($ch);
// Returns info back to jQuery .ajax or just outputs onto the page
$results = array(
'results' => $result_info,
'response' => $response,
'errors' => $errors
);
// Sends data back to the page OR the ajax() in your JS
echo json_encode($results);
По-видимому, проблема заключалась в недавно опубликованном обновлении пакета NSS для систем CentOS 7, которое привело к ошибке Aache.
/ usr / sbin / httpd: ошибка поиска символа: /lib64/libnsssysinit.so: неопределенный символ: PR_GetEnvSecure
Проблема была решена перезапуском служб Apache и FPM.
Я решил проблему, перезапустив свой экземпляр EC2.