Eu não sei ao certo por que, mas embora minha versão 7.22 não deva ser afetada por todo o problema do NTLM, parece que é.
A única solução parece ser usar uma versão antiga (< 7.19, tentei com 7.15) ou usar uma nova versão (tentei 7.26). Como dito, não posso fazer downgrade ou upgrade da própria libcurl apenas para este recurso. Isso significa que precisamos encontrar uma solução alternativa ...
Solução usada (aviso: hackear)
-
Baixe e compile o curl que você deseja usar. Eu NÃO fiz isso como root //
sudo
isto porque eu não quero substituir a libcurl atual etc!wget http://curl.haxx.se/download/curl-7.26.0.zip ./configure --prefix=/local_path/ make make install
-
Teste o novo comando
curl
que acabamos de compilar: ele dá o 401, mas ao invés dogss_init_sec_context()
você deve ver ele indo para um (no final) 302. Isso está ganhando. / p> -
A parte de hack: use este
libcurl
ao chamar seu script. Estamos trabalhando com um "app" PHP de terceiros (uma das razões pelas quais não estou feliz em mudar todos os curl libs) e, em vez de chamar isso diretamente, criamos um wrapper feio, mas que funciona, que chama algo assim :$se = shell_exec("LD_LIBRARY_PATH=/local_path/lib php /path/3rdparty.php");
Sim, isso tem desvantagens, e sim, isso é um exemplo de esqueleto (o que significa que você provavelmente deseja adicionar algumas coisas, como talvez o caminho original, por exemplo), mas os princípios básicos estão lá.
Não estou realmente orgulhoso disso, mas acho que mais pessoas são contidas pelo fato de não poderem simplesmente atualizar seu libcurl
para uma versão aleatória e usarem algum tipo de plugin que usa, por exemplo, php-ews
ou qualquer coisa criada no NTLMSoapClient
.
Espero que haja outra opção, mas como esta é atualmente a única maneira de fazê-la funcionar, pensei em compartilhar.