[PHP] erreurs PHP serveur OCS

erreurs PHP serveur OCS [PHP] - PHP - Programmation

Marsh Posté le 02-08-2024 à 16:54:58    

:hello:
 
Bon, je le dis de suite : je n'y connais rien PHP. Je me débrouille en googlant, mais après...
On a un serveur OCS sur une CentOS. Ce serveur est trop vieux, il doit être mis à jour mais il y a toujours des problèmes au redémarrage. Donc on m'a demandé de réinstaller OCS sur un nouveau serveur.
J'ai choisi une Debian 12. A la base, je voulais l'installer via un autre tuto mais on m'a devancé et le serveur a été installé selon cette procédure :  
https://tutos-info.fr/wp-content/up [...] IAN-12.pdf
 
Lorsqu'on essaie de se connecter sur l'adresse http://XXX.XXX.XXX.XXX/ocsreports/, on a l'erreur  

Cette page ne fonctionne pasImpossible actuellement de traiter cette demande via 10.224.3.128.
HTTP ERROR 500


et dans les logs apache :  

[Fri Aug 02 15:57:01.355474 2024] [php:error] [pid 31314:tid 31314] [client XXX.XXX.XXX.XXX:52412] PHP Fatal error:  Uncaught TypeError: mysqli_fetch_object(): Argument #1 ($result) must be of type mysqli_result, bool given in /usr/share/ocsinventory-reports/ocsreports/backend/AUTH/methode/ldap.php:37\nStack trace:\n#0 /usr/share/ocsinventory-reports/ocsreports/backend/AUTH/methode/ldap.php(37): mysqli_fetch_object()\n#1 /usr/share/ocsinventory-reports/ocsreports/backend/AUTH/auth.php(100): require_once('...')\n#2 /usr/share/ocsinventory-reports/ocsreports/require/header.php(321): require_once('...')\n#3 /usr/share/ocsinventory-reports/ocsreports/index.php(44): require('...')\n#4 {main}\n  thrown in /usr/share/ocsinventory-reports/ocsreports/backend/AUTH/methode/ldap.php on line 37, referer: http://XXX.XXX.XXX.XXX/ocsreports/


 
Si j'ai bien compris, ou pas, c'est un problème LDAP non ?  
J'ai regardé sur l'ancien serveur, ils avaient un PHP v7. Je cherche à retrouver des infos que je pourrai reprendre sur le nouveau serveur en PHP 8.2.20
 
Pouvez-vous aguiller mes recherches ?  
 
Merci de vos retours :)
 


---------------
"I intend to live the first half of my life.I don't care about the rest."Errol Flynn."The difference between genius and stupidity is that genius has its limits."Albert Einstein
Reply

Marsh Posté le 02-08-2024 à 16:54:58   

Reply

Marsh Posté le 02-08-2024 à 20:11:45    

L'erreur c'est plutôt un problème de connexion avec la base de donnée :  

Citation :

PHP Fatal error:  Uncaught TypeError: mysqli_fetch_object(): Argument #1 ($result) must be of type mysqli_result, bool given in /usr/share/ocsinventory-reports/ocsreports/backend/AUTH/methode/ldap.php:37


Apparemment y'a une requête exécuté ligne 37 de /usr/share/ocsinventory-reports/ocsreports/backend/AUTH/methode/ldap.php qui renvoie un boolean (probablement à false ^^) au lieu de renvoyer une objet contenant les résultats de la requête, faudrait débugger mais y'a ptet un truc qui a foiré à lors de l'installation niveau base de donnée...
Vérifier les fichiers de configuration, faire un test de connexion avec un script test.php tout bête genre :

Code :
  1. <?php
  2. $link = mysqli_connect('adresse_serveur', 'utilisateur', 'mot_de_passe', 'nom_de_la_base');
  3. if (!$link) {
  4.     die('Erreur (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
  5. } else {
  6.     exit('Ca marche');
  7. }



---------------
D3
Reply

Marsh Posté le 02-08-2024 à 23:27:36    

Oui, c'est forcément une requête (My)SQL(i) qui plante avant (un group by ou autre sql_mode strict qui n'est plus aussi permissif ?).
 
