8768 sujets

Développement web côté serveur, CMS

Bonjour ,

Alors j'ai un script qui me permet de récupérer les données d'un fichiers json. Dans ce fichier json je dois notamment récupérer les clés des objets . Voici le script en question :

<?php

/* Script permettant de récupérer les données du fichier.json du satellite
  + utiliser ces données pour mettre à jour la base de données bddProjetInterface
  si elles n'y sont pas déjà */


//Variables
//données à utiliser pour les requêtes d'insertion de données dans la bdd
$valeurFqdn; //hostname = "value" de la "cle" fqdn dans la table hieravalue
$valeurAppli; // valeur de la propriété appli = "value" de la "cle" appli dans la table hieravalue
$environment; //valeur de la propriété "environment" = "environment" dans la table hieravalue
//données de vérification de l'absence des données dans la table hieravalues avant de les ajouter
$requeteVerif; // requête pour vérifier si les données qu'on voudrait ajouter ne sont pas déjà présentes dans la table hieravalues
$apparitionDonnees; //nbr de fois où apparaissent les données qu'on voudrait ajouter dans la table hieravalues
//index du tableau qui récupère les hostname
$i = 0; //l'index de ce tableau commence à 0



//Code
//récupération du fichier.json
$jsonFile = file_get_contents('https://lnxsatelliteprd01.serveurs.cg59.fr/pub/reports/hosts.json');
//décode le fichier.json
$jsonDataKey = json_decode($jsonFile, true); // pour pouvoir récupérer les hostname
$jsonData = json_decode($jsonFile);
//Connexion à la bdd avec son test
$objBdd = mysqli_connect("lnxdev01", "admin", "adminadmin", "bddProjetInterface");
//Si la connexion à la base de données à réussie, on s'occupe de la mise à jour de ses données
if ($objBdd) {
//remplissage de la base de données
    //pour chaque objet json du fichiers
    foreach ($jsonData as $envt) {
        // récupération du $i ème hostname du fichier
        $valeurFqdn = array_keys($jsonDataKey)[$i];
        $environment = $envt->environment;
        //vérification de l'absence de cette données dans la table hieravalues
        $requeteVerif = "SELECT COUNT(*) AS nombre_entrees FROM hieravalues WHERE cle='fqdn' AND value=" . $valeurFqdn . " AND environment=" . $environment;
        $apparitionDonnees = mysqli_query($objBdd, $requeteVerif);
        //si les données n'existent pas déjà dans la table ($result=0), on les ajoute. Sinon on n'ajoute rien
        if ($apparitionDonnees == 0) {
            //requête pour insérer les données dans la table
            $requeteFqdn = "INSERT INTO hieravalues(cle,value,environment) VALUES('fqdn'," . $valeurFqdn . "," . $environment . ")";
            //exécution de la requête
            mysqli_query($objBdd, $requeteFqdn);
        }

        //remplissage de la bdd avec les données concernant l'appli
        // si il n'y a pas de propriété appli
        if (isset($envt->appli) == false) {
             //si il y a une propriété app_svc mais pas appli, on affiche un message d'erreur
            if(isset($envt->app_svc) == true){
                echo "Erreur : pas de valeur \"appli\" mais une valeur \"app_svc\" " ;
            }
        }
        //si il y a une propriété appli
        else {
            //si il n'y a pas de propriété app_svc dans l'objet json mais une propriété appli
            if (isset($envt->app_svc) == false) {
                $valeurAppli = $envt->appli;
                $environment = $envt->environment;
                //requête pour insérer les données dans la table
                $requeteAppli = "INSERT INTO hieravalues(cle,value,environment) VALUES('appli'," . $valeurAppli . "," . $environment . ")";
            }
            //si il y a une propriété app_svc dans l'objet json et une appli
            else {
                $valeurAppli = $envt->appli . "-" . $envt->app_svc; //concaténation des valeurs de appli et app_svc
                $environment = $envt->environment;
                //requête pour insérer les données
                $requeteAppli = "INSERT INTO hieravalues(cle,value,environment) VALUES('appli'," . $valeurAppli . "," . $environment . ")";
            }
            //vérification de l'absence de cette donnée dans la table hieravalues
            $requeteVerif = "SELECT COUNT(*) AS nombre_entrees FROM hieravalues WHERE cle='appli' AND value=" . $valeurAppli . "AND environment=" . $environment;
            $apparitionDonnees = mysqli_query($objBdd, $requeteVerif);
            //si les données n'existent pas déjà dans la table, on les ajoute. Sinon on n'ajoute rien
            if ($apparitionDonnees == 0) {
                //exécution de la requête
                mysqli_query($objBdd, $requeteAppli);
            }
        }
        // passage à l'hostname suivant
        $i += 1;
    }
}
// si la connexion à la bdd échoue , on traite cette erreur avec un affichage 
else {
    echo 'Erreur de connexion...\n';
}

?>


Mais à l'exécution de mon script j'obtient l'erreur suivante :
"Warning: mysqli_connect(): Headers and client library minor version mismatch. Headers:50556 Library:50637 in /home/adm_ldelbecque/Script/scriptRecupDonneesSurSatellite.php on line 28"

