2013-03-15 2 views
0

J'ai tous mes appels SOAP fonctionnant avec succès dans PHP CORE (quand je les lance dans WAMP). Mais quand j'essaye juste d'ajouter le même code à Zend Server, pour une raison quelconque il indique "le serveur a rencontré une erreur interne". Vous ne savez pas ce qui se passe! Un appel utilisant SoapClient() ne fonctionne pas du tout ... J'utilise Local WSDL et le service de savon local qui est donné par Alchemy. De toute façon, j'ai essayé la même chose avec Zend_Soap_Client aussi, mais quand même, ça ne marche pas !! Voici la décharge du client Zend Soap créé:PHP :: SoapClient au lieu de Zend_Soap_Client dans (Zend Server avec Zend Framework Version 1.10.7)

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" 

Même un appel comme getFunctions() sur le client me donne l'erreur. Qu'est-ce que je fais de mal?

trouvé ces erreurs dans 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 Demande: http://localhost:8089/SOME/public/index.php/NewPatient/load-gsdd-data

Par conséquent,

Controller: NewPatient Action: loadGssdData

Je vous écris appel de savon dans ce action.

Cela fonctionne:

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

Mais échoue quand je l'appelle $hey->getFunctions()!

Cela ne fonctionne pas du tout,

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

ou même cela!

$hey = new SoapClient("http://localhost:8089/SOME/public/WSAlchemy.wsdl"); 
echo var_dump($hey); 

Note: Je ne peux accéder au fichier wsdl à http://localhost:8089/SOME/public/WSAlchemy.wsdl

Je me demande pourquoi je ne peux pas utiliser SoapClient dans Zend Server, qui est PHP de base un !! :(

Pour essayer, j'ai désactivé Soap Client Zend Server Il a dit:

[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 

Alors, je permis à nouveau, il dit pas d'erreur là, toujours je reçois erreur Ceci est mon accès au serveur! connectez-vous après l'activation de l'extension:

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 

Alors, quand je charge je reçois ceci:

Error

Après avoir ouvert ce fichier, il y a une erreur de serveur.

D'autres contrôleurs et actions fonctionnent bien! J'ai juste un problème avec cette action.

Merci beaucoup pour votre temps :)

+0

Typiquement dans votre journal PHP, il y aura un message d'erreur plus informatif juste l'erreur '500 Internal server'. Supposons que vous dépendiez des dépendances. 'libxml' devrait être activé et si vous utilisez SSL avec ce service, vous devriez vous assurer que' openssl' est configuré. Essayez de désactiver la mise en cache WSDL et d'activer [option de trace] (http://php.net/manual/en/soapclient.getlastrequest.php) (débogage) avec le SoapClient. – ficuscr

+0

Merci pour le commentaire rapide. Comme j'utilise Zend Server, j'ai vu les logs sur php_error, ça ne montre rien.J'ai vérifié les logs d'accès, les logs d'erreurs, rien n'est affiché.Pour le cache j'ai fait ça 'ini_set ('soap.wsdl_cache_enabled', 0); ini_set ('soap.wsdl_cache_ttl', 0); "Toujours pas de chance! L'option de trace est activée par défaut par Zend. Merci pour la réponse :) – Yash

+0

Vérifié niveau error_reporting'? Pas simplement supprimer les erreurs? Impossible de déboguer un 'Erreur interne du serveur' générique. – ficuscr

Répondre

0

Bon, finalement fixé!

Dans le processus, appris comment les choses fonctionnent, mais, lol c'est une raison stupide!

Zend was unable to read the Schema File C'est tout !!!

Petit numéro, ouf!

Désolé si cette question vous troublé;)

Mais oui WSDL et le fichier de schéma doit aller de pair! Comment ai-je manqué ça!

Merci à tous pour avoir regardé ces questions!

0

Hmm, ayant une Deje vu. Presque certainement le nombre impair de port de boule ... openCM? Est-ce que le WSDL fait de même? Essayez 'proxy_host' et 'proxy_port' avec vos options SoapClient?

à cet qui pourrait être la même chose: Workaround for PHP SOAP request failure when wsdl defines service port binding as https and port 80?

+0

Merci pour la réponse.Mais je n'utilise aucun proxy. Je cours le serveur à 'http: // localhost: 8089' et j'appelle le savon au port' 3434'. Alors, devrais-je mettre un 'proxy_port'? Si oui, au port «3434»? Comme, j'ai couru wamp à '8080', et du savon à' 3434', ne jamais mettre l'option 'proxy_port' n'a eu aucun problème! Ajoutant sur la publication WSDL, mon fichier WSDL est un fichier local, ce qui signifie que, comme vous le voyez dans la publication, il est dans le répertoire 'application' où le serveur a tous les fichiers source. Je n'utilise pas ssl aussi. Toujours, laissez-moi essayer d'ajouter host comme 'localhost' et le port' 8089' .. – Yash

+0

résout-il dans un navigateur? problème de 'hosts' peut-être, quoi d'autre changé/diffère du serveur A au serveur B ...? – ficuscr

+0

:(Nope travail de travail! Eh bien, comme le même code a travaillé pour wamp à 8080, je ne vois pas ce qui pourrait être faux pour 8089 (qui est juste apache donné par Zend lui-même). Merci pour la réponse! – Yash