问题出在问题上。我已经对有关此问题的解决方案进行了彻底的调查,并且我知道与此有关的主题,并且我也一直关注它们,但没有任何效果。话虽如此,我将列出我到目前为止所做的一切。我在Windows XP计算机上的最新Eclipse版本上运行带有Zend Debugging的PHP 5.2.14。我有1 GB的RAM。我在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位于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: 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-contents]:无法找到包装器“ https”-在配置PHP时是否忘记启用它?在第29行的C:\ xampp \ htdocs \ tutorial \ retrieve_website.php中,
警告:file_get_contents(https:// www.googleapis.com/customsearch/v1?key= 已删除API ID&cx = 已删除搜索ID&q = The + 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]:在第33行的C:\ xampp \ htdocs \ tutorial \ retrieve_website.php中作为输入提供的空字符串
openssl:否http包装器:是https包装器:否包装器: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] =>字符串(13)” compress.zlib“ [8] =>字符串(14)” compress.bzip2“ [9] =>字符串(4)” phar“}
我忽略或未能完成的工作是什么?据我所知,我已经完成了有关HTTPS和OpenSSL的研究工作
/apache/bin/php.ini
它在XAMPP Portable Light 1.8.1中找不到它吗?但是php/php.ini
存在,但是在这里启用ssl并没有帮助:(