Forum Programmation.php Soucis avec l'interface d'administration d'OCSInventory-NG.

Posté par  .
Étiquettes :
0
12
nov.
2007
Bonjour,
Après avoir avec succès installé ocsinventory-ng, en vue de l'utiliser conjointement avec glpi, je me retrouve coincé avec une erreur php que je n'avais jamais vue avant.
En effet, la page d'accueil s'affiche correctement, et j'ai même pu créer la base de données Mysql requise, mais ensuite, après avoir validé le nom d'utilisateur/mot de passe initial de l'application (admin/admin), je me retrouve sous konqueror avec une page blanche, et sous firefox avec une page contenant ce message d'erreur :

Fatal error: main() [<a href='function.main'>function.main</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition &quot;FichierConf&quot; of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /srv/www/ocsreports/header.php on line 46


Ayant cherché dans les FAQs et autres archives des forums de discussion d'ocsinventory, je me tourne vers vous pour essayer de trouver au moins un début d'explication.
Tous les modules et logiciels requis par ocs sont installés et configurés correctement.
D'ailleurs, sur la machine sur laquelle j'ai installé ocs, php, perl, apache et mysql tournent depuis un sacré bout de temps.
Je pense donc qu'il s'agit d'une bonne grosse erreur de php, mais je n'en comprends pas le sens...
Cette erreur survient dans deux cas de figure qui sont facilement reproductibles :
Soit je me contente de recharger la page d'accueil, soit je valide le formulaire qui m'est présenté.
Le code incriminé est le suivant :

if($l->g(0))
echo "; charset=".$l->g(0).";";
else
echo "; charset=ISO-8859-1;";


La variable $l est déclarée dans le fichier nommé preferences.php

if( ! isset( $_SESSION["fichLang"] ) ) {
if( isset($_COOKIE["lang"]) )
$_SESSION["fichLang"] = new FichierConf($_COOKIE["lang"]);
else
$_SESSION["fichLang"] = new FichierConf(DEFAULT_LANGUAGE?DEFAULT_LANGUAGE:getBrowserLang());
}
$l = $_SESSION["fichLang"];

Donc, pour moi, rien de particulier.
Je suis donc preneur de toute piste qui pourrait me mettre sur la voie pour pouvoir enfin utiliser ce produit.
P.S. : il va sans dire que si je trouve une solution, je la posterai ici même.
P.S.2 : Pour informations, je fais tourner
apache 2.0.55
php 5.2.0
mysql 5.0.21
perl 5.8.6
  • # chezmoicamarche.org

    Posté par  . Évalué à 1.

    avec :
    apache 2.2.3
    mysql 5.0.38
    perl 5.8.8
    php 5.2.1

    ocsinventory 1.01

    -----------
    ta machine a-t-elle les prerequis pour faire tourner OCS ?

    page 10 du manuel :

    3.1.1 Requirements.
    - Apache version 1.3.33 or higher / Apache version 2.0.46 or higher. (apache 2.0.55 dans ta conf)
    ---- Mod_perl version 1.29 or higher.
    ---- Mod_php version 4.3.2 or higher.
    - PHP 4.3.2 or higher, with ZIP and GD support enabled. (php 5.2.0 dans ta conf)
    - PERL 5.6 or higher. (perl 5.8.6 dans ta conf)
    ---- Perl module XML::Simple version 2.12 or higher.
    ---- Perl module Compress::Zlib version 1.33 or higher.
    ---- Perl module DBI version 1.40 or higher.
    ---- Perl module DBD::Mysql version 2.9004 or higher.
    ---- Perl module Apache::DBI version 0.93 or higher.
    ---- Perl module Net::IP version 1.21 or higher.
    ---- Perl module SOAP::Lite version 0.66 or higher (not mandatory)
    - MySQL version 4.1.0 or higher(mysql 5.0.21 dans ta conf)
    ---- with InnoDB engine active.
    - Make utility like GNU make.


    entre autres (page 11 du manuel)
    les paquets (nom venant de debian) suivants :

    libxml-simple-perl
    libcompress-zlib-perl
    libdbi-perl
    libdbd-mysql-perl
    libapache-dbi-perl
    libnet-ip-perl
    libsoap-lite-perl
    • [^] # Re: chezmoicamarche.org

      Posté par  . Évalué à 2.

      Bon, déjà, merci pour cette réponse rapide !
      D'abord, je n'avais pas mis toutes les versions des pré-requis dans mon message initial, car je pensais que "Tous les modules et logiciels requis par ocs sont installés et configurés correctement" suffisait.... /o\
      Alors, comme tu as pris la peine de lire la doc d'ocs, de façon à m'aider, je prends la peine de répondre avec tous les numéros de versions des packages installés sur ma machine :
      mod_perl est en version 2.0.3
      mod_php je pense que c'est la même version que celle de php, donc je ne revient pas dessus.
      Les modules de perl ont été installés ce matin depuis l'invite de la commande cpan, avec systématiquement la commande install <nom du module>
      Je pense donc avoir obtenu les versions les plus récentes.
      Pour le coup d'innodb, dans la doc, il est spécifié :
      NB: Ensure MySQL InnoDB engine is activated on your database server. Open my.cnf and
      ensure there is no ligne “skip-innodb” or this line is commented (begins with ‘#’).
      et je n'ai aucune ligne de cette forme dans le my.cnf.
      De plus, j'ai bien pu créer la base de données, avec le script appelé install.php fourni avec ocs. C'est bien pour cela que je pense définitivement qu'il s'agit bien là d'une erreur propre à php, mais je ne vois pas laquelle. Probablement quelque chose à voir avec les sessions, ou avec le serializer (j'ai remarqué dans la page fournie par phpinfo() qu'il y avait quelque chose à voir avec ça (session.serialize_handler ou Registered serializer handlers php php_binary ? ).
      Je continue mes investigations, mais merci déjà pour cette première approche.
      • [^] # Re: chezmoicamarche.org

        Posté par  . Évalué à 1.

        en fait j'ai installé OCS/GLPI dans le courant de l'été à partir d'un serveur vierge en ubuntu 7.04.

        La doc n'etait donc pas trop loin.

        Les prerequis sont bien presents et j'avais lu ton post un peu en travers.

        1°) l'installation de OCS via install.php a été faite en mode web je suppose, en te connectant à
        http://ton_serveur/ocsreport/install.php

        et non pas en lancant install.php en ligne de commande ?

        2°) installer les modules les plus recents via CPAN en conservant une base "ancienne" de Perl pourrait etre une source de soucis.

        car en fait une partie du site tourne avec un SOAP en perl.

        3°) il convient en effet de verifier les options de serialisation, je peux faire un phpinfo() pour te donner mes options (venant d'un serveur vierge) à comparer avec tes options qui sont sur un serveur qui tournait deja.
        • [^] # Re: chezmoicamarche.org

          Posté par  . Évalué à 2.

          Alors, pour le 1°, oui, c'est tout à fait ça, l'installation s'est faite depuis un navigateur, en pointant à l'adresse indiquée.
          Évidement, j'ai auparavant installé le bouzin, c'est à dire, décompressé l'archive de ocs-ng, et lancé le script nommé setup.sh fourni avec ocs (sinon, je n'aurais pas pu accéder à la page indiquée).
          Pour le 2, à vrai dire, je tourne sur un LFS, version 6.1 installé depuis quelques temps déjà (depuis le 25/11/2005), et il est vrai que c'est un peu vieux. Cependant, perl n'est pas très utilisé sur cette machine, et il a été installé en même temps que le système, point. Ceci étant, je n'arrive pas à concevoir que ces dépendances (que ce soit perl ou les autres modules) causent le problème que je rencontre, vu qu'il s'agit d'une erreur liée visiblement à php, et à rien d'autre.
          D'ailleurs, j'ai constaté que par défaut, le code incriminé dans mon message initial cherchait à inclure un fichier nommé DEFAULT_LANGUAGE.txt situé dans le répertoire languages. Fouillant dans ce répertoire, et constant que ce fichier n'existait pas, j'ai créé un lien de ce nom pointant vers french.txt.
          Ça n'a rien apporté de plus, enfin, si, puisque depuis j'ai bien la page en français, et non une page sans texte, mais j'ai toujours le même message d'erreur. J'ai aussi, par acquis de conscience vérifié les cookies, mais je n'ai rien qui cloche de prime abord dans la configuration de mes navigateurs.
          Enfin, pour le 3°, vu que c'est un début de piste, et que ça me donnera une base de comparaison, non, je ne vais pas cracher dans la soupe, et oui, je suis intéressé !
          Ah, oui, et je pense avoir oublié une information importante dans tous mes posts précédents. La version d'ocs que j'ai installé est la dernière stable, la 1.01, trouvée sur le site officiel.
  • # comme ça...

    Posté par  . Évalué à 2.

    juste comme ça, le fichier de configuration est bien lisible par l'utilisateur qui exécute apache ?
    • [^] # Re: comme ça...

      Posté par  . Évalué à 2.

      Voilà, c'est tout à fait le genre de commentaire qui provoque une coulée de sueurs froides à leur lecture, puis on vérifie, et non, finalement, ce n'est pas ça.... Pourtant, j'y ai cru, et ça aurait pu être ça.
      Mais ces filous qui ont développé le script d'install on bien prévu les choses, et même si le propriétaire des fichiers inclus dans la partie web était root (changé en l'utilisateur d'apache depuis la lecture de ce post), l'intégralité des fichiers appartenait au groupe apache, et ce groupe avait les droits en lecture/écriture sur les fichiers et dossiers de l'interface web.
      Merci quand même, car c'était une bonne idée !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.