Como corrigir o Apache de travar com o PHP + Curl em uma requisição SSL? [fechadas]

3

Meu Apache processa os segfaults sempre que eu chamo curl_exec() do PHP com uma URL "https: //".

Se eu usar http em vez de https como o transporte de URL, ele funcionará perfeitamente, por isso sei que as opções curl e as outras opções de curl estão corretas.

Eu posso usar curl da linha de comando nesse servidor usando a versão https da URL e ela funciona perfeitamente, então eu sei que o servidor remoto está respondendo corretamente, o certificado não está expirado, etc. .

Meu servidor é:

Linux 2.6.32-21-server #32-Ubuntu SMP Fri Apr 16 09:17:34 UTC 2010 x86_64 GNU/Linux

Minha versão do Apache é:

Server version: Apache/2.2.14 (Ubuntu)
Server built:   Apr 13 2010 20:21:26

Minha versão do PHP é:

PHP 5.3.2-1ubuntu4.2 with Suhosin-Patch (cli) (built: May 13 2010 20:03:45) 
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

Minha informação do módulo de curvar do PHP é:

cURL support => enabled
cURL Information => 7.19.7
Age => 3
Features
AsynchDNS => No
Debug => No
GSS-Negotiate => Yes
IDN => Yes
IPv6 => Yes
Largefile => Yes
NTLM => Yes
SPNEGO => No
SSL => Yes
SSPI => No
krb4 => No
libz => Yes
CharConv => No
Protocols => tftp, ftp, telnet, dict, ldap, ldaps, http, file, https, ftps
Host => x86_64-pc-linux-gnu
SSL Version => OpenSSL/0.9.8k
ZLib Version => 1.2.3.3
    
por Jason Cohen 23.08.2010 / 19:52

3 respostas

0

method1:

Você pode tentar criar a última versão 7.49.1 curl à mão e, em seguida, alterar o link flexível para o antigo, normalmente ele está localizado em / usr / bin / curl e curl-config. em seguida, corrija lib em /etc/ld.conf.d/local.conf e execute o comando "ldconfig"

method2:

Antes de mais nada, a versão padrão do CentOS 6 do curl / libcurl é recente o suficiente para que você não precise dos pacotes antigos do comp (libcurl7155 etc.).

A maneira mais fácil de instalar o curl atualizado a partir do meu repo é instalar o meu pacote de repo release link

rpm -Uvh link

e, em seguida, edite o arquivo /etc/yum.repos.d/city-fan.org.repo para alterar a linha enabled = 1 para enabled = 0, para impedir a entrada de qualquer coisa de lá quando você não estiver esperando.

Você pode ver o que aconteceria se atualizasse o curl do meu repositório fazendo: yum --enablerepo = city-fan.org update curl

Neste ponto, você pode ver o que seria instalado / removido (eu esperaria que ele instalasse / atualizasse algumas bibliotecas, além de curl e libcurl, e não removesse nada), e diga "yes" ou "no" para a atualização. A versão atualizada do curl deve funcionar bem com tudo no CentOS 6.

Eu fiz exatamente isso e depois de reiniciar o Apache, tenho o prazer de dizer que o PHP também está usando a nova versão.

    
por 12.06.2016 / 11:08
0

Considere adicionar o seguinte:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

Agora, para ver o que está acontecendo, use var_dump () ou error_log () . Deve ser algo assim:

var_dump(curl_exec($ch));

OR

error_log(curl_exec($ch));

Se você usar error_log() , deverá encontrar o rastreio no arquivo error_log.

Se isso falhar, você não tem escolha, exceto usando strace

    
por 31.12.2014 / 17:39
-1

Para mim, jogar com as várias opções de curvas do PHP disponíveis com o curl_setopt () ajudou-me no passado. Tente alterar CURLOPT_SSL_VERIFYPEER e CURLOPT_SSL_VERIFYHOST para false, para iniciantes.

    
por 23.08.2010 / 20:41