Zend framework PHP::SoapClient而不是中的Zend_Soap_客户端(Zend服务器,Zend框架版本1.10.7)

Zend framework PHP::SoapClient而不是中的Zend_Soap_客户端(Zend服务器,Zend框架版本1.10.7),zend-framework,soap-client,zend-server,zend-server-ce,Zend Framework,Soap Client,Zend Server,Zend Server Ce,我所有的SOAP调用都在PHP内核中成功运行(当我在WAMP中运行它们时)。但当我尝试向Zend服务器添加相同的代码时,出于某种原因,它会说“服务器遇到了一个内部错误”。 不知道发生了什么事! 使用SoapClient()的调用根本不起作用。。。 我正在使用Alchemy提供的本地WSDL和本地soap服务。 不管怎么说,我也用Zend\u Soap\u客户端尝试了同样的方法,但仍然不起作用!! 以下是创建的Zend Soap客户端转储: object(Zend_Soap_Client)#37

我所有的SOAP调用都在PHP内核中成功运行(当我在WAMP中运行它们时)。但当我尝试向Zend服务器添加相同的代码时,出于某种原因,它会说“服务器遇到了一个内部错误”。 不知道发生了什么事! 使用
SoapClient()
的调用根本不起作用。。。 我正在使用Alchemy提供的本地WSDL和本地soap服务。 不管怎么说,我也用
Zend\u Soap\u客户端
尝试了同样的方法,但仍然不起作用!! 以下是创建的Zend Soap客户端转储:

object(Zend_Soap_Client)#37 (29) { ["_encoding":protected]=> string(5) "UTF-8" ["_classmap":protected]=> NULL ["_faultExceptions":protected]=> array(0) { } ["_soapVersion":protected]=> int(2) ["_uri":protected]=> NULL ["_location":protected]=> NULL ["_style":protected]=> NULL ["_use":protected]=> NULL ["_login":protected]=> NULL ["_password":protected]=> NULL ["_proxy_host":protected]=> NULL ["_proxy_port":protected]=> NULL ["_proxy_login":protected]=> NULL ["_proxy_password":protected]=> NULL ["_local_cert":protected]=> NULL ["_passphrase":protected]=> NULL ["_compression":protected]=> NULL ["_connection_timeout":protected]=> NULL ["_stream_context":protected]=> NULL ["_features":protected]=> NULL ["_cache_wsdl":protected]=> NULL ["_user_agent":protected]=> NULL ["_wsdl":protected]=> string(77) "C:\Program Files (x86)\Zend\Apache2\htdocs\C3Nexus\application\WSAlchemy.wsdl" ["_soapClient":protected]=> NULL ["_lastMethod":protected]=> string(0) "" ["_soapInputHeaders":protected]=> array(0) { } ["_permanentSoapInputHeaders":protected]=> array(0) { } ["_soapOutputHeaders":protected]=> array(0) { } ["location"]=> string(29) "http://localhost:3434/Alchemy" 
即使在客户端上调用
getFunctions()
也会给我带来错误。 我做错了什么

在ZendEnabler.log中发现这些错误

[3/15/2013 2:21:55 PM] Error: Read data error - unable to get read result. Code 109.
[3/15/2013 2:21:55 PM] Error: Request for C:/Program Files (x86)/Zend/Apache2/htdocs/SOME/public/index.php: Unable to get the response from PHP process
[3/15/2013 2:21:55 PM] Error: PHP process 9872 from the "application/x-httpd-php" pool has exited with status 255.
Url请求:
http://localhost:8089/SOME/public/index.php/NewPatient/load-gsdd数据

因此,

控制员:
NewPatient
操作:
loadGssdData

我正在写那个动作的肥皂剧

这项工作:

$hey = new Zend_Soap_Client(APPLICATION_PATH . '\WSAlchemy.wsdl');
$hey->location ='http://localhost:3434/Alchemy';
echo var_dump($hey);
但是当我调用
$hey->getFunctions()
时失败

这根本不起作用

