Проблема в вопросе. Я провел тщательное исследование решений в отношении этого, и я знаю, что есть темы для этого, и я следил за ними тоже, и ничего не сработало. Это, как говорится, я точно перечислю все, что я сделал до сих пор. Я запускаю PHP 5.2.14 с Zend Debugging в последней версии 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, и они работают нормально. У меня также есть эта строка кода, введенная в конце script:
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 Script в 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 Script в Eclipse и Firefox через http://localhost/tutorial/retrieve_website.php:
Предупреждение: file_get_contents() [function.file-get-contents]: Не удалось найти оболочку "https" - вы забыли включить ее при настройке PHP? в C:\xampp\htdocs\tutorial\retrieve_website.php в строке 29
Предупреждение: file_get_contents (https://www.googleapis.com/customsearch/v1?key=removed ИД API & cx = удаленный идентификатор поиска & q = + Devil + go + down + to + Georgia & alt= atom & num = 5) [function.file-get-contents]: не удалось открыть поток: нет такого файла или каталога в C:\xampp\htdocs\tutorial\retrieve_website.php в строке 29
Предупреждение: DOMDocument:: loadXML() [domdocument.loadxml]: пустая строка, предоставленная в качестве входа в C:\xampp\htdocs\tutorial\retrieve_website.php в строке 33
openssl: no http wrapper: yes https wrapper: no wrappers: array (10) {[0] = > string (3) "php" [1] = > string (4) "file" [2] = > string (4 ) "glob" [3] = > строка (4) "данные" [4] = > строка (4) "http" [5] = > строка (3) "ftp" [6] = > строка (3) "zip" [7] = > string (13) "compress.zlib" [8] = > string (14) "compress.bzip2" [9] = > string (4) "phar" }
Что я забыл или не сделал? Насколько я знаю, я сделал все, что я исследовал относительно HTTPS и OpenSSL