相关疑难解决方法(0)

file_get_contents():SSL操作失败,代码为1.还有更多

我一直在尝试从我在服务器上创建的PHP页面访问这个特定的REST服务.我将问题缩小到这两行.所以我的PHP页面如下所示:

<?php
$response = file_get_contents("https://maps.co.weber.ut.us/arcgis/rest/services/SDE_composite_locator/GeocodeServer/findAddressCandidates?Street=&SingleLine=3042+N+1050+W&outFields=*&outSR=102100&searchExtent=&f=json");

echo $response; ?>
Run Code Online (Sandbox Code Playgroud)

该页面在第2行死亡,并出现以下错误:

  • 警告:file_get_contents():SSL操作失败,代码为1. OpenSSL错误消息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败...第2行的php
    • 警告:file_get_contents():无法在第2行的... php中启用加密
    • 警告:file_get_contents(https://maps.co.weber.ut.us/arcgis/rest/services/SDE_composite_locator/GeocodeServer/findAddressCandidates?Street=&SingleLine=3042+N+1050+W&outFields=*&outSR=102100&searchExtent=&f=json):无法打开流:第2行的... php操作失败

我们正在使用Gentoo服务器.我们最近升级到PHP 5.6版.升级后出现此问题.

我发现,当我一个地址替换REST服务一样https://www.google.com; 我的页面工作正常.

在我之前的一次尝试中,我将“verify_peer”=>false其作为参数传递给file_get_contents,如下所述: file_get_contents忽略verify_peer => false? 但就像作者所指出的那样; 它没有任何区别.

我问过我们的服务器管理员是否存在php.ini文件中的这些行:

  • 延长= php_openssl.dll
  • allow_url_fopen =开

他告诉我,因为我们在Gentoo上,openssl是在我们构建时编译的; 并且它没有在php.ini文件中设置.

我也证实这allow_url_fopen是有效的.由于这个问题的专业性; 我没有找到很多帮助信息.有没有人遇到过这样的事情?谢谢.

php rest ssl file-get-contents

163
推荐指数
14
解决办法
25万
查看次数

SOAP-ERROR:解析WSDL:找不到<definitions>

我一直在努力解决这个问题,并最终投降寻求帮助.

所以这是我的问题:

我正在尝试从远程服务器使用SOAP Web服务,wsdl文件位于此处http://ecolinthcm.pi-asp.de/logaserver/services/UsersService?wsdl

我一直与那里的开发人员保持联系,但他们一直告诉我它工作正常,所以他们没有太大帮助......

我正在使用这段小代码来戳熊看看它是否还活着:

$WSDL = "http://ecolinthcm.pi-asp.de/logaserver/services/UsersService?wsdl";

// the file_get_contents methods doesn't change the end result unfortunately
//$data = file_get_contents($WSDL);
//file_put_contents('./wsdl.xml',$data);
//$WSDL = './wsdl.xml';

$opts = array(
    'http'=>array(
        'user_agent' => 'PHPSoapClient'
        )
    );

$context = stream_context_create($opts);

$service = new SoapClient($WSDL,array('stream_context' => $context, 'cache_wsdl' => WSDL_CACHE_NONE));
$result = $service->ErmUserBean (array("UserID","Password","TargetUserID"));
print '<pre>';
    var_dump($result);
print '</pre>';
Run Code Online (Sandbox Code Playgroud)

正如标题中所述,我收到此消息作为回报:

致命错误:未捕获的SoapFault异常:[WSDL] SOAP-ERROR:解析WSDL:在C:\ Users\username\Documents\EasyPHP-DevServer-14.1VC11\data\localweb中的"WSDL文件URI"中找不到<definitions>\projects\API\index.php:30堆栈跟踪:#0 C:\ Users\username\Documents\EasyPHP-DevServer-14.1VC11\data\localweb\projects\API\index.php(30):SoapClient-> SoapClient ('WSDL文件URI',数组)在第30行的C:\ Users\username\Documents\EasyPHP-DevServer-14.1VC11\data\localweb\projects\API\index.php中抛出#1 {main}

我已经阅读了大多数有关此错误的帖子,因此在我的SOAP请求中尝试了很多变化.我还编辑了我的php.ini文件以便该行

延长= php_openssl.dll

没有";" (评论)之前我可以在这里阅读.

php soap wsdl web-services

5
推荐指数
1
解决办法
1万
查看次数

PHP SoapClient失败 - 无法加载外部实体

我一直在尝试使用欧盟的网站来验证TIN号码(Europa TIN验证网站 - 页面底部有一个WSDL)

我遇到的问题是,当我尝试创建一个新的SoapClient时,该函数在构建客户端时会立即失败.起初我遇到了"无法加载外部实体",我认为这是因为WSDL具有安全连接.搜索后我发现一些答案说这个问题可能与证书过时和最新版本的PHP抛出错误有关,所以我禁用了证书验证:

    // Stream context due to certificate problems
    $streamContext = stream_context_create(array(
        'ssl' => array(
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true
        )
    ));
Run Code Online (Sandbox Code Playgroud)

但现在我又收到了另一个错误:"无法打开流:HTTP请求失败!HTTP/1.1 502 Bad Gateway".有关如何解决这个问题的任何想法?如果我从链接中删除"https://",我会得到与之前"无法加载外部实体"消息相同的结果.

现在这里是真正的大脑选择器.如果我尝试使用chrome的扩展"Boomerang"来测试WSDL上的SOAP调用,它的工作非常完美,所以我不知道这里有什么问题......任何人都可以通过尝试在PHP文件中进行soap调用来轻松尝试.

这是完整的代码:

public static function validateTIN($tin) {
    // Stream context due to certificate problems
    $streamContext = stream_context_create(array(
        'ssl' => array(
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true
        )
    ));

    // Create our soap client
    $client = new SoapClient('https://ec.europa.eu/taxation_customs/tin/checkTinService.wsdl', array(
        'exceptions' => 0,
        'trace' => …
Run Code Online (Sandbox Code Playgroud)

php soap wsdl web-services

2
推荐指数
1
解决办法
1万
查看次数

Symfony2使用SoapClient

我有一个symfony2项目,它会严重抛出此错误

$c = new \SoapClient($objWidget->getLink() . '/ws.php?wsdl');
Run Code Online (Sandbox Code Playgroud)

$objwidget 不是空的,这是错误

未捕获的PHP异常Symfony\Component\Debug\Exception\ClassNotFoundException:"尝试从全局命名空间加载类"SoapClient".您是否忘记了"使用"语句?"

我试过SoapClient在顶部使用,但仍然问题SoapClient.

soap symfony

1
推荐指数
1
解决办法
5698
查看次数

标签 统计

php ×3

soap ×3

web-services ×2

wsdl ×2

file-get-contents ×1

rest ×1

ssl ×1

symfony ×1