$hey = new SoapClient(APPLICATION_PATH . '\WSAlchemy.wsdl');
$hey->location ='http://localhost:3434/Alchemy';
echo var_dump($hey);
甚至这个

 $hey = new SoapClient("http://localhost:8089/SOME/public/WSAlchemy.wsdl");
 echo var_dump($hey);
注意:我可以在
http://localhost:8089/SOME/public/WSAlchemy.wsdl

我想知道为什么我不能在Zend服务器中使用
SoapClient
,这是PHP的核心!!:(

为了尝试,我在Zend服务器中禁用了Soap客户端 它说:

[15-Mar-2013 14:46:23] PHP Fatal error:  Class 'SoapClient' not found in C:\Program Files (x86)\Zend\Apache2\htdocs\SOME\application\controllers\GSDD.php on line 2
所以,我再次启用,它说没有错误,但我得到错误! 这是启用扩展后我的服务器访问日志:

127.0.0.1 - - [15/Mar/2013:14:54:06 -0400] "POST /ZendServer/index.php/Log-Tail/Index HTTP/1.1" 200 9205
127.0.0.1 - - [15/Mar/2013:14:54:07 -0400] "POST /ZendServer/index.php?controller=systray&action=exec&do=ping HTTP/1.1" 200 643
127.0.0.1 - - [15/Mar/2013:14:54:35 -0400] "GET /SOME/public/index.php/NewPatient/load-gsdd-data HTTP/1.1" 500 499
因此,当我加载时,我得到:

打开该文件后,其中出现服务器错误

其他控制器和操作工作正常!我只是对这个操作有问题


非常感谢您抽出时间:)

嗯,有点似曾相识。几乎可以肯定奇数球端口号。。。openCM?WSDL也会这样做吗?使用您的SoapClient选项尝试
'proxy\u host'
'proxy\u port'


发现这可能是同一件事:

好了,终于修好了

在这个过程中,我学会了事情是如何运作的,但是,哈哈,这是一个愚蠢的理由

Zend无法读取架构文件
就是这样

小问题,呸

如果这个问题困扰了您,很抱歉;)

但是是的,WSDL和模式文件必须齐头并进!我怎么会错过这个


感谢大家查看这些问题

通常在PHP日志中会出现一条信息更丰富的错误消息,即“500 Internal server error”。假设检查依赖项
libxml
应该启用,如果您正在使用此服务的SSL,您应该确保设置了
openssl
。尝试禁用WSDL缓存并使用SOAP客户端打开(调试)。感谢您的快速评论。当我使用Zend Server时,我在php_错误处看到了日志,它没有显示任何内容。我检查了访问日志、错误日志,没有显示任何内容。对于缓存,我做了以下
ini_集('soap.wsdl_缓存启用',0);ini\u集('soap.wsdl\u缓存\u ttl',0)还是不走运!Zend默认启用跟踪选项。感谢您的回复:)选中
错误报告
级别?不是简单地抑制错误?无法真正调试一般的“内部服务器错误”。找到一些日志,请参阅更新的post.Thanksd您是否在zend Server安装中安装了soap扩展?谢谢您的回复。但我没有使用任何代理。我正在运行
http://localhost:8089
我正在端口调用soap
3434
。那么,我是否应该放置任何
代理\u端口
?如果是,连接到端口
3434
?因为,我在
8080
上运行了wamp,在
3434
上运行了soap,所以从未设置
proxy\u port
选项没有问题!在WSDL post上添加,我的WSDL文件是本地文件,这意味着正如您在post中看到的,它位于服务器拥有所有源文件的
application
目录中。我也没有使用ssl。无论如何,让我尝试将主机添加为
localhost
和端口
8089
。它在浏览器中解决吗<代码>主机
问题也许,从服务器A到服务器B还有什么变化/不同…?:(不起作用!同样的代码在
8080
上为wamp工作,我实际上看不出
8089
有什么问题(这只是Zend自己给出的apache)。谢谢你的回复!你的主机/vhost是用Apache安装的吗?例如,
NameVirtualHost
*:8089
?我可以访问该网站。没问题,有很多页面,它是工作网站。所以主机不应该有问题。我只是尝试向现有网站添加一个功能,现在我在该操作中遇到了问题。rest页面好的!