PHP serait à jour, mysqli lèverait une exception (transformée en erreur fatale à moins d'un try/catch ou set_exception_handler inutile) par défaut au lieu d'être muet comme avant (PHP < 8.1.0).
 
Si tu peux changer le code, ajoute un

Code :
  1. mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

avant/en début de script pour refouiller ensuite ton log.
 
C'est "intéressant" de trouver du mysqli dans un script censé être dédié à ldap.


Message édité par pluj le 02-08-2024 à 23:34:20
Reply

Marsh Posté le 05-08-2024 à 11:20:41    

Donc avec le code :

<?php
$link = mysqli_connect('ip_du_serveur', 'xxxx', 'xxxx', 'base_de_données');
if (!$link) {
    die('Erreur (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
} else {
    exit('Ca marche');
}
?>


j'ai toujours la même pas web qui me dit :

Citation :

Cette page n’est pas disponible pour le moment10.224.3.128 ne peut actuellement pas traiter cette demande.
HTTP ERROR 500

 

et comme erreur dans les logs apache :

[Mon Aug 05 11:17:33.588184 2024] [php:error] [pid 39628:tid 39628] [client XXX.XXX.XXX.XXX:54508] PHP Fatal error:  Uncaught mysqli_sql_exception: Connection refused in /usr/share/ocsinventory-reports/ocsreports/index.php:2\nStack trace:\n#0 /usr/share/ocsinventory-reports/ocsreports/index.php(2): mysqli_connect()\n#1 {main}\n  thrown in /usr/share/ocsinventory-reports/ocsreports/index.php on line 2



Message édité par LeKeiser le 05-08-2024 à 11:21:24

---------------
"I intend to live the first half of my life.I don't care about the rest."Errol Flynn."The difference between genius and stupidity is that genius has its limits."Albert Einstein
Reply

Marsh Posté le 05-08-2024 à 15:07:02    

Bon j'ai du mieux :


<?php
$mysqli = new mysqli("localhost","DB_User","DB_Password","DB_Name" );

 

// Check connection
if ($mysqli -> connect_errno) {
  echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
} else {
                echo "ça marche";
}
  exit();
?>

 
 

et j'ai bien Ca marche qui s'affiche
bon, les identifiants marchent bien.

 

Message cité 1 fois
Message édité par LeKeiser le 05-08-2024 à 15:19:50

---------------
"I intend to live the first half of my life.I don't care about the rest."Errol Flynn."The difference between genius and stupidity is that genius has its limits."Albert Einstein
Reply

Marsh Posté le 05-08-2024 à 18:26:40    

LeKeiser a écrit :

Bon j'ai du mieux :


<?php
$mysqli = new mysqli("localhost","DB_User","DB_Password","DB_Name" );
 
// Check connection
if ($mysqli -> connect_errno) {
  echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
} else {
                echo "ça marche";
}
  exit();
?>
 


 
et j'ai bien Ca marche qui s'affiche
bon, les identifiants marchent bien.


 
Bien maintenant que ça marche, tu recommences tout et tu utilises un truc à jour et sécurisé (mysqli n'est pas formellement déprécié, mais dans les faits, c'est tout comme...)  :
 
Un tutorial au hasard sur Google:  
https://phpdelusions.net/pdo
 
 
 


---------------
Expert en expertises
Reply

Marsh Posté le 06-08-2024 à 09:19:30    

Oui ça marche. Enfin, les identifiants marchent.
Mais pas quand je remets le index.php de l'application. Là, je retombe sur la même erreur qu'au début.
Mon n+1 a suivi ce tuto
https://tutos-info.fr/wp-content/up [...] IAN-12.pdf
pour installer OCS sur une Debian 12 (<-- mon choix) et s'est retrouvé bloqué à l'étape 6.
A ce moment j'ai repris la main. J'ai passé cette étape et là donc, je me heurte à l'erreur LDAP.

 

J'hésite à tout reprendre à zéro, voire même de changer la procédure :heink:

 

La ligne 37 du fichier ldap.php est celle-ci :

 
Citation :


while ($item = mysqli_fetch_object($res)) {
    $config[$item->NAME] = $item->TVALUE;
    define($item->NAME, $item->TVALUE);
}

 

L'erreur ($result) must be of type mysqli_result veut dire que $res n'est pas ce qui est attendu ?
Sachant que : $res = mysql2_query_secure($sql, $_SESSION['OCS']["readServer"], $arg);

 



Message édité par LeKeiser le 06-08-2024 à 09:36:35

---------------
"I intend to live the first half of my life.I don't care about the rest."Errol Flynn."The difference between genius and stupidity is that genius has its limits."Albert Einstein
Reply

Marsh Posté le 06-08-2024 à 10:50:27    

Si c’est trop compliqué, pourquoi ne pas utiliser une image docker toute prête avec OCS inventory ?
 
https://wiki.ocsinventory-ng.org/13 [...] ker-image/


Message édité par Hermes le Messager le 06-08-2024 à 10:51:25

---------------
Expert en expertises
Reply

Marsh Posté le 06-08-2024 à 11:46:08    

C'est ce que je pensais. Ce que je vais proposer.
Je change des trucs, et j'avance à tout petit pas.  
Là, j'ai récupéré la config ldap de l'ancien serveur et je l'ai appliquée sur le nouveau.
Je passe une étape où je dois m'authentifier, et au lieu d'avoir la page HTTP ERROR 500, j'ai une page blanche.
Une belle avancée donc :D
 
EDIT : mais je ne retomberai pas dans le même problème ? Une récupération de compte LDAP ? Enfin, si je comprends bien l'erreur PHP


Message édité par LeKeiser le 06-08-2024 à 12:42:40

---------------
"I intend to live the first half of my life.I don't care about the rest."Errol Flynn."The difference between genius and stupidity is that genius has its limits."Albert Einstein
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed