2013-09-05 68 views
10

file_get_contents Gọi() với https: // url cho tôi những lỗi sau:Không thể tìm ra wrapper "https" với đào tạo Quản lý

warning: file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? 

Tôi đã đọc 10+ SO câu hỏi và tất cả trong số họ nói với cho phép extension=php_openssl.dll

tôi đã làm điều này và tôi vẫn đang gặp vấn đề ...

gì nữa nó có thể?

+0

Chúng tôi có thể sẽ cần một số thông tin khác để giúp bạn ... Tôi giả sử bạn chạy Windows xem xét bạn đang cố gắng tải một .dll? Bạn có thể thử chạy 'phpinfo()' và tìm một dòng đọc: 'OpenSSL support enabled'? Nên dưới tiêu đề "openssl". –

+0

Bạn đang kết nối với URl nào? Bạn có thể mở https://www.namhost.com không? Tôi chỉ phát hiện ra khi cố gắng kết nối với URL Facebook mà nó phun ra một lỗi 400 vì các thông số không chính xác, hóa ra là địa chỉ IP của tôi không được đặt chính xác trong cài đặt. I E. Tôi có thể truy cập các liên kết HTTPS, không phải là liên kết trên facebook. – coderama

+1

Xem http://stackoverflow.com/questions/5444249/unable-to-find-the-wrapper-https-did-you-forget-to-enable-it-when-you-config?rq=1 cho một phong nha câu trả lời. Đọc kỹ các câu trả lời và bật phần mở rộng trong 'php.ini' thích hợp. Đừng quên khởi động lại Apache. – GuyT

Trả lời

0

Tôi gặp sự cố tương tự. Tôi đã cố gắng truy cập vào biểu đồ facebook. Nó không phải là nó không thể truy cập URL, nó đã được rằng Facebook đã trở về một lỗi 400 vì tôi đã không đi qua các thông số thông qua. Thử kết nối với HTTPS trên một trang web sẽ có kết nối HTTPS hoạt động. Ví dụ. Hãy thử điều này:

file_get_contents("https://www.namhost.com"); 

Nếu thành công, bạn phải hiểu tại sao kết nối HTTPS bạn đang kết nối là không, bởi vì vấn đề không phải là bạn không thể kết nối HTTPS, nhưng đúng hơn là những gì bạn đang kết nối không thích yêu cầu.

+0

Nó không giúp tôi url từ trình duyệt đang hoạt động .. –

-1

Hãy đảm bảo nếu allow_url_include và allow_url_fopen được đặt thành 'Bật' trong php.ini.

Bỏ ghi chú nếu các dòng này được nhận xét.

Ngoài ra, bạn có thể sử dụng các kịch bản sau đây để chẩn đoán: (lấy từ câu trả lời chấp nhận trên How to get file_get_contents() to work with HTTPS?)

$w = stream_get_wrappers(); 
echo 'openssl: ', extension_loaded ('openssl') ? 'yes':'no', "\n"; 
echo 'http wrapper: ', in_array('http', $w) ? 'yes':'no', "\n"; 
echo 'https wrapper: ', in_array('https', $w) ? 'yes':'no', "\n"; 
echo 'wrappers: ', var_dump($w); 
0

Giống như mọi người nói, kiểm tra với cấu hình.

phpinfo.php

<?php 
phpinfo(); 
?> 

Tìm kiếm OpenSSL trên trang web. Ngoài ra, đừng quên khởi động lại Máy chủ Web sau khi thay đổi tệp php.ini.

Nếu bạn không thể sử dụng file_get_contents(), hãy sử dụng cURL thay vào đó nếu có, nó tốt hơn theo nhiều cách và nhanh hơn.

function url($url,$option = null) { 

    $cURL = curl_init(); 

    if ($option) { 
     curl_setopt($cURL, CURLOPT_URL, $url.$option); 
    } else { 
     curl_setopt($cURL, CURLOPT_URL, $url); 
    } 

    curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($cURL, CURLOPT_AUTOREFERER, 1); 
    curl_setopt($cURL, CURLOPT_HTTPGET, 1); 
    curl_setopt($cURL, CURLOPT_VERBOSE, 0); 
    curl_setopt($cURL, CURLOPT_HEADER, 0); 
    curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, 1); 
    curl_setopt($cURL, CURLOPT_SSL_VERIFYHOST, 1); 
    curl_setopt($cURL, CURLOPT_DNS_USE_GLOBAL_CACHE, 0); 
    curl_setopt($cURL, CURLOPT_DNS_CACHE_TIMEOUT, 2); 

    $output['page'] = curl_exec($cURL); 
    $output['contentType'] = curl_getinfo($cURL, CURLINFO_CONTENT_TYPE); 

    curl_close($cURL); 

    return $output; 

} 

$page = url('https://example.com/','i/like/subfolders'); 
3

SOLVED

Để giải quyết lỗi này, bạn cần phải cài đặt gói OpenSSL cho PHP trên bạn webserver.

Trên máy chủ FreeBSD, bạn có thể cần cài đặt gói sau: php53_openssl và khởi động lại máy chủ web của mình.

Trên một máy chủWindows, mở tập tin php.ini cấu hình của bạn và chỉ cần bỏ ghi chú dòng sau:

;extension=php_openssl 

và khởi động lại máy chủ web. Lỗi cần được giải quyết.

Tham chiếu: Tôi lấy từ số this link làm việc cho tôi .., vì vậy, tín dụng sẽ đến với anh ấy.