Не удалось найти упаковщик «https» - вы забыли включить его при настройке PHP? - PullRequest
133 голосов
/ 26 марта 2011

Проблема в вопросе.Я провел тщательное расследование для решений в отношении этого, и я знаю, что есть темы для этого, и я тоже следовал им, и ничего не помогло.При этом я перечислю точно все, что я сделал до сих пор.Я использую PHP 5.2.14 с Zend Debugging на последней версии Eclipse на моем компьютере с Windows XP.У меня 1 ГБ оперативной памяти.У меня XAMPP работает с установленными Apache, MySQL и FileZilla.

На XAMPP я сделал следующее (Apache был выключен во время этих изменений): На панели управления XAMPP нажал Admin и перешел на https:// localhost/xampp/.Оттуда я принял сертификаты из этой строки на странице приветствия:

Для поддержки OpenSSL используйте тестовый сертификат с https: // 127.0.0.1 или https: // localhost.

В том же разделе я проверил phpinfo().В разделе «Окружающая среда» SERVER["HTTPS"] означает on.В «среде Apache» 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=removed API ID & cx = удален поисковый идентификатор & q = + Devil + пошел + вниз +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 в строке 33openssl: нет 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

Ответы [ 19 ]

3 голосов
/ 17 июля 2018

Проблема с file_get_contents для запросов https в Windows , раскомментируйте следующие строки в файле php.ini:

extension=php_openssl.dll
extension_dir = "ext"
2 голосов
/ 05 апреля 2018

PHP7, в файле php.ini удалите «;» до extension=openssl

2 голосов
/ 27 июля 2016

Я использую opsenSUSE Leap, и у меня возникла та же проблема - это означает, что OpenSSL не поддерживается.Вот как я это решил:

  1. Откройте YaST.
  2. Перейдите в Управление программным обеспечением.
  3. В поле поиска на левой панели введите 'php5-openssl'и нажмите клавишу возврата.
  4. Установите флажок рядом с' php5-openssl 'на правой панели, чтобы выбрать его, и нажмите «Принять» (это добавляет поддержку OpenSSL).
  5. ПерезапуститьАпач: sudo service apache2 restart

Вот и все, все готово.

2 голосов
/ 27 марта 2011

Просматривая весь день, я понял ответ благодаря этому руководству: http://piwigo.org/forum/viewtopic.php?id=15727

Обычно в разделе Eclipse -> Windows -> «Настройки» -> «Исполняемые файлы PHP» есть раздел, в котором упоминаются файлы .exe и .ini. По умолчанию они находились в каталоге Eclipse, когда вы устанавливали функцию SDK средств разработки PHP из Eclipses. Установите новое программное обеспечение в меню Справка.

Поэтому вместо этого я добавил новый исполняемый файл с именем PHP 5.3.5 (CGI) и сослался на cgi.exe и .ini из папки php xampp.

Спасибо, вебарто, что нашли время помочь мне.

1 голос
/ 20 апреля 2018

Для тех, кто использует Winginx (на основе nginx вместо Apache), я исправил это с помощью следующих 4 шагов:

  1. На Инструменты меню попало в Winginx PHP5 Config (не говоря уже о 5 в имени ...):

    Winginx PHP5 Config

  2. Выберите версию PHP, которую вы хотите изменить php.ini :

    PHP version selection

  3. На вкладке PHP Extensions выберите расширение php_openssl и нажмите кнопку Сохранить :

    php_openssl selection

  4. перезапустите соответствующую службу PHP через панель задач ( Stop и Start ):

    Restart PHP service

1 голос
/ 06 апреля 2014

Я тоже получил эту ошибку.Я понял, что в моей версии PHP нет скомпилированного openssl, поэтому простого добавления директивы расширения в php.ini было недостаточноЯ не знаю, как вы должны решить эту проблему в вашем конкретном случае, но для меня я использую macports, и команда была просто:

1 голос
/ 26 июля 2011

Попробуйте это:

<code>function curl($url){
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    <strong>$buffer = curl_exec($curl);</strong>
    curl_close($curl);
    <strong>return $buffer;</strong>
}
0 голосов
/ 15 октября 2018

Если вы используете Wamp-сервер, перейдите к значку, щелкните по этому wamp server icon click on this

Затем перейдите в PHP, затем нажмите на расширение PHP, оттуда потребуется php_openssl для активации и перезапустите сервер wamp active php_openssl from here

0 голосов
/ 20 марта 2018

Внутри simple_html_dom.php измените значение переменной $offset с -1 на 0. эта ошибка обычно возникает при переходе на PHP 7.

HtmlDomParser::file_get_html использует смещение по умолчанию -1, передача 0 должна решить вашу проблему.

...