Estou trabalhando na configuração do processamento de cartão de crédito e preciso usar uma solução alternativa para o CURL. O código a seguir funcionou bem quando eu estava usando o servidor de teste (que não estava chamando um URL SSL), mas agora, quando estou testando no servidor em funcionamento com HTTPS, ele está falhando com a mensagem de erro "falha ao abrir fluxo".
function send($packet, $url) {
$ctx = stream_context_create(
array(
'http'=>array(
'header'=>"Content-type: application/x-www-form-urlencoded",
'method'=>'POST',
'content'=>$packet
)
)
);
return file_get_contents($url, 0, $ctx);
}
php
curl
https
file-get-contents
James Simpson
fonte
fonte
Para permitir o wrapper https:
php_openssl
extensão deve existir e estar habilitadaallow_url_fopen
deve ser definido paraon
No arquivo php.ini, você deve adicionar estas linhas se não existirem:
fonte
Experimente o seguinte.
fonte
Isso permitirá que você obtenha o conteúdo do url, seja um HTTPS
fonte
Isso provavelmente se deve ao fato de o servidor de destino não ter um certificado SSL válido.
fonte
Basta adicionar duas linhas em seu arquivo php.ini.
extension=php_openssl.dll
allow_url_include = On
está funcionando para mim.
fonte
allow_url_fopen
já que a questão diz respeito à abertura do url, não incluindo.Eu tive o mesmo erro. Definir
allow_url_include = On
emphp.ini
consertou para mim.fonte
HTTPS é suportado a partir do PHP 4.3.0, se você compilou o suporte para OpenSSL. Além disso, certifique-se de que o servidor de destino possui um certificado válido, o firewall permite conexões de saída e
allow_url_fopen
no php.ini está definido como verdadeiro.fonte
No meu caso, o problema era devido ao WAMP usar um php.ini para CLI diferente do Apache, então suas configurações feitas por meio do menu WAMP não se aplicam à CLI. Basta modificar o CLI php.ini e ele funciona.
fonte
Às vezes, um servidor escolherá não responder com base no que vê ou não vê nos cabeçalhos de solicitação http (como um agente de usuário apropriado). Se você puder se conectar a um navegador, pegue os cabeçalhos que ele envia e imite-os em seu contexto de stream.
fonte
Eu estava preso com https não funcional no IIS. Resolvido com:
file_get_contents ('https ..) não carregava.
edite php.ini com:
curl.cainfo = "C: \ Arquivos de programas \ PHP \ v7.3 \ extras \ ssl \ cacert.pem" openssl.cafile = "C: \ Arquivos de programas \ PHP \ v7.3 \ extras \ ssl \ cacert.pem"
finalmente!
fonte
PARA VERIFICAR SE UM URL ESTÁ ACIMA OU NÃO
O código em sua pergunta pode ser reescrito como uma versão funcional:
fonte