+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    Futur Membre du Club
    Inscrit en
    octobre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 9
    Points : 16
    Points
    16

    Par défaut CentOS 6.3 et php-soap

    Bonjour,

    Je viens demander un peu d'aide sur un problème qui me coince depuis plusieurs jours. Je dois mettre en place un serveur d'application web en php qui puisse consommer un service web.
    Mon développeur travail en local sur un WAMP et il peux faire son dev sans problèmes et donc consommer du service web.
    Pour passer en prod nous utilisons un serveur CentOS 6.3 i386 sur hyper-v, installation minimale.

    Ensuite j'ai installer un serveur apache (httpd), puis php (common, cli, ... et dépendances) puis php-soap.
    Lorsque je fais un phpinfo(); cela me donne cela au niveau de soap :

    Code :
    Additional .ini files parsed	/etc/php.d/curl.ini, /etc/php.d/fileinfo.ini, /etc/php.d/json.ini, /etc/php.d/phar.ini, /etc/php.d/soap.ini, /etc/php.d/zip.ini
    et

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Soap Client	enabled
    Soap Server	enabled
     
    Directive	Local Value	Master Value
    soap.wsdl_cache	1	1
    soap.wsdl_cache_dir	/tmp	/tmp
    soap.wsdl_cache_enabled	1	1
    soap.wsdl_cache_limit	5	5
    soap.wsdl_cache_ttl	86400	86400
    cependant lorsque je mets le code de mon développeur j'ai cette erreur :

    Code php :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    object(LibXMLError)#1 (6) { ["level"]=> int(1) ["code"]=> int(1549) ["column"]=> int(0) ["message"]=> string(73) "failed to load external entity "http://**.**.**.**:8080/wsdl/RpcEncoded" " ["file"]=> string(0) "" ["line"]=> int(0) }
    SoapFault Object
    (
        [message:protected] => SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://**.**.**.**:8080/wsdl/RpcEncoded' : failed to load external entity "http://**.**.**.**:8080/wsdl/RpcEncoded"
     
        [string:Exception:private] => 
        [code:protected] => 0
        [file:protected] => /var/www/html/SoapClientPHP.php
        [line:protected] => 12
        [trace:Exception:private] => Array
            (
                [0] => Array
                    (
                        [file] => /var/www/html/SoapClientPHP.php
                        [line] => 12
                        [function] => SoapClient
                        [class] => SoapClient
                        [type] => ->
                        [args] => Array
                            (
                                [0] => http://**.**.**.**:8080/wsdl/RpcEncoded
                                [1] => Array
                                    (
                                        [login] => ******
                                        [password] => ********
                                    )
     
                            )
     
                    )
     
            )
     
        [previous:Exception:private] => 
        [faultstring] => SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://**.**.**.**:8080/wsdl/RpcEncoded' : failed to load external entity "http://1**.**.**.**:8080/wsdl/RpcEncoded"
     
        [faultcode] => WSDL
    )

    si je mets un service web sans authentification, type google apis ($wsdl = file_get_contents('https://www.google.com/apis/ads/publisher/v201204/ForecastService?wsdl') j'ai bien une page qui s'affiche.

    Pour aller plus loin dans le débug j'ai monté un LAMP et là pas de problèmes??

    Je dois faire fonctionner ces applis sur un serveur CentOS, donc il faut que ça fonctionne.

    Le code de ma page ClientSoapPHP.php est celui-ci :
    Code php :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    $WSDL = "http://**.**.**.**:8080/wsdl/RpcEncoded";
     
    // L'identifiant et le mot de passe doivent être en majuscules
    $LOGIN = "*****";
    $PASS = "*******";
     
    try {
    	// $wsdl = file_get_contents('http://**.**.**.**:8080/wsdl');
    	// echo $wsdl;
    	// Creation du client SOAP
    	$client = new SoapClient($WSDL, array('login'=> strtoupper($LOGIN),'password'=> strtoupper($PASS)));
     
    	$cours = $client->TousLesCours();
    	foreach ($cours as $cou) {       
    		print_r($client->DomaineCours($cou)); 
    	$domaine = $client->DomaineCours($cou);
    	}
     
    } catch (Exception $e) {
        var_dump(libxml_get_last_error());
    	echo '<pre>';
        print_r($e);
    	echo '</pre>';
    }
    ?>

    Sur chrome voici le débug de sortie :
    sur le CentOS :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
    Accept-Encoding:gzip,deflate,sdch
    Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
    Cache-Control:max-age=0
    Connection:keep-alive
    Host:**.**.**.**
    User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11
    et sur le LAMP:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
    Accept-Encoding:gzip,deflate,sdch
    Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
    Cache-Control:max-age=0
    Connection:keep-alive
    Host:**.**.**.**
    User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11
    Je précise que pour le moment tout est sur la même tranche réseau, pas de proxy.

    Merci de votre coup de main.

  2. #2
    Expert Confirmé Sénior
    Homme Profil pro Laurent Willems
    MOA? hahaha - MOE? euhh - Chapeau pointu? turlututu!
    Inscrit en
    septembre 2002
    Messages
    3 178
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent Willems
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : MOA? hahaha - MOE? euhh - Chapeau pointu? turlututu!

    Informations forums :
    Inscription : septembre 2002
    Messages : 3 178
    Points : 5 817
    Points
    5 817

    Par défaut

    Salut,

    Tout d'abord,

    Est-ce que tu vois le wsdl quand tu mets ton url http://**.**.**.**:8080/wsdl dans ton browser?
    Alea Jacta Test!

  3. #3
    Futur Membre du Club
    Inscrit en
    octobre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 9
    Points : 16
    Points
    16

    Par défaut

    Oui ça marche sans problèmes

  4. #4
    Expert Confirmé Sénior
    Homme Profil pro Laurent Willems
    MOA? hahaha - MOE? euhh - Chapeau pointu? turlututu!
    Inscrit en
    septembre 2002
    Messages
    3 178
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent Willems
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : MOA? hahaha - MOE? euhh - Chapeau pointu? turlututu!

    Informations forums :
    Inscription : septembre 2002
    Messages : 3 178
    Points : 5 817
    Points
    5 817

    Par défaut

    Re,

    Peux-tu remplacer la valeur de ta variable WSDL

    Code :
    1
    2
     
    $WSDL = "http://**.**.**.**:8080/wsdl/RpcEncoded
    par

    Code :
    1
    2
     
    $WSDL = "http://**.**.**.**:8080/wsdl
    Et voir ce que ça donne?
    Alea Jacta Test!

  5. #5
    Futur Membre du Club
    Inscrit en
    octobre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 9
    Points : 16
    Points
    16

    Par défaut

    J'avais déjà essayé et même résultat.

  6. #6
    Expert Confirmé Sénior
    Homme Profil pro Laurent Willems
    MOA? hahaha - MOE? euhh - Chapeau pointu? turlututu!
    Inscrit en
    septembre 2002
    Messages
    3 178
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent Willems
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : MOA? hahaha - MOE? euhh - Chapeau pointu? turlututu!

    Informations forums :
    Inscription : septembre 2002
    Messages : 3 178
    Points : 5 817
    Points
    5 817

    Par défaut

    Ok,

    peux-tu regarder si tu as d'éventuelles infos supplémentaires dans l'error log de ton serveur apache?
    Alea Jacta Test!

  7. #7
    Futur Membre du Club
    Inscrit en
    octobre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 9
    Points : 16
    Points
    16

    Par défaut

    Bonjour,

    Désolé de tarder pour la réponse j'étais en congés.

    dans les logs il n'y a que le PHP Warning : Fatal Error: SOAP-ERROR ??

    J'ai remarqué par contre que je n'ai pas la commande '--enable-soap' dans le pavé "configure command' de mon php-info. Est-ce normal?

  8. #8
    Futur Membre du Club
    Inscrit en
    octobre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 9
    Points : 16
    Points
    16

    Par défaut

    php-soap installé et fonctionnel !!!

    Pour la solution que j'ai trouvé :

    yum erase -y php

    puis installation manuel de la version 5.3.1 de php et là ça fonctionne.

    Peut-être que cela vient de mon installation de CentOs en version minimale?? en tout cas j'aurais bien galéré.

  9. #9
    Futur Membre du Club
    Inscrit en
    octobre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 9
    Points : 16
    Points
    16

    Par défaut Je suis un gl****

    Bon je déterrre le post just epour dire que des fois il vaudrais mieux regarder els docs Centos avant d'aller plus.

    en recherchant un peu longuement (car ça métonnait otut de même de ne pas y arriver par un simple "yum") et en ayant un éclair de génie ce week-end je me suis dit : SELinux !!!!!

    Et Oui ce module bien sympa bloc pas mal de choses. Pour que SOAP fonctionne il faut juste paramétrer SELinux en "permissive" et voilà le tour est joué !!!

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •