Il problema è nella domanda. Ho fatto un'indagine approfondita per trovare soluzioni in merito e so che ci sono argomenti a riguardo e li ho seguiti e nulla ha funzionato. Detto questo, elencherò esattamente tutto ciò che ho fatto finora. Sto eseguendo PHP 5.2.14 con Zend Debugging sull'ultima versione di Eclipse sul mio computer Windows XP. Ho 1 GB di RAM. Ho XAMPP in esecuzione con Apache, MySQL e FileZilla installati.
Su XAMPP ho fatto quanto segue (Apache era spento durante queste modifiche): ho fatto clic su Amministratore dal pannello di controllo di XAMPP e sono andato su https:// localhost/xampp/
. Da lì ho accettato i certificati da questa riga nella pagina di benvenuto:
Per il supporto OpenSSL, utilizzare il certificato di prova con https: // 127.0.0.1 o https: // localhost.
In quella stessa sezione ho controllato phpinfo()
. Sotto "Ambiente", SERVER["HTTPS"]
è on
. Sotto "Ambiente Apache", HTTPS
è On
. Sotto "Variabili PHP, _SERVER["HTTPS"]
è On
. Sotto "Phar", OpenSSL support
è disabled
(installa ext / openssl). Non so come abilitare quello Phar.
Ora per quanto riguarda i file stessi in C: \ xampp, sono andato alla cartella PHP. In entrambi i file php.ini di produzione e sviluppo (meglio prevenire che curare), ho allow_url_fopen=On
, allow_url_include=On
e ho rimosso il punto e virgola, in modo tale che extension=php_openssl.dll
non è più commentata. Ho anche confermato che il .dll si trova nella cartella ext della cartella PHP. Sia libeay32.dll che ssleay32.dll si trovano nelle cartelle PHP e Apache. La cartella Apache non contiene file php.ini produttivi o di sviluppo.
Sono andato su http://www.slproweb.com/products/Win32OpenSSL.html e ho installato Win32 OpenSSL v1.0.0d per sicurezza.
Ora la riga di codice in questione nel mio retrieve_website.php assomiglia a questo:
$urlquery = "https://www.googleapis.com/customsearch/v1?key=".$appid."&cx=".$google_searchid."&q=".$query."&alt=atom&num=".$results;
$xmlresults = file_get_contents($urlquery);
Ho altri due siti Web che richiedo ma sono serviti tramite HTTP e funzionano bene. Ho anche inserito questa riga di codice vicino alla fine dello script:
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);
Quando lo eseguo come uno script PHP su Eclipse, tutto viene riprodotto perfettamente come voglio insieme a questi risultati:
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"
}
Nonostante tutte queste modifiche che ho apportato (dopo aver avviato Apache), ottengo sempre gli stessi errori la prima volta che accedo al mio script PHP in Eclipse e Firefox tramite http: //localhost/tutorial/retrieve_website.php :
Attenzione: file_get_contents () [function.file-get-contents]: Impossibile trovare il wrapper "https" - hai dimenticato di abilitarlo quando hai configurato PHP? in C: \ xampp \ htdocs \ tutorial \ retrieve_website.php sulla linea 29
Avvertenza: file_get_contents (https: // www.googleapis.com/customsearch/v1?key= ID API rimosso & cx = ID ricerca rimosso & q = The + Devil + andato + giù + a + Georgia & alt = atom & num = 5) [function.file-get-contents]: impossibile aprire il flusso: nessun file o directory in C: \ xampp \ htdocs \ tutorial \ retrieve_website.php sulla linea 29
Avvertenza: DOMDocument :: loadXML () [domdocument.loadxml]: stringa vuota fornita come input in C: \ xampp \ htdocs \ tutorial \ retrieve_website.php sulla linea 33
openssl: no http wrapper: sì https wrapper: no 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 "}
Che cosa ho trascurato o fallito? Per quanto ne so, ho fatto tutto ciò che ho cercato su HTTPS e OpenSSL
/apache/bin/php.ini
non lo trovo in XAMPP Portable Light 1.8.1? Tuttaviaphp/php.ini
esiste, ma abilitare ssl qui non aiuta :(