PHP Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://xxxx.com'.
這個錯誤是我從PHP5.6升級到php7.2的時候遇到的問題,從google搜索后發現很多人出現這個問題,一直沒有找到好的結果,知道一個文章里面找到下面的代碼
$opts = array( 'http' => array( 'user_agent' => 'PHPSoapClient' ), 'ssl' => array( 'verify_peer' => false ), ); $context = stream_context_create($opts); $requestUrl = 'https://labelserver.endicia.com/LabelService/EwsLabelService.asmx?wsdl'; $client = new SoapClient($requestUrl, array("trace" => 1, "cache_wsdl" => WSDL_CACHE_NONE, "exception" => 1, 'stream_context' => $context));
問題的主要是 SSL認證失敗
通過openssl_get_cert_locations 獲取默認證書路徑。
openssl_get_cert_locations() rray(8) { ["default_cert_file"]=> string(21) "/usr/lib/ssl/cert.pem" ["default_cert_file_env"]=> string(13) "SSL_CERT_FILE" ["default_cert_dir"]=> string(18) "/usr/lib/ssl/certs" ["default_cert_dir_env"]=> string(12) "SSL_CERT_DIR" ["default_private_dir"]=> string(20) "/usr/lib/ssl/private" ["default_default_cert_area"]=> string(12) "/usr/lib/ssl" ["ini_cafile"]=> string(0) "" ["ini_capath"]=> string(0) ""
下載證書,並保存到目錄,后問題得到解決
