Проблема в вопросе. Я провел тщательное расследование для решений в отношении этого, и я знаю, что есть темы для этого, и я тоже следовал им, и ничего не помогло. При этом я перечислю точно все, что я сделал до сих пор. Я использую PHP 5.2.14 с Zend Debugging на последней версии Eclipse на моем компьютере с Windows XP. У меня 1 ГБ оперативной памяти. У меня XAMPP работает с установленными Apache, MySQL и FileZilla.
На XAMPP я сделал следующее (Apache был выключен во время этих изменений): Нажмите Admin на Панели управления 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 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-скрипту в 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= удален идентификатор API & cx = удален идентификатор поиска & q = + Devil + пошел + вниз + в + Джорджия & 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: нет http-оболочки: да https-оболочка: нет оболочек: array (10) {[0] => string (3) "php" [1] => string (4) "file" [2] => string (4) ) "glob" [3] => string (4) "data" [4] => string (4) "http" [5] => string (3) "ftp" [6] => string (3) " zip "[7] => string (13)" compress.zlib "[8] => string (14)" compress.bzip2 "[9] => string (4)" phar "}
Что я упустил из виду или не смог сделать? Насколько мне известно, я сделал все, что я исследовал в отношении HTTPS и OpenSSL
/apache/bin/php.ini
я не могу найти его в XAMPP Portable Light 1.8.1? Однакоphp/php.ini
существует, но включение ssl здесь не помогает :(xampp/php/php.ini
:) спасибо, PS: НЕ ЗАБЫВАЙТЕ ПЕРЕЗАГРУЗИТЬ APACHE ПОСЛЕМне пришлось добавить
extension=php_openssl.dll
в мойphp.ini
файл, расположенный вxampp/php/php.ini
. Как-то его там не было, после добавления и перезапуска Apache все работало нормально.источник
просто добавьте две строки в ваш файл php.ini.
это работает для меня.
источник
allow_url_include = On
что решило это для меня.Ваш Apache, вероятно, не скомпилирован с поддержкой SSL. В любом случае используйте cURL вместо file_get_contents. Попробуйте этот код, если не получится, тогда я прав.
источник
$xmlresults = file_get_contents($urlquery);
с$xmlresults = curl($urlquery);
. PHP Script запустил его так же хорошо, как и file_get_contents (). Запуск его как веб-страницы PHP через localhost / tutorial / retrieve_website.php, и я получаю эту ошибку:Fatal error: Call to undefined function curl_init() in C:\xampp\htdocs\tutorial\retrieve_website.php on line 14
'--with-openssl=/usr' '--with-openssl-dir=/usr'
основном вам нужно скомпилировать Apache с поддержкой SSL, вы должны также включить cURL, который в пару раз быстрее, чем FGC, и имеет множество опций. Я не знаю, как это сделать на Windows, извините.return curl_exec($curl);
, разве это не помешаетcurl_close($curl);
выполнению следующей строки?Я включил расширение openssl, и оно работает для меня :)
; Расширение = php_openssl.dll
в
расширение = php_openssl.dll
источник
В моем случае проблема была из-за того, что WAMP использовал php.ini для CLI, отличный от Apache, поэтому ваши настройки, сделанные через меню WAMP, не относятся к CLI. Просто измените CLI php.ini, и это работает.
источник
C:\path\to\wamp\bin\php\php5.3.10\php.ini
в OpenSuse 12.1 требовалось только:
источник
Мне пришлось раскомментировать эти строки в php.ini:
«ext» применимо, если php_openssl.dll находится в папке «ext».
Примечание: я должен был сделать это для двух моих файлов php.ini, иначе это не сработало бы. Один находится в папке установки vs.php, а другой - в папке PHP
Источник
источник
На MAC AMPPS я обновил php-5.5.ini следующим образом, и теперь он работает.
источник
В моем случае (PHP 7.3 на Windows в режиме FastCGI) это было раскомментировано
extension=openssl
. Не расширение = php_ openssl , как большинство людей публикуют здесь.(То же самое было опубликовано здесь , но без подробностей об ОС, что может быть ключевым отличием здесь.)
источник
PHP7, в файле php.ini удалите ";" перед
extension=openssl
источник
Проблема с file_get_contents для запросов https в Windows , раскомментируйте следующие строки в файле php.ini:
источник
Вместо этого вы можете использовать эту функцию, если в вашей системе установлен curl:
источник
Просматривая весь день, я разобрался с ответом благодаря этому руководству: http://piwigo.org/forum/viewtopic.php?id=15727
В основном в Eclipse -> Windows -> «Настройки» -> «Исполняемые файлы PHP» есть раздел, в котором есть ссылки на .exe и .ini. По умолчанию они находились в каталоге Eclipse, когда вы устанавливали функцию SDK средств разработки PHP из Eclipses Install New Software в меню Help.
Поэтому вместо этого я добавил новый исполняемый файл под названием PHP 5.3.5 (CGI) и сослался на cgi.exe и .ini из папки php xampp.
Спасибо webarto за то, что уделили мне время.
источник
Я использую OpsenSUSE Leap, и у меня была та же проблема - это означает, что нет поддержки OpenSSL. Вот как я решил это:
sudo service apache2 restart
Вот и все, вы сделали.
источник
Я тоже получил эту ошибку. Я понял, что в моей версии PHP нет скомпилированного openssl, поэтому простого добавления директивы расширения в php.ini было недостаточно. Я не знаю, как вы должны решить эту проблему в вашем конкретном случае, но я использую macports, и команда была просто:
источник
Для тех, кто использует Winginx (на основе nginx вместо Apache), я исправил это с помощью следующих 4 шагов:
В меню « Инструменты» нажмите « Настройка Winginx PHP5» (не говоря уже о 5 в имени ...):
Выберите версию PHP, которую вы хотите изменить в php.ini :
На вкладке Расширения PHP выберите расширение php_openssl и нажмите кнопку Сохранить :
перезапустите соответствующий сервис PHP через панель задач ( Stop и Start ):
источник
Попробуй это:
источник
Если вы используете Wamp-сервер, перейдите к значку, нажмите на эту
Затем перейдите в PHP, затем нажмите на расширение PHP, там будет необходимо php_openssl для активации оттуда и перезапустите сервер wamp
источник
Внутри simple_html_dom.php измените значение
$offset
переменной с-1
на0
. эта ошибка обычно происходит при переходе на PHP 7.HtmlDomParser::file_get_html
использует смещение по умолчанию-1
, передача0
должна решить вашу проблему.источник