

パッケージ版サイボウズガルーンのSOAPAPIを今まで問題なく使っていたのですが、  
何かが原因でAPIで取得ができなくなり困っております。

症状としては、curlを使った通信がイントラネット側サーバに到達できないという症状です。

下記コードのaaaaaをホスト名にするとDNSエラーのページが返ってきて、  
IPアドレスにしても、タイムアウトになります。  
クラウド版も利用しているので、URL自体をクラウド用に変えると正常にxmlが返ってきます。  
（URLをhttps://www.google.com/にすると、HTMLの戻りがありますが、イントラサーバーのURLだとDNSエラー）

なお、file_get_contentsを使うとパッケージ版、クラウド版両方まったく問題なくxmlが返ってきます。

サーバはwindows2012でガルーンと同じセグメントに設置してあり、  
winhttpプロキシは無しの状態（IEオプションのプロキシはセット）

別のwindows2012サーバに同じバージョンのPHPをセットして、同じコードを試しましたが問題ありませんでした。  
サーバーの再インストールしかないのでしょうか…

[code]

     echo curl_get_contents( "http://aaaaa/scripts/cbgrn/grn.exe?WSDL", "", $timeout = 60 );    
     //echo  file_get_contents("http://aaaaa/scripts/cbgrn/grn.exe?WSDL");
     exit;
        
     function curl_get_contents( $url, $request, $timeout = 60 ){
            $ch = curl_init();
            $header = array('Content-Type: application/soap+xml; charset=UTF-8;');
            curl_setopt($ch, CURLOPT_URL, $url );
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
            curl_setopt($ch, CURLOPT_TIMEOUT, $timeout );
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
            $result = curl_exec( $ch );
            curl_close( $ch );
            return $result;
     }
    
[/code]


CC BY-SA 4.0
2022-09-18T00:49:20.170
91149
2022-09-20T02:48:56.983
2022-09-20T02:48:56.983
3060
27823
question
php php-curl
PHP の curl でイントラネットのサーバに接続できない


自己解決しました！

イントラ側向けには明示的にプロキシを空でセットしないといけないようです…

[code]

    curl_setopt($ch, CURLOPT_PROXY, '');
    
[/code]

さらにわかりづらいことに、一度この処理を走らせると記憶されるようで  
以降このサーバーに関しては上記一文なしでもいけてしまうという('Д')…


CC BY-SA 4.0
2022-09-20T00:37:04.023
91187
2022-09-20T01:10:52.193
2022-09-20T01:10:52.193
3060
27823
91149
answer