Das Problem liegt in der Frage. Ich habe eine gründliche Untersuchung durchgeführt, um diesbezügliche Lösungen zu finden, und ich weiß, dass es Themen dazu gibt, und ich habe sie auch verfolgt, und nichts hat funktioniert. Davon abgesehen werde ich genau alles auflisten, was ich bisher getan habe. Ich verwende PHP 5.2.14 mit Zend Debugging auf der neuesten Eclipse-Version auf meinem Windows XP-Computer. Ich habe 1 GB RAM. Ich habe XAMPP mit Apache, MySQL und FileZilla installiert.
Auf XAMPP habe ich Folgendes getan (Apache war während dieser Änderungen deaktiviert): Klicken Sie in der XAMPP-Systemsteuerung auf Admin und gehen Sie zu https:// localhost/xampp/
. Von dort habe ich die Zertifikate aus dieser Zeile auf der Begrüßungsseite angenommen:
Für die OpenSSL-Unterstützung verwenden Sie bitte das Testzertifikat mit https: // 127.0.0.1 oder https: // localhost.
Im selben Abschnitt habe ich nachgesehen phpinfo()
. Unter 'Umwelt' SERVER["HTTPS"]
ist on
. Klicken Sie unter "Apache-Umgebung" aufHTTPS
ist On
. Unter ‚PHP - Variablen, _SERVER["HTTPS"]
ist On
. Unter 'Phar' OpenSSL support
steht disabled
(installiere ext / openssl). Ich weiß nicht, wie ich den Phar aktivieren soll.
In Bezug auf die Dateien selbst in C: \ xampp ging ich zum PHP-Ordner. Unter der Produktion und Entwicklung php.ini - Dateien (sicher ist sicher), habe ich allow_url_fopen=On
, allow_url_include=On
und ich das Semikolon entfernt, so dass extension=php_openssl.dll
nicht mehr kommentiert werden. Ich habe sogar bestätigt, dass sich die DLL im ext-Ordner des PHP-Ordners befindet. Sowohl libeay32.dll als auch ssleay32.dll befinden sich in den Ordnern PHP und Apache. Der Apache-Ordner enthält weder produktive noch entwicklungsbezogene php.ini-Dateien.
Ich habe http://www.slproweb.com/products/Win32OpenSSL.html aufgerufen und Win32 OpenSSL v1.0.0d installiert, um eine sichere Maßnahme zu gewährleisten.
Nun sieht die fragliche Codezeile in meiner retrieve_website.php folgendermaßen aus:
$urlquery = "https://www.googleapis.com/customsearch/v1?key=".$appid."&cx=".$google_searchid."&q=".$query."&alt=atom&num=".$results;
$xmlresults = file_get_contents($urlquery);
Ich habe zwei andere Websites, die ich abfrage, aber sie werden über HTTP bereitgestellt und funktionieren einwandfrei. Ich habe auch diese Codezeile gegen Ende des Skripts eingegeben:
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);
Wenn ich es als PHP-Skript unter Eclipse ausführe, wird alles einwandfrei ausgegeben, so wie ich es möchte, zusammen mit den folgenden Ergebnissen:
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"
}
Trotz all dieser Änderungen, die ich vorgenommen habe (nachdem ich Apache gestartet habe), werden beim ersten Zugriff auf mein PHP-Skript in Eclipse und Firefox über http: //localhost/tutorial/retrieve_website.php immer noch dieselben Fehler angezeigt : .
Warnung: file_get_contents () [function.file-get-content]: Der Wrapper "https" konnte nicht gefunden werden. Haben Sie vergessen, ihn zu aktivieren, als Sie PHP konfiguriert haben? in C: \ xampp \ htdocs \ tutorial \ retrieve_website.php in Zeile 29
Warnung: file_get_contents (https: // www.googleapis.com/customsearch/v1?key= entfernte API-ID & cx = entfernte Such-ID & q = The + Devil + ging + runter + nach + Georgia & alt = atom & num = 5) [function.file-get-content]: Stream konnte nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis in C: \ xampp \ htdocs \ tutorial \ retrieve_website.php in Zeile 29 Warnung: DOMDocument :: loadXML () [domdocument.loadxml]: Leere Zeichenfolge, die als Eingabe in C: \ xampp \ htdocs \ tutorial \ retrieve_website.php in Zeile 33 angegeben wird openssl: kein http-Wrapper: ja https wrapper: nein wrapper: 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"}
Was habe ich übersehen oder versäumt? Nach meinem eigenen Wissen habe ich alles getan, was ich über HTTPS und OpenSSL recherchiert habe
/apache/bin/php.ini
ich es in XAMPP Portable Light 1.8.1 nicht finden kann? Esphp/php.ini
existiert jedoch, aber das Aktivieren von ssl hier hilft nicht :(