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 :(xampp/php/php.ini
:) Danke, PS: VERGESSEN SIE NICHT, APACHE NACH DEM SPEICHERNIch musste
extension=php_openssl.dll
meinerphp.ini
Datei in hinzufügenxampp/php/php.ini
. Irgendwie war es nicht da, nach dem Hinzufügen und Neustarten von Apache funktionierte alles einwandfrei.quelle
Fügen Sie einfach zwei Zeilen in Ihre php.ini-Datei ein.
Es funktioniert für mich.
quelle
allow_url_include = On
, was es für mich gelöst hat.Ihr Apache ist wahrscheinlich nicht mit SSL-Unterstützung kompiliert. Verwenden Sie trotzdem cURL anstelle von file_get_contents. Versuchen Sie diesen Code, wenn er fehlschlägt, habe ich recht.
quelle
$xmlresults = file_get_contents($urlquery);
mit$xmlresults = curl($urlquery);
. PHP Script lief einwandfrei mit den gleichen Ergebnissen wie file_get_contents ().Fatal error: Call to undefined function curl_init() in C:\xampp\htdocs\tutorial\retrieve_website.php on line 14
'--with-openssl=/usr' '--with-openssl-dir=/usr'
Grundsätzlich müssen Sie Apache mit SSL-Unterstützung kompilieren. Außerdem sollten Sie cURL aktivieren, das einige Male schneller als FGC ist und zahlreiche Optionen bietet. Ich habe keine Ahnung, wie das unter Windows geht, sorry.return curl_exec($curl);
, würde dies nicht diecurl_close($curl);
Ausführung in der nächsten Zeile verhindern ?Ich habe die openssl-Erweiterung aktiviert und es funktioniert für mich :)
; extension = php_openssl.dll
zu
extension = php_openssl.dll
quelle
In meinem Fall war das Problem darauf zurückzuführen, dass WAMP eine andere php.ini für CLI als Apache verwendete, sodass Ihre über das WAMP-Menü vorgenommenen Einstellungen nicht für CLI gelten. Ändern Sie einfach die CLI php.ini und es funktioniert.
quelle
C:\path\to\wamp\bin\php\php5.3.10\php.ini
In OpenSuse 12.1 war nur Folgendes erforderlich:
quelle
Für mich musste ich diese Zeilen in php.ini auskommentieren:
"ext" ist anwendbar, wenn sich php_openssl.dll im Ordner "ext" befindet.
Hinweis: Ich musste dies für zwei meiner php.ini-Dateien tun, sonst würde es nicht funktionieren. Eine befindet sich im Installationsordner vs.php und die andere im PHP-Ordner
Quelle
quelle
Auf MAC AMPPS habe ich die php-5.5.ini wie folgt aktualisiert und jetzt funktioniert es.
quelle
In meinem Fall (PHP 7.3 unter Windows im FastCGI-Modus) war es unkommentiert
extension=openssl
. Nicht extension = php_ openssl , da die meisten Menschen hier posten.(Das Gleiche wurde hier veröffentlicht , jedoch ohne Details zum Betriebssystem, was hier einen wesentlichen Unterschied darstellen kann.)
quelle
PHP7 entfernen Sie in der Datei php.ini das ";" Vor
extension=openssl
quelle
Problem mit file_get_contents für die Anforderungen https in Windows , kommentieren Sie die folgenden Zeilen in der Datei php.ini aus:
quelle
Sie können diese Funktion stattdessen verwenden, wenn Curl auf Ihrem System installiert ist:
quelle
Nachdem ich den ganzen Tag herumgeschnüffelt hatte, fand ich die Antwort dank dieses Handbuchs heraus: http://piwigo.org/forum/viewtopic.php?id=15727
Grundsätzlich gibt es unter Eclipse -> Windows -> Einstellungen -> PHP Executables einen Abschnitt, in dem auf .exe und .ini verwiesen wird. Die Standardeinstellungen befanden sich im Eclipse-Verzeichnis, wenn Sie die SDK-Funktion der PHP-Entwicklungstools über Eclipses Install New Software im Menü Hilfe installieren.
Stattdessen habe ich eine neue ausführbare Datei namens PHP 5.3.5 (CGI) hinzugefügt und auf die Dateien cgi.exe und .ini aus dem PHP-Ordner von xampp verwiesen.
Vielen Dank an webarto, dass Sie sich die Zeit genommen haben, mir zu helfen.
quelle
Ich verwende opsenSUSE Leap und hatte das gleiche Problem - es bedeutet, dass OpenSSL nicht unterstützt wird. So habe ich es gelöst:
sudo service apache2 restart
Das war's, du bist fertig.
quelle
Ich habe auch diesen Fehler bekommen. Ich fand heraus, dass in meiner PHP-Version openssl nicht kompiliert war, sodass es nicht ausreichte, die Erweiterungsanweisung einfach zu php.ini hinzuzufügen. Ich weiß nicht, wie Sie dies in Ihrem speziellen Fall lösen müssen, aber für mich verwende ich Macports, und der Befehl war nur:
quelle
Für diejenigen, die Winginx verwenden ( Nginx- basiert statt Apache-basiert), habe ich dies mit den folgenden 4 Schritten behoben:
Auf den Extras schlug Menü Winginx PHP5 Config (nie etwas dagegen , 5 im Namen ...):
Wählen Sie die PHP-Version aus, die die php.ini ändern soll:
Auf der PHP - Erweiterungen Registerkarte wählen Sie die php_openssl Erweiterung und drücken Sie die Save - Taste:
Starten Sie den entsprechenden PHP-Dienst über die Taskleiste neu ( Stop and Start ):
quelle
Versuche dies:
quelle
Wenn Sie einen Wamp-Server verwenden, klicken Sie auf das Symbol
Gehen Sie dann zu PHP und klicken Sie auf die PHP-Erweiterung. Dort müsste php_openssl aktiviert und der Wamp-Server neu gestartet werden
quelle
Ändern Sie in der Datei simple_html_dom.php den Wert der
$offset
Variablen von-1
bis0
. Dieser Fehler tritt normalerweise auf, wenn Sie auf PHP 7 migrieren .HtmlDomParser::file_get_html
Verwendet einen Standardversatz von-1
, sollte das Übergeben0
Ihr Problem beheben.quelle