Проблема полягає у питанні. Я провів ретельне дослідження щодо вирішення цього питання, і я знаю, що для цього є теми, і я також дотримувався їх, і нічого не вийшло. Як сказано, я перерахую саме все, що я зробив досі. Я запускаю PHP 5.2.14 із налагодженням Zend на останній версії Eclipse на моєму комп'ютері Windows XP. У мене є 1 ГБ оперативної пам’яті. У мене встановлено XAMPP з Apache, MySQL та FileZilla.
На XAMPP я зробив наступне (Apache був вимкнений під час цих змін): Натиснув на адміністратора з панелі керування XAMPP і перейшов до https:// localhost/xampp/
. Звідти я прийняв сертифікати з цього рядка на вітальній сторінці:
Для підтримки OpenSSL використовуйте тестовий сертифікат з https: // 127.0.0.1 або https: // localhost.
На тому самому розділі я перевірив phpinfo()
. У розділі "Навколишнє середовище" SERVER["HTTPS"]
є on
. Під "Apache Environment" HTTPS
є On
. У розділі "Змінні PHP, _SERVER["HTTPS"]
є On
. Під «Phar», OpenSSL support
є disabled
(встановити ext / openssl). Я не знаю, як включити Phar.
Тепер щодо самих файлів у C: \ xampp я перейшов до папки PHP. В обох виробництва і розвитку php.ini файлів (безпечнішим , ніж шкода), у мене є allow_url_fopen=On
, allow_url_include=On
і я прибрав точку з коми, так що extension=php_openssl.dll
більше не закоментований. Я навіть підтвердив, що .dll знаходиться в папці ext папки PHP. Обидва libeay32.dll і ssleay32.dll знаходяться у папках PHP та Apache. Папка Apache не містить ні продуктивних, ні файлів php.ini для розробки.
Я перейшов до http://www.slproweb.com/products/Win32OpenSSL.html і встановив Win32 OpenSSL v1.0.0d для безпечного заходу.
Тепер рядок коду, про який йдеться, у моєму retrieve_website.php виглядає так:
$urlquery = "https://www.googleapis.com/customsearch/v1?key=".$appid."&cx=".$google_searchid."&q=".$query."&alt=atom&num=".$results;
$xmlresults = file_get_contents($urlquery);
У мене є ще два веб-сайти, які я запитую, але вони обслуговуються через HTTP і вони працюють чудово. У мене також є цей рядок коду, введений наприкінці сценарію:
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);
Коли я запускаю його як сценарій PHP на Eclipse, все виходить ідеально, як я хочу разом з цими результатами:
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"
}
Незважаючи на всі ці зміни, які я вніс (після того, як я запустив Apache), я все одно отримую ті самі помилки під час першого доступу до свого скрипту PHP в Eclipse та Firefox через http: //localhost/tutorial/retrieve_website.php :
Попередження: file_get_contents () [function.file-get-content]: Неможливо знайти обгортку "https" - ви забули включити її під час налаштування PHP? в C: \ xampp \ htdocs \ tutorial \ retrieve_website.php у рядку 29
Попередження: file_get_contents (https: // www.googleapis.com/customsearch/v1?key= видалений API ID & cx = видалений пошук ID & q = Ідентифікатор пошуку + q = The Devil + пішов + вниз + до + Джорджія & alt = atom & num = 5) [function.file-get-content]: не вдалося відкрити потік: У C: \ xampp \ htdocs \ tutorial \ retrieve_website.php у рядку 29 немає
попередження: DOMDocument :: loadXML () [domdocument.loadxml]: порожній рядок подається як вхід у C: \ xampp \ htdocs \ tutorial \ retrieve_website.php у рядку 33
openssl: немає http обгортки: так https обгортки: немає обгортки: масив (10) {[0] => рядок (3) "php" [1] => рядок (4) "файл" [2] => рядок (4) ) "glob" [3] => string (4) "data" [4] => string (4) "http" [5] => string (3) "ftp" [6] => string (3) " zip "[7] => рядок (13) "press.zlib" [8] => рядок (14) "press.bzip2 "[9] => рядок (4)" phar "}
Що це я не помітив чи не зміг зробити? Наскільки мені відомо, я зробив усе, що досліджував щодо HTTPS та OpenSSL
/apache/bin/php.ini
я не можу знайти у портативному світлі XAMPP 1.8.1? Однакphp/php.ini
існує, але включення ssl тут не допомагає :(