从PHP 5.3迁移到5.6

时间:2015-07-21 09:44:36

标签: php curl

我从PHP 5.3迁移到PHP 5.6.3。 在执行curl请求时,它现在给出了一个错误:

  

请求的网址返回错误:411长度必需

所有数据都是一样的。 msg上的vardump返回一个620的字符串。长度是正确的,没有任何变量被更改并包含相同的数据,无论是PHP 5.3还是PHP 5.6.3。

总之;我有完全相同的设置,数据,格式等,但现在curl给出411错误。

这是我的代码片段:

$handle   = curl_init();

curl_setopt($handle,     CURLOPT_URL, $this->_url);
curl_setopt($handle,     CURLOPT_FAILONERROR, true);
curl_setopt($handle,     CURLOPT_HTTPHEADER, array("Content-Type: text/xml","SOAPAction: ".$request."","Content-length: ".strlen($msg))); 
curl_setopt($handle,     CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle,     CURLOPT_POSTFIELDS, $msg);
curl_setopt($handle,     CURLOPT_RETURNTRANSFER, 1);
curl_setopt($handle,     CURLOPT_SSL_VERIFYPEER, 0); 

curl_setopt($handle,     CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
curl_setopt($handle,     CURLOPT_USERPWD, $this->_httpUser.':'.$this->_httpPassword);

$response = curl_exec($handle);

PHPINFO卷曲:

  

启用cURL支持

     

cURL信息7.39.0

     

3岁

     

功能

     

AsynchDNS是

     

CharConv否

     

调试否

     

GSS-谈判否

     

IDN是

     

IPv6是

     

krb4否

     

Largefile Yes

     

libz是

     

NTLM是

     

NTLMWB否

     

SPNEGO是

     

SSL是

     

SSPI是

     

TLS-SRP否

     

协议dict,file,ftp,ftps,gopher,http,https,imap,imaps,ldap,pop3,pop3s,rtsp,scp,sftp,smtp,smtps,telnet,tftp

     

主机i386-pc-win32

     

SSL版本OpenSSL / 1.0.1i

     

ZLib版本1.2.7.3

     

libSSH版本libssh2 / 1.4.3

1 个答案:

答案 0 :(得分:0)

好的,我不得不删除内容长度部分,因为curl会自动执行此操作,因为非' put'要求。

我的代码在PHP 5.3下运行而不是PHP 5.6.3的原因我不知道。然而,这是解决方案。