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 :(xampp/php/php.ini
:) Obrigado, PS: não esqueça de reiniciar o apache Depois de salvar MUDANÇASEu tive que adicionar
extension=php_openssl.dll
ao meuphp.ini
arquivo localizado emxampp/php/php.ini
. De alguma forma, não estava lá, depois de adicioná-lo e reiniciar o Apache tudo estava funcionando bem.fonte
basta adicionar duas linhas no seu arquivo php.ini.
está funcionando para mim.
fonte
allow_url_include = On
que resolveu para mim.Seu Apache provavelmente não foi compilado com suporte a SSL. Use cURL em vez de file_get_contents de qualquer maneira. Experimente este código, se falhar, então estou certo.
fonte
$xmlresults = file_get_contents($urlquery);
por$xmlresults = curl($urlquery);
. O script PHP funcionou perfeitamente com os mesmos resultados que file_get_contents (). Executando-o como página da Web PHP via localhost / tutorial / retrieve_website.php e eu recebo este erro: #: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'
basicamente, você precisa compilar o Apache com suporte a SSL, também deve habilitar o cURL duas vezes mais rápido que o FGC e possui várias opções. Não tenho idéia de como fazer isso no Windows, desculpe.return curl_exec($curl);
, isso não impediriacurl_close($curl);
a execução da próxima linha?Eu ativei a extensão openssl e funcionou para mim :)
; extension = php_openssl.dll
para
extension = php_openssl.dll
fonte
No meu caso, o problema ocorreu devido ao WAMP usar um php.ini para CLI diferente do Apache, portanto, suas configurações feitas através do menu WAMP não se aplicam ao CLI. Basta modificar o CLI php.ini e ele funciona.
fonte
C:\path\to\wamp\bin\php\php5.3.10\php.ini
no OpenSuse 12.1, a única coisa necessária era:
fonte
Para mim, tive que descomentar essas linhas no php.ini:
"ext" é aplicável se php_openssl.dll estiver localizado na pasta "ext".
Nota: Eu tive que fazer isso para dois dos meus arquivos php.ini, caso contrário não funcionaria. Um localizado na pasta de instalação vs.php e o outro na pasta PHP
Fonte
fonte
No MAC AMPPS, atualizei o php-5.5.ini com o seguinte e agora ele funciona.
fonte
No meu caso (PHP 7.3 no Windows no modo FastCGI), isso foi descomentador
extension=openssl
. Não extension = php_ openssl , como a maioria das pessoas publica aqui.(A mesma coisa foi publicada aqui , mas sem detalhes no SO, o que pode ser uma diferença importante aqui.)
fonte
PHP7, no arquivo php.ini, remova o ";" antes
extension=openssl
fonte
Problema com file_get_contents para as solicitações https no Windows , remova o comentário das seguintes linhas no arquivo php.ini:
fonte
Você pode usar esta função se o curl estiver instalado no seu sistema:
fonte
Depois de bisbilhotar o dia inteiro, descobri a resposta graças a este guia: http://piwigo.org/forum/viewtopic.php?id=15727
Basicamente, em Eclipse -> Windows -> Preferências -> Executáveis PHP, há uma seção na qual os arquivos .exe e .ini são referenciados. Os padrões estavam no diretório Eclipse quando você instala o Recurso SDK das Ferramentas de Desenvolvimento PHP a partir dos Eclipses Instalar Novo Software no menu Ajuda.
Então, em vez disso, adicionei um novo executável chamado PHP 5.3.5 (CGI) e referenciei o cgi.exe e .ini da pasta php do xampp.
Obrigado webarto por dedicar seu tempo para me ajudar.
fonte
Estou usando o opsenSUSE Leap e tive o mesmo problema - significa que não há suporte para o OpenSSL. Foi assim que eu resolvi:
sudo service apache2 restart
É isso aí, você terminou.
fonte
Também recebi esse erro. Eu descobri que minha versão do PHP não tinha o openssl compilado, então simplesmente adicionar a diretiva de extensão ao php.ini não era suficiente. Eu não sei como você deve resolver isso no seu caso específico, mas para mim eu uso macports, e o comando foi apenas:
fonte
Para aqueles que usam o Winginx (baseado no nginx em vez do Apache), eu o corrigi com estas 4 etapas:
No menu Ferramentas, pressione o Winginx PHP5 Config (não importa os 5 no nome ...):
Selecione a versão do PHP que você deseja que o php.ini altere:
Na guia Extensões do PHP, selecione a extensão php_openssl e pressione o botão Salvar :
reinicie o serviço PHP apropriado através da barra de tarefas ( Parar e Iniciar ):
fonte
Tente o seguinte:
fonte
Se você estiver usando o servidor wamp, vá para o ícone, clique neste
Em seguida, vá para o PHP e clique na extensão PHP. Php_openssl precisará ativar a partir daí e reiniciar o servidor wamp
fonte
Dentro do simple_html_dom.php altere o valor da
$offset
variável de-1
para0
. esse erro geralmente ocorre quando você migra para o PHP 7.HtmlDomParser::file_get_html
usa um deslocamento padrão de-1
, a passagem0
deve resolver seu problema.fonte