我从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
答案 0 :(得分:0)
好的,我不得不删除内容长度部分,因为curl会自动执行此操作,因为非' put'要求。
我的代码在PHP 5.3下运行而不是PHP 5.6.3的原因我不知道。然而,这是解决方案。