升级到wampserver 2.4后出现的字符

时间:2014-05-09 02:51:12

标签: php soap character-encoding wampserver soap-client

我之前运行的是wampserver 2.4并且所有api功能都运行良好,但是现在当我使用soapClient时,我收到了一些我们访问的Web服务的错误。

“看起来我们没有XML文档”

经过一段时间的研究,看起来响应中有BOM字符,但之前的版本效果很好。我无法降级回以前的版本,因为我需要5.4.x版本的php用于项目中的其他代码部分。

当我输出最后一个会话时,它缺少最终的>来自肥皂信封的反应。 在我遇到问题的另一个api中,它在响应开始时导致了bom字符。相当令人沮丧。

我已经尝试更改php.ini和httpd.conf中的设置但是它没有帮助。

我为一个扩展SoapClient的肥皂响应做了一个“黑客”,但这只会有效,并且在我管理的所有项目中都不实用。 它是基于我在这里看到的东西,并且确实可以用于某些响应而不是其他响应。

  public function __doRequest($req, $location, $action, $version = "SOAP_1_1"){
  $response =   parent::__doRequest($req, $location, $action, $version );
   $response = preg_replace( '/^(\x00\x00\xFE\xFF|\xFF\xFE\x00\x00|\xFE\xFF|\xFF\xFE|\xEF\xBB\xBF)/', "", $response ) ;
    $response = mb_convert_encoding($response,  "UTF-8",'HTML-ENTITIES');
    if (substr($response,-1) != ">"): $response .= ">";endif;
    return $response;
}

有时在响应体内也有一个随机实体,这似乎也会引起一些问题。

在这个阶段,我已经浪费了整整2天的时间来研究这个问题,但我找不到任何能够正确阅读这些答案的解决方案。

我尝试添加     AddDefaultCharset utf-8     DefaultType application / xml 到httpd.conf

并在我放入的php.ini中     default_charset =“utf-8” 并尝试过

zend.multibyte = 1
detect_unicode = 1
zend.script_encoding = 1

wampserver 2.4正在使用apache 2.4.4和php 5.4.12

如果有人能帮助我并帮助我保持理智,那就太棒了。谢谢。

0 个答案:

没有答案