1.服务器端代码(service):<?php
require_once "../views/config.inc";     // 只要加上一个就报错,用include也一样,其中config.inc 文件很简单加上就报错
$soap = new SoapServer(null,array('uri'=>"http://xxxxxx.com.cn/",'encoding'=>'UTF-8'));
$soap->setClass('user');
$soap->handle();
class user
{
protected  $Rolse=array();
public function getRoles($UserName,$Password)
{
return $UserName.$Password;
}
}
?>
2、客户端代码:<?php
$roles=array();
try 
{
    $client = @new SoapClient(null,
        array('location' =>"http://localhost/models/userInfo.php",'trace'=>1,'encoding'=>'UTF-8','uri' => "http://xxxxxx.com.cn")
    );
    $roles=$client->getRoles('test','12345678');
    print_r($roles);

catch (SoapFault $fault)
{
    echo "Error: ",$fault->faultcode,", string: ",$fault->faultstring;
}
?>3.config.inc文件:<?php
global $conf;
$conf['DBUSER']='root';
$conf['DBPWD']='';
$conf['DBHOST']='localhost';
?>
代码就这些,现在出现非常奇怪的问题:只要我在服务器端代码中加上“require_once "../views/config.inc";”在句,调用它就出错:“looks like we got no XML document”,把这行注释掉,程序就正常,一直没有找到解决办法。phpwebservicesoap

解决方案 »

  1.   

    可能造成的原因:
    1. 所有的php文件,包括直接和间接调用到的,注意在之前不能用任何空行或者空格字符,之后不能有任何空行或空白字符.
    2. 程序本身的语法错误—-函数参数少了、少了封号、数据库错误等等的错误,而未使用异常处理来抓住这些错误。
    3. 人为的返回了非XML标准的数据,如echo了一个非XML标准字符串等等。上面是复制的
      

  2.   

    不引用,直接放在里面,看如何?
    <?php
    global $conf;
    $conf['DBUSER']='root';
    $conf['DBPWD']='';
    $conf['DBHOST']='localhost';
    ?>
      

  3.   

    config.inc<?php
    global $conf;
    $conf['DBUSER']='root';
    $conf['DBPWD']='';
    $conf['DBHOST']='localhost';以 ANSI 保存
      

  4.   

    to:PhpNewnew
       这些我都做过了,没有用。
    to:happytonice
       不引用,直接放在里面是可以的。但是不引用不行呀,还有其他好多单独的数据库操作类呢。
    to:xuzuning
       以 ANSI 保存也不行。哎,php写webservice伤不起呀,太蛋疼了。用java和.net 那会有这么低级的错误呀?那位大神遇到过这种问题?拜托了。
    环境是:windows 2003 + apache2.2.22 + php5.4.3 +mysql5.5.24,对了这些都是通过wampserver2.2 集成的。
      

  5.   

    问题解决了:
    还是版主xuzuning厉害,所有要引用的文件都要以 “ANSI” 编码保存,服务器端代码和客户端代码可以用“UTF-8”编码保存;或所有文件都以“ANSI”编码保存,就不会错问题。血的教训呀,本以为我要显示中文所以把所有代码文件都以“UTF-8”格式来保存,结果害我瞎忙了两天。
      

  6.   

    保存为 utf-8 并没有错
    这只是有 BOM 头的原因,只要保存为无BOM头的utf-8就可以了而 ANSI 是没有 BOM 头的,所以如果程序中没有直接书写汉字时,保存为 ANSI 就没有问题了
      

  7.   

    就是就是,再次感谢版主xuzuning!以前还真没注意utf-8还有两种格式。