Erreur de connexion BDD pour script Cron

Bonjour,

Je prends la liberté de vous demander votre aide suite à un blocage et moults recherches sans résultat viable…
Voici notre démarche :

Création d'un script php pour planifier une tache cron d'export de données et une seconde pour importer des données complémentaires.

Dans l'idée, rien de complexe.

Cependant, à chaque éxécution du fichier, nous avons l'erreur suivante :
Erreur !: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

Voici mon code :

function bdd(){

$host = "bloquebnvodemoet.mysql.db";
$dbname = "bloquebnvodemoet";
$username = "bloquebnvodemoet";
$password = "monpassworddelamortquitue";
try {
$bdd = new PDO ("mysql:host={$host};dbname={$dbname};", $username, $password);
} catch (PDOException $e) {
print "Erreur !: " . $e->getMessage() . "
";
die();
};

----------
Nous avons tester avec des variables, sans PDO, j'ai contacté OVH qui me répond que le problème ne vient pas d'une erreur de host mais de fichier (en fouillant dans le forum OVH j'ai lu que l'host de la database n'est parfois pas le même que celui notifié sur notre espace hébergement).
En sachant que pour mon site web : aucun soucis de connexion,
J'ai c/c mes données du fichier wp-config.php, donc obligatoirement, mes logs sont ok.

Le script est config dans l'espace Cron de mon hébergement (lu à plusieurs endroit que OVH sécurisé ses bdd en limitant leur accès donc même si fichier pas viable, c'est push tout de même…)

J'avoue être à bout de ressources, si une bonne âme pouvait nous filer la main, ça serait top.

A savoir le reste de nos fonctions sont OK et s'exécutent sans problème,
Merci d'avance.

Bonjour @SebastienH33

As-tu déjà testé ton script en dehors du cron, c'est à dire via le navigateur internet ?

Bonjour Gaston,

Testé avec Visual Studio Code, l'erreur est la même.
Testé aussi via navigateur en utilisant l'interface d'OVH, erreur similaire.
Testé aussi via navigateur en dehors de ma fonction.

Alors @SebastienH33 teste avec ce script :

https://wordetweb.com/word-et-web/OVH-Tester-une-base-de-donnees-via-un-script-PDO-FR.htm OVH - Test de Base de Données via un script en langage PDO

Merci Gaston,
Nous allons effectuer des tests (nous avions déjà ouvert ce lien en amont, il est proposé comme solution pour pas mal de soucis similaire) à nouveau et revenons rapidement pour te tenir informé.
Affaire à suivre !

Hier, j'y ai rajouté les analyse des 4 types d'erreurs possibles :

Après plusieurs tests en reprenant scrupuleusement ton code test, le résultat est le même.

Pour Info, le début du code :

error_reporting(E_ALL); // Activer le rapport d'erreurs PHP
// A partir de PHP 5.6, sinon les caractères accentués seront mal affichés
ini_set('default_charset', 'iso8859-1');

function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$Date_start = getmicrotime();
// ****** Exemples de configuration selon les hébergements mutualisés ******
// $DBhost = ".mysql.db";
// $DBowner = ""; // Ton login SQL
// $DBName = $DBowner;
// ****** Fin des exemples de configuration

// ****** Configuration - Debut ******

$DBhost = "bloquebnvodemoet.mysql.db"; // Par exemple

$DBowner = "bloquebnvodemoet"; // ton login SQL

$DBpw = "Mdp de la mort qui tue"; // ton password SQL

$DBName = $DBowner;

// ****** Configuration - Fin *****

/
Hébergement mutualisé :

Serveur SQL de base : port Vide ou 3306

*/

// Version de PHP
echo "Version de PHP : ".phpversion()."

\n";
$Table_SQL = "Tab_test_DB";
If ($DBPort == "") $DBconnect = "mysql:dbname=".$DBName.";host=".$DBhost;
Else {
// Serveur SQL PRIVE de OVH
$DBconnect = "mysql:dbname=".$DBName.";host=".$DBhost.";port=".$DBPort;
}

echo " $DBconnect = '" .$DBconnect. "'
";
echo "
\n";

$user = 'nomdelabase';
$password = 'motdepasse';
try{
// *************************************************************
// * Connexion à une base ODBC avec l'invocation de pilote *
// *************************************************************
echo " Etablissement de la connexion SQL en mode PDO

";
$pdo = new PDO($DBconnect, $DBowner, $DBpw);
echo " new PDO = OK
\n";
et la réponse de la console de débug :
Version de PHP : 7.4.26



Notice: Undefined variable: DBPort in C:\Users\honme\Desktop\php files\chron bloquel\test_bdd.php on line 38
$DBconnect = 'mysql:dbname=bloquebnvodemoet;host=bloquebnvodemoet.mysql.db'


Etablissement de la connexion SQL en mode PDO

Connexion échouée : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: H�te inconnu.


Durée du traitement = 0.05 secondes


J'avoue être méchamment à court d'idée…

En ajout, la bdd concernée :


C:\Users\honme\Desktop\php files\chron bloquel\test_bdd.php


Les bases de données des hébergements web OVH ne sont pas accessibles depuis l'extérieur.
"C:\Users" démontre que vous êtes en-dehors de l'hébergement web.

Je vais tester en pushant directement via ovh avec résultat dans la foulée.

Mais dans l'idée, c'est normal pour le chemin du dernier message vu que c'était purement du test hors OVH.

La connexion à la BDD semble OK

2022-02-02 05:49:02] ## OVH ## START - 2022-02-02 05:49:02.286741 executing: /usr/local/php7.4/bin/php /homez.1033/bloqueb/www/ftp/test_bdd.php
[2022-02-02 05:49:02] Version de PHP : 7.4.25


[2022-02-02 05:49:02] $DBconnect = 'mysql:dbname=bloquebnvodemoet;host=bloquebnvodemoet.mysql.db'


[2022-02-02 05:49:02] Etablissement de la connexion SQL en mode PDO

new PDO = OK

[2022-02-02 05:49:02] Durée du traitement = 0.00 secondes

[2022-02-02 05:49:02]
[2022-02-02 05:49:02] ## OVH ## END - 2022-02-02 05:49:02.534528 exitcode: 0

Nous testons avec la fonction d'export et d'import et nous reviendrons vers vous rapidement.
Merci Gaston dans tous les cas pour ton aide :wink:

Merci Gaston, Merci Fritz.

Sujet à clore, la connexion à la BDD est OK pour nous (d'autres soucis se sont présenté mais ce n'est plus le sujet ^^)