Vấn đề là trong câu hỏi. Tôi đã thực hiện một cuộc điều tra kỹ lưỡng cho các giải pháp liên quan đến vấn đề này và tôi biết có những chủ đề cho vấn đề này và tôi cũng đã theo dõi chúng và không có gì hiệu quả. Điều đó được nói rằng tôi sẽ liệt kê chính xác mọi thứ tôi đã làm cho đến nay. Tôi đang chạy PHP 5.2.14 với Zend Debugging trên phiên bản Eclipse mới nhất trên máy tính Windows XP của tôi. Tôi có RAM 1 GB. Tôi đã cài đặt XAMPP với Apache, MySQL và FileZilla.
Trên XAMPP tôi đã thực hiện các thao tác sau (Apache đã tắt trong những thay đổi này): Nhấp vào Quản trị viên từ Bảng điều khiển XAMPP và đi đến https:// localhost/xampp/
. Từ đó tôi chấp nhận các certs từ dòng này trên trang chào mừng:
Để được hỗ trợ OpenSSL, vui lòng sử dụng chứng chỉ kiểm tra với https: // 127.0.0.1 hoặc https: // localhost.
Trên cùng một phần tôi đã kiểm tra phpinfo()
. Trong "Môi trường", SERVER["HTTPS"]
là on
. Trong phần 'Môi trường Apache', HTTPS
là On
. Trong 'Biến PHP, _SERVER["HTTPS"]
là On
. Trong 'Phar', OpenSSL support
là disabled
(cài đặt ext / openssl). Tôi không biết cách kích hoạt Phar.
Bây giờ liên quan đến các tệp trong C: \ xampp, tôi đã chuyển đến thư mục PHP. Theo cả hai sản xuất và phát triển các file php.ini (tốt hơn an toàn hơn xin lỗi), tôi có allow_url_fopen=On
, allow_url_include=On
và tôi loại bỏ các dấu chấm phẩy, do đó extension=php_openssl.dll
không còn được nhận xét ra. Tôi thậm chí đã xác nhận rằng các dll nằm trong thư mục ext của thư mục PHP. Cả libeay32.dll và ssleay32.dll đều có trong các thư mục PHP và Apache. Thư mục Apache không chứa các tệp php.ini sản xuất hoặc phát triển.
Tôi đã truy cập http://www.slproweb.com/products/Win32OpenSSL.html và cài đặt Win32 OpenSSL v1.0.0d để có biện pháp an toàn.
Bây giờ, dòng mã được đề cập trong lấy_website.php của tôi trông như thế này:
$urlquery = "https://www.googleapis.com/customsearch/v1?key=".$appid."&cx=".$google_searchid."&q=".$query."&alt=atom&num=".$results;
$xmlresults = file_get_contents($urlquery);
Tôi có hai trang web khác mà tôi truy vấn nhưng chúng được phục vụ qua HTTP và chúng hoạt động tốt. Tôi cũng có dòng mã này được nhập vào gần cuối tập lệnh:
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);
Khi tôi chạy nó dưới dạng PHP Script trên Eclipse, mọi thứ đều hoàn toàn tốt theo cách tôi muốn cùng với các kết quả này:
openssl: yes
http wrapper: yes
https wrapper: yes
wrappers: array(10) {
[0]=>
string(5) "https"
[1]=>
string(4) "ftps"
[2]=>
string(3) "php"
[3]=>
string(4) "file"
[4]=>
string(4) "data"
[5]=>
string(4) "http"
[6]=>
string(3) "ftp"
[7]=>
string(13) "compress.zlib"
[8]=>
string(14) "compress.bzip2"
[9]=>
string(3) "zip"
}
Bất chấp tất cả những thay đổi tôi đã thực hiện (sau khi tôi khởi động Apache), tôi vẫn gặp lỗi tương tự khi lần đầu tiên tôi truy cập tập lệnh PHP của mình trong Eclipse và Firefox qua http: //localhost/tutorial/retrieve_website.php :
Cảnh báo: file_get_contents () [function.file-get-nội dung]: Không thể tìm thấy trình bao bọc "https" - bạn có quên bật nó khi bạn định cấu hình PHP không? trong C: \ xampp \ htdocs \ guide \ lấy_website.php trên dòng 29
Cảnh báo: file_get_contents (https: // www.googleapis.com/customsearch/v1?key= ID API đã xóa & cx = đã xóa ID tìm kiếm & q = The + Devil + đi + xuống + xuống + Georgia & alt = nguyên tử & num = 5) [function.file-get-nội dung]: không thể mở luồng: Không có tệp hoặc thư mục như vậy trong C: \ xampp \ htdocs \ guide \ lấy_website.php trên dòng 29
Cảnh báo: DOMDocument :: loadXML () [domdocument.loadxml]: Chuỗi rỗng được cung cấp làm đầu vào trong C: \ xampp \ htdocs \ guide \ lấy_website.php trên dòng 33
openssl: no http Wrapper: yes https Wrapper: no Wrappers: Array (10) {[0] => chuỗi (3) "php" [1] => chuỗi (4) "file" [2] => chuỗi (4 ) "global" [3] => chuỗi (4) "data" [4] => chuỗi (4) "http" [5] => chuỗi (3) "ftp" [6] => chuỗi (3) " zip "[7] => chuỗi (13)" nén.zlib "[8] => chuỗi (14)" nén.bzip2 "[9] => chuỗi (4)" phar "}
Tôi đã bỏ qua hoặc thất bại để làm gì? Theo hiểu biết của riêng tôi, tôi đã làm mọi thứ mà tôi đã nghiên cứu về HTTPS và OpenSSL
/apache/bin/php.ini
, tôi không thể tìm thấy nó trong XAMPP Portable Light 1.8.1? Tuy nhiênphp/php.ini
tồn tại, nhưng cho phép ssl ở đây không phải không giúp đỡ :(