Merci beaucoup d'avance pour votre aide.
Modifié par Cherrygolo (18 Jun 2018 - 14:22)
Ben c'est ce que j'ai vu mais quand j'essaie de le mettre à jour avec la commande "sudo yum upgrade php" , ça me dit :
"Package(s) php available, but not installed.
No packages marked for update"
Modifié par Cherrygolo (18 Jun 2018 - 14:48)
je suis pas admin réseaux désolé.
quand j'ai pas la bonne version de php, je demande à mon admin réseaux.

peut être avec :

sudo apt-get install php5-mysqlnd


mais j'en sais rien.
Modifié par JENCAL (18 Jun 2018 - 14:57)
Ça sent le conflit de version !
Yum n'a pas de commande upgrade.
Faire
yum update
yum search php

Chaque distribution Linux installe une version PHP par défaut en appelant un meta-paquet php. Un meta-paquet est un paquet qui n'installe pas directement de fichier mais qui a des dépendances vers d'autres paquets, qui s'installent automatiquement avec le meta-paquet.
la dernière commande te permettra de savoir ce qui est installé vis à vis de PHP et notamment le numéro de version

https://www.linuxtricks.fr/wiki/utilisation-de-yum#paragraph_mettre-a-jour
Modifié par bazooka07 (18 Jun 2018 - 15:11)
Malheureusement JENCAL , le serveur ne connait pas la commande apt-get.

bazooka07 , il y a tellement de choses qui s'affichent avec la dernière commande mais ça ressemble plus à une énumération de fichiers du coup je ne vois pas du tout la version...
Ben je ne vois rien de tout ça... ça me demande même de compléter par quelque chose.. Smiley eek
voilà ce que ça me renvoie :

[adm_ldelbecque@lnxdev01 ~]$ yum search php | less
Loaded plugins: fastestmirror, package_upload, product-id, search-disabled-
              : repos, subscription-manager, versionlock
Loading mirror speeds from cached hostfile
=============================== N/S matched: php ===============================
php-pear-Event-Dispatcher.noarch : Dispatch notifications using PHP callbacks
php-PHP-CSS-Parser.noarch : A Parser for CSS Files
php-ezc-File.noarch : Provides support for file operations which are not covered
                    : by PHP
php-irodsphp.noarch : PHP client API for iRODS
php-pear-Log.noarch : Abstracted logging facility for PHP
php-phpseclib-crypt-rc4.noarch : Pure-PHP implementation of RC4
php-phpseclib-crypt-rijndael.noarch : Pure-PHP implementation of Rijndael
php-phpseclib-math-biginteger.noarch : Pure-PHP arbitrary precision integer
                                     : arithmetic library
php-phpunit-DbUnit.noarch : DbUnit port for PHP/PHPUnit
php-phpunit-PHP-CodeCoverage.noarch : PHP code coverage information
php-phpunit-PHP-TokenStream.noarch : Wrapper around PHP tokenizer extension
php-phpunit-PHPUnit-MockObject.noarch : Mock Object library for PHPUnit
php-phpunit-exporter.noarch : Export PHP variables for visualization
php-phpunit-phpdcd.noarch : Dead Code Detector (DCD) for PHP code
php-react-promise.noarch : A lightweight implementation of CommonJS Promises/A
                         : for PHP
atoum.noarch : PHP Unit Testing framework
perl-PHP-Serialization.noarch : Converts between PHP's serialize() output and
                              : the equivalent Perl structure
php-Assetic.noarch : Asset Management for PHP
php-EasyRdf.noarch : A PHP library designed to make it easy to consume and
                   : produce RDF
php-Faker.noarch : A PHP library that generates fake data
php-JsonSchema.noarch : PHP implementation of JSON schema
php-Metadata.noarch : A library for class/method/property metadata management in
                    : PHP
php-PHPMailer.noarch : PHP email transport class with a lot of features
php-PHPParser.noarch : A PHP parser written in PHP
php-PhpCollection.noarch : General purpose collection library for PHP
php-PhpOption.noarch : Option type for PHP
php-Raven.noarch : A PHP client for Sentry
:

Modifié par Cherrygolo (18 Jun 2018 - 15:56)
C'est bizarre. Je trouve qu'il manque des paquets dans ta copie d'écran, par exemple php, php-fpm, php-mysql
Less permet d'afficher plusieurs pages, il faut appuyer sur les touches "page suiv." et "page préc." ou sur la barre d'espace.
Essaie de taper
php --version
ou
php-fpm --version
Autre truc à essayer : Faire un simple script info.php comme ci-dessous:
<?php phpinfo(); ?>
le placer à la racine du serveur http, en principe c'est le dossier /var/www/html et l'ouvrir dans Firefox ou Chrome. Cela permettra de voir les modules installés de PHP
Pour installer la class PDO, essayer
yum install php-pdo
ou essayer
yum search pdo
pour trouver le nom du paquet
Cela serait bien de savoir la distribution de linux qui est installée. Essayer
cat /etc/os-release

Modifié par bazooka07 (19 Jun 2018 - 00:57)