0

我正在使用以下代码将 PHP 连接到计数。但它在移至生产时显示超时错误。但是当我在本地机器上运行代码时成功插入数据显示错误无法连接到 xxx.xxx.x.xx 端口 9000:连接超时出现问题.....稍后再试

<?php
/* This is PHP code to insert an entry in Tally. All required XML tags by Tally are taken here in a string and name for Ledger is taken by posted value from HTML form. */
$requestXML = '<?xml version="1.0"?>
        <ENVELOPE>
<HEADER>
<TALLYREQUEST>Export Data</TALLYREQUEST>
</HEADER>
<BODY>
<EXPORTDATA>
<REQUESTDESC>
<STATICVARIABLES>

<!--To Fetch data in XML format-->
<SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT>

<!--To Fetch data in HTML format, change the SVEXPORTFORMAT Tag value as -->
<!--$$SysName:HTML-->

</STATICVARIABLES>
<REPORTNAME>Balance Sheet</REPORTNAME>
</REQUESTDESC>
</EXPORTDATA>
</BODY>
</ENVELOPE>';

/* Actual code for importing goes here */
        $server = 'http://xxx.xxx.x.xxx:9000';
        $headers = array( "Content-type: text/xml" ,"Content-length: ".strlen($requestXML) ,"Connection: close" );

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $server);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 100000);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXML);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $data = curl_exec($ch);

        if(curl_errno($ch))
        {
            print curl_error($ch);
            echo "  something went wrong..... try later";
        }
        else
        {
            echo " request accepted";
            print $data;
            curl_close($ch);
        }


?>
4

1 回答 1

1
  1. http://xxx.xxx.x.xxx:9000 - 这是本地主机,例如 127.0.0.1?如果是这样,您将无法从远程服务器访问它。
  2. 它看起来像一个 LAN IP(例如 192.168.0.104)。在这种情况下,它将可以通过 LAN(同一网络,另一台计算机)访问,但不能从远程服务器(不在同一 LAN 上)访问。
  3. 如果不是本地主机/局域网 IP,它是静态 IP 吗?我的意思是,本地 ISP 不会不断更改此 IP?
  4. 如果是静态IP,Windows防火墙是否允许ping 9000端口?

您的生产服务器无法访问此 IP/端口,这就是连接超时错误的原因。

于 2019-11-12T01:30:36.583 回答