O problema está na questão. Fiz uma investigação minuciosa de soluções em relação a isso e sei que existem tópicos para isso e também os segui e nada funcionou. Dito isto, vou listar exatamente tudo o que fiz até agora. Estou executando o PHP 5.2.14 com Zend Debugging na versão mais recente do Eclipse no meu computador com Windows XP. Eu tenho 1 GB de RAM. Eu tenho o XAMPP em execução com o Apache, MySQL e FileZilla instalados.
No XAMPP, eu fiz o seguinte (o Apache estava desativado durante essas alterações): Clique em Admin no Painel de controle do XAMPP e vá para https:// localhost/xampp/
. A partir daí, aceitei os materiais desta linha na página de boas-vindas:
Para suporte ao OpenSSL, use o certificado de teste com https: // 127.0.0.1 ou https: // localhost.
Na mesma seção, verifiquei phpinfo()
. Em 'Ambiente', SERVER["HTTPS"]
é on
. Em 'Ambiente Apache', HTTPS
é On
. Em 'Variáveis PHP, _SERVER["HTTPS"]
é On
. Em 'Phar', OpenSSL support
é disabled
(instale ext / openssl). Não sei como habilitar o Phar.
Agora, com relação aos arquivos em C: \ xampp, fui para a pasta PHP. Em ambos os arquivos php.ini produção e desenvolvimento (melhor prevenir do que remediar), eu tenho allow_url_fopen=On
, allow_url_include=On
e eu removi o ponto e vírgula, de modo que extension=php_openssl.dll
não é mais comentada. Eu até confirmei que o .dll está na pasta ext da pasta PHP. O libeay32.dll e o ssleay32.dll estão nas pastas PHP e Apache. A pasta Apache não contém arquivos php.ini produtivos ou em desenvolvimento.
Eu fui a http://www.slproweb.com/products/Win32OpenSSL.html e instalei o Win32 OpenSSL v1.0.0d para uma medida segura.
Agora, a linha de código em questão no meu retrieve_website.php fica assim:
$urlquery = "https://www.googleapis.com/customsearch/v1?key=".$appid."&cx=".$google_searchid."&q=".$query."&alt=atom&num=".$results;
$xmlresults = file_get_contents($urlquery);
Eu tenho dois outros sites que eu consulta, mas eles são servidos via HTTP e funcionam bem. Eu também tenho essa linha de código inserida perto do final do 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 eu o executo como um script PHP no Eclipse, tudo sai perfeitamente bem do jeito que eu quero, juntamente com estes resultados:
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"
}
Apesar de todas essas alterações que fiz (depois de iniciar o Apache), ainda recebo os mesmos erros na primeira vez em que acesso meu script PHP no Eclipse e Firefox via http: //localhost/tutorial/retrieve_website.php :
Aviso: file_get_contents () [function.file-get-contents]: Não foi possível encontrar o wrapper "https" - você esqueceu de ativá-lo quando configurou o PHP? em C: \ xampp \ htdocs \ tutorial \ retrieve_website.php na linha 29
Aviso: file_get_contents (https: // www.googleapis.com/customsearch/v1?key= ID da API removida & cx = ID da pesquisa removida & q = The + Devil + foi + descer + para + Geórgia & alt = atom & num = 5) [function.file-get-contents]: falha ao abrir o fluxo: Não existe esse arquivo ou diretório em C: \ xampp \ htdocs \ tutorial \ retrieve_website.php na linha 29
Aviso: DOMDocument :: loadXML () [domdocument.loadxml]: string vazia fornecida como entrada em C: \ xampp \ htdocs \ tutorial \ retrieve_website.php na linha 33
openssl: não http wrapper: sim https wrapper: não wrappers: matriz (10) {[0] => string (3) "php" [1] => string (4) "file" [2] => string (4 ) "glob" [3] => sequência (4) "dados" [4] => sequência (4) "http" [5] => sequência (3) "ftp" [6] => sequência (3) " zip "[7] => string (13)" compress.zlib "[8] => string (14)" compress.bzip2 "[9] => string (4)" phar "}
O que ignorei ou deixei de fazer? Que eu saiba, eu fiz tudo o que pesquisei sobre HTTPS e OpenSSL
/apache/bin/php.ini
não é possível encontrá-lo no XAMPP Portable Light 1.8.1? No entantophp/php.ini
, existe, mas ativar o ssl aqui não ajuda :(