繁体   English   中英

cURL 不在服务器上工作,但在本地主机上工作

[英]cURL not working on server but working on localhost

我正在 Laravel 上的一个小站点上工作,我从 webservices 检索了一些数据并在我的本地主机上使用它,一切都很好,然后我将它上传到我的服务器的 3 上,但它们都无法发送请求。

服务器 1 = http://testing2.vire-news.com/ (主机:godaddy)

服务器 2 = http://testing.asmani.pk/ (主机:hostgator)

如果你点击搜索,它不会给你来自网络服务的结果。

我已经在 stackoverflow 上搜索了所有内容,并添加了各种CURLOPT_POSTCURLOPT_FOLLOWLOCATION等,但没有任何效果

在服务器 1 上它给出错误

“无法连接到 emexonline.com 端口 3000:连接被拒绝”

在服务器 2 上,它保持连接,然后超时。 我用相同的代码制作了一个简单的 php 文件来测试 laravel 环境,但它也不起作用。

注意:我已经测试了其他 curl 网络服务,如 facebook 和 twitter API,它们在这些服务器上都运行良好,我已经联系了网络服务提供商,他们说他们这边一切正常,其他客户也在使用他们的网络服务而没有任何问题。

这是我从 XML 数据中删除用户名和密码的代码。 在本地主机上一切正常,在服务器上它会出错,所有其他功能都可以正常工作,只有 webservice 没有连接。

$xml_data = '<?xml version="1.0" encoding="utf-8"?>
        <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
          <soap12:Body>
            <SearchPart xmlns="http://emexonline.com:3000/MaximaWS/">
              <Customer>
                <UserName>username</UserName>
                <Password>password</Password>
                <SubCustomerId>0</SubCustomerId>
                <CustomerId>20879</CustomerId>
              </Customer>
              <DetailNum>'.$Request->search.'</DetailNum>
              <ShowSubsts>0</ShowSubsts>
            </SearchPart>
          </soap12:Body>
        </soap12:Envelope>
        ';
        $headers = array(
        "POST /MaximaWS/Service.asmx HTTP/1.1",
        "Host: emexonline.com",
        "Content-Type: application/soap+xml; charset=utf-8",
        "SOAPAction: \"http://dpd.com/common/service/LoginService/2.0/getAuth\"",
        "Content-Length: ".strlen($xml_data)
        );

        $url = 'http://emexonline.com:3000/MaximaWS/Service.asmx';
        $curll = curl_init();
        curl_setopt($curll, CURLOPT_URL,$url);
        curl_setopt($curll, CURLOPT_RETURNTRANSFER,1);
        curl_setopt($curll, CURLOPT_TIMEOUT, 30);
        curl_setopt($curll, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($curll, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curll, CURLOPT_POSTFIELDS, $xml_data);
        $reply = curl_exec($curll);

好吧,不要问关于使用curl_errno($ch)curl_error($ch)curl_getinfo($ch) ,我已经使用过它们并得到了结果。

这是本地主机运行成功的结果和信息

Array ( [url] => http://emexonline.com:3000/MaximaWS/service.wsdl [content_type] => text/html [http_code] => 405 [header_size] => 203 [request_size] => 834 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.578 [namelookup_time] => 0.25 [connect_time] => 0.422 [pretransfer_time] => 0.422 [size_upload] => 617 [size_download] => 1293 [speed_download] => 2237 [speed_upload] => 1067 [download_content_length] => 1293 [upload_content_length] => 617 [starttransfer_time] => 0.578 [redirect_time] => 0 [redirect_url] => [primary_ip] => 86.98.88.87 [certinfo] => Array ( ) [primary_port] => 3000 [local_ip] => 192.168.0.102 [local_port] => 53325 )

error: no error  

这是服务器运行失败的结果和信息

Array ( [url] => http://emexonline.com/MaximaWS/Service.asmx [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 30.001115 [namelookup_time] => 0.12449 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [redirect_url] => [primary_ip] => [certinfo] => Array ( ) [primary_port] => 0 [local_ip] => [local_port] => 0 ) 

error: Connection timed out after 30001 milliseconds

您能否在您的代码中将超时从 30 增加到 60 还没有设置 curl_setopt($ch, CURLOPT_POST, 1) 这个参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM