找不到包装器“https” - 在配置PHP时忘记启用它了吗?
问题出在问题所在。我已经对此进行了彻底的调查,以获取有关此的解决方案,我知道有这方面的主题,我也遵循了它们,但没有任何效果。话虽如此,我将列出到目前为止我所做的一切。我正在Windows XP计算机上的最新Eclipse版本上运行带有Zend Debugging的PHP 5.2.14。我有1 GB的内存。我有XAMPP运行Apache,MySQL和FileZilla安装。
在 XAMPP 上,我完成了以下操作(Apache 在这些更改期间处于关闭状态):单击 XAMPP 控制面板中的“管理”,然后转到 。从那里,我接受了欢迎页面上这一行的证书:https:// localhost/xampp/
对于 OpenSSL 支持,请使用带有 https:// 127.0.0.1 或 https:// 本地主机的测试证书。
在同一部分,我检查了.在“环境”下,是 。在“Apache环境”下,是 。在“PHP 变量”下,是 。在“Phar”下,是(安装 ext/openssl)。我不知道如何启用Phar。phpinfo()
SERVER["HTTPS"]
on
HTTPS
On
_SERVER["HTTPS"]
On
OpenSSL support
disabled
现在关于C:\xampp中的文件本身,我去了PHP文件夹。在生产和开发 php.ini 文件(比抱歉更安全)下,我有 , ,并且我删除了分号,因此不再注释掉。我甚至确认.dll在PHP文件夹的ext文件夹中。libeay32.dll 和 ssleay32.dll都在 PHP 和 Apache 文件夹中。Apache 文件夹不包含生产性或开发性 php.ini文件。allow_url_fopen=On
allow_url_include=On
extension=php_openssl.dll
我已经去了 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: 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之后),当我第一次通过 http://localhost/tutorial/retrieve_website.php 在Eclipse和Firefox中访问我的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=The+Devil+went+down+to+Georgia&alt=atom&num=5) [function.file-get-contents]: 无法打开流:在第 29
行的 C:\xampp\htdocs\tutorial\retrieve_website.php 中没有这样的文件或目录 警告: DOMDocument::loadXML() [domdocument.loadxml]: 在 C:\xampp\htdocs\tutorial\retrieve_website.php 第 33
行中作为输入提供的空字符串 openssl: no http wrapper: yes https wrapper: no wrappers: no wrappers: 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) “bzip2” [ compress9]=> string(4) “phar” }
我忽略了或没有做到什么?据我所知,我已经完成了关于HTTPS和OpenSSL的所有研究。