Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1565 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] erreurs PHP serveur OCS

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] erreurs PHP serveur OCS

n°2477217
LeKeiser
Appelez moi Marcel.
Posté le 02-08-2024 à 16:54:58  profilanswer
 

: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
mood
Publicité
Posté le 02-08-2024 à 16:54:58  profilanswer
 

n°2477228
mechkurt
Posté le 02-08-2024 à 20:11:45  profilanswer
 

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
n°2477239
pluj
Posté le 02-08-2024 à 23:27:36  profilanswer
 

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
n°2477301
LeKeiser
Appelez moi Marcel.
Posté le 05-08-2024 à 11:20:41  profilanswer
 

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
n°2477305
LeKeiser
Appelez moi Marcel.
Posté le 05-08-2024 à 15:07:02  profilanswer
 

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
n°2477333
Hermes le ​Messager
Breton Quiétiste
Posté le 05-08-2024 à 18:26:40  profilanswer
 

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
n°2477364
LeKeiser
Appelez moi Marcel.
Posté le 06-08-2024 à 09:19:30  profilanswer
 

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
n°2477368
Hermes le ​Messager
Breton Quiétiste
Posté le 06-08-2024 à 10:50:27  profilanswer
 

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
n°2477373
LeKeiser
Appelez moi Marcel.
Posté le 06-08-2024 à 11:46:08  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] erreurs PHP serveur OCS

 

Sujets relatifs
PHP/AJAX JQuery => Comment récupérer les données en PHP ?[PHP] DATE : Problème de formatage
[PHP] Comptage de réponse après clic bouton dans emailPHP/MySQL : afficher le nombre d'id dans une table
Problème Curdate et date du serveur sql[PHP/SQL] somme en php de deux colonnes SQL
je connais SQL, mais c'est quoi un site PHP/MYSQL et à quoi sert php?[problème] Php Ajax refresh, Js event
PHP - Récupérer le rating dans les exif d'une photoPHP rentre 0 au lieu de NULL
Plus de sujets relatifs à : [PHP] erreurs PHP serveur OCS


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR