Does PHP SoapClient support HTTPS connections

后端 未结 4 1476
庸人自扰
庸人自扰 2020-12-18 12:43

I\'m using XAMPP on Windows and try to work with PHP soap extension SoapClient. I\'m trying to load a WSDL file hosted in HTTPS site using the following code



        
相关标签:
4条回答
  • 2020-12-18 13:01

    it has to do with this change in php 5.6: http://php.net/manual/en/migration56.openssl.php

    I have the same trouble on Windows with php 5.6 and it works fine on Linux with php 5.6.

    You can use the function openssl_get_cert_locations to see what are the certificate locations.

    So far I wasn't able to find a solution.

    0 讨论(0)
  • 2020-12-18 13:16

    To workaround this error you could deactivate the SSL certificate validation. But keep in mind, that this should only be done for test cases, because this makes your connection insecure!

    You can pass a stream context when instantiating the SoapClient like this:

    <?php
    $myClient = new SoapClient("https://smi.sp.f-secure.com/smi/5.1/services/EchoService?wsdl", [
        'stream_context' => stream_context_create([
            'ssl' => [
                'verify_peer' => false,
                'verify_peer_name' => false,
            ],
        ]),
    ]);
    

    If you have a valid certificate but it is selfsigned, there is another solution (more secure):

    <?php
    $myClient = new SoapClient("https://smi.sp.f-secure.com/smi/5.1/services/EchoService?wsdl", [
        'stream_context' => stream_context_create([
            'ssl' => [
                'allow_self_signed' => true,
            ],
        ]),
    ]);
    
    0 讨论(0)
  • PHP Soap Extension, SoapClient supports HTTPS connections.

    My problem is definately a bug, I'm dealing with XAMPP 5.6.3 (PHP 5.6.3, Apache 2.4.10)

    When I deploy XAMPP 5.5.19 (PHP 5.5.19, Apache 2.4.10) my code works just fine. The WSDL file is downloaded from HTTPS site and processed normally.

    0 讨论(0)
  • 2020-12-18 13:20

    Having the same problem with PHP 5.6.9 on a Windows server which formerly when using PHP 5.3.3 had no problem with this. Checked every setting recommended (extensions being loaded), you know what, afterwards I found out there is no problem when running the script on the command line...

    Additional: When trying to catch the SOAP exception, it fails. I hoped in this version the age old https bug concerning the SOAP client not taking the socket timeout into account was fixed, but the problems with the SOAP client seem to be ongoing.

    0 讨论(0)
提交回复
热议问题