当前位置: 首页 > 知识库问答 >
问题:

IIS返回错误500当发送文件通过php curl但不是通过邮递员

诸正谊
2023-03-14

这是我的设想。一个用PHP(7.x)编写的web应用程序,某个点通过cURL向web服务器发送一些信息和2个文件。web服务器有一些RESTAPI也是用PHP(7.x)编写的。

我的问题是,当我发送文件时,服务器(Win 2008 R2)上的IIS(7.5)返回“500内部服务器错误”。查看错误详细信息,错误代码为“0x80070026”

如果我使用Apache在另一台服务器上部署API,那么API运行良好。在IIS上,我做了一些测试和:-如果我发送没有文件的cURL命令,API运行良好。-如果我调用带有Postman和附加文件的API,API也可以正常运行。

web应用程序具有此代码

$url = $this->config->item('API_endpoint').'Scans/scans/';
        $username = $this->config->item('API_username');
        $password = $this->config->item('API_password');
        //$header = array('Content-Type: multipart/form-data');

        $postData = array(
            'scanDate' => date('Y-m-d H:i:s'),
            ...other data...
            'file1' => curl_file_create('file1.stl'),
            'file2' => curl_file_create('file2.stl')
        );

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
        //curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        //curl_setopt($ch, CURLOPT_HEADER, false);

        $result=curl_exec($ch);

服务器上的脚本读取数据并保存文件。

我还尝试添加了curl_setopt(CURLOPT_USERAGENT,'Mozilla/4.0(兼容;MSIE 5.01;Windows NT 5.0))

IIS日志显示

2020-06-09 10:37:27 172.31.2.11员额/索引。php/Scans/Scans/-yyyy-x.x.x Mozilla/4.0(兼容;MSIE 5.01;Windows NT 5.0)500 0 38 405

谢谢

编辑:在我的curl脚本中,我添加了一个var_dump($result);

这是输出,带有IIS的“详细”错误


共有1个答案

廖绍辉
2023-03-14

我在IIS上的PHP7.3也遇到了类似的问题,在wireshark上,我发现CURL在原始POST请求之后发送了100个continue请求,而POSTMAN没有。

我添加了选项curl_setopt($ch,CURLOPT_HTTPHEADER,array('Expect:') 到我的卷曲请求以避免它

这使得CURL停止发送100-继续,IIS不再抛出带有错误代码x80070026的500。

 类似资料:
  • 问题内容: 如果我不想通过SMTP而是通过sendmail发送邮件,是否有用于封装此过程的python库? 更好的是,是否有一个好的库可以抽象整个“ sendmail -versus- smtp”选择? 我将在大量的Unix主机上运行此脚本,其中只有一些在localhost:25上侦听;其中一些是嵌入式系统的一部分,不能设置为接受SMTP。 作为优良作法的一部分,我真的很想让库自己解决标头注入漏洞

  • 我目前有一个邮件服务器正在运行。我可以通过 mywebsite.com/roundcube/ 从这个网站我可以发送和接收电子邮件适当。日志显示所有的邮件进出都很好。我从这里发到我的gmail账户,然后又发回来。 然而,我真正想做的是使用javax mail从java发送一些邮件。

  • 是否有一种方法可以将catch{}以序列化为JSON对象的方式从catch{}返回错误消息?我考虑向myObject添加一个List属性,并在其中存储错误。有没有更好的办法做到这一点?

  • 我通过SMTP服务发送电子邮件时收到以下错误消息: 我的系统上有以下SMTP设置: 操作系统:Windows 7家庭高级版 IIS:IIS 7 如何解决这个问题? 谢谢。

  • 问题内容: 我正在使用。 使用发送电子邮件(通过)的最佳方法是什么? 问题答案: 有关使用Outlook的解决方案,请参见下面的TheoretiCAL答案。 否则,请使用python随附的smtplib。请注意,这将要求您的电子邮件帐户允许smtp,默认情况下不一定启用此功能。 编辑: 此示例使用保留域,如RFC2606中所述 为了使它真正与gmail配合使用,Doe先生需要进入gmail中的选项

  • 本文向大家介绍Java通过exchange协议发送邮件,包括了Java通过exchange协议发送邮件的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java通过exchange协议发送邮件的具体代码,供大家参考,具体内容如下 pom.xml 导入包 application.properties 配置信息 代码 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