为了账号安全,请及时绑定邮箱和手机立即绑定

无法找到包装器“https” - 您是否忘记在配置PHP时启用它?

无法找到包装器“https” - 您是否忘记在配置PHP时启用它?

PHP
慕斯王 2019-09-20 16:20:29
问题在于问题。我已经对这方面的解决方案进行了彻底的调查,我知道有这方面的主题,我也跟着他们,没有任何工作。话虽如此,我会列出到目前为止我所做的一切。我在Windows XP计算机上的最新Eclipse版本上使用Zend Debugging运行PHP 5.2.14。我有1 GB的RAM。我安装了运行Apache,MySQL和FileZilla的XAMPP。在XAMPP上我做了以下操作(在这些更改期间Apache已关闭):从XAMPP控制面板单击Admin并转到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 one。现在关于C:\ xampp中的文件本身,我去了PHP文件夹。在生产和开发的php.ini文件(防患于未然),我allow_url_fopen=On,allow_url_include=On和我删除了分号,所以extension=php_openssl.dll不再注释掉。我甚至确认.dll位于PHP文件夹的ext文件夹中。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);当我在Eclipse上运行它作为PHP脚本时,一切都按照我想要的方式完美输出以及这些结果:openssl: yeshttp wrapper: yeshttps wrapper: yeswrappers: 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之后),但是当我第一次通过http://localhost/tutorial/retrieve_website.php访问Eclipse和Firefox中的PHP脚本时,我仍然会遇到相同的错误:我忽略或未做到的是什么?据我所知,我已经完成了有关HTTPS和OpenSSL的所有研究
查看完整描述

3 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

我解决了它的XAMPP通过取消注释;extension=php_openssl.dll/apache/bin/php.ini ,尽管 phpinfo()函数告诉我/php/php.ini是加载ini文件。

编辑:我猜Ezra答案是直接将扩展行添加到适当的ini文件的最佳解决方案。


查看完整回答
反对 回复 2019-09-20
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

您的Apache可能未使用SSL支持进行编译。无论如何,请使用cURL而不是file_get_contents。尝试这个代码,如果失败那么我是对的。


function curl_get_contents($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);

  $data = curl_exec($curl);

  curl_close($curl);

  return $data;

}


查看完整回答
反对 回复 2019-09-20
  • 3 回答
  • 0 关注
  • 601 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信