Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

get_headers(): SSL operation failed with code 1

Tags:

php

Hey i try to get header information of url ,

when i use the protocol http it's work fine , but when i use https it's not working

the url : https://200.35.78.130/

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in
Warning: get_headers(): Failed to enable crypto in 
Warning: get_headers(https://200.35.78.130/): failed to open stream: operation failed in /

this is my code

print_r(get_headers("https://200.35.78.130/", 1));
like image 380
Ahmed Safadi Avatar asked May 17 '16 11:05

Ahmed Safadi


Video Answer


1 Answers

That error occurs when you're trying to access a URL without a valid SSL certificate. You can work around this by overriding the default stream context, which will affect all subsequent file operations (including remote URLs)

<?php
stream_context_set_default( [
    'ssl' => [
        'verify_peer' => false,
        'verify_peer_name' => false,
    ],
]);

print_r(get_headers('https://200.35.78.130/'));

Alternatively, if you're using PHP 7.1+, you can create a temporary context using stream_context_create and pass it directly to the function, to avoid overriding the default:

$context = stream_context_create( [
    'ssl' => [
        'verify_peer' => false,
        'verify_peer_name' => false,
    ],
]);

print_r(get_headers('https://200.35.78.130/', 0, $context));

Thanks to Matthijs Wessels in the comments for pointing it out.

like image 89
iainn Avatar answered Sep 19 '22 07:09

iainn