You are not logged in.
Bonjour,
depuis le passage en 0.71.1 et mass_ocs_import 1.2 le plugins ne fonctionne plus.
En mode debug et en le lançant en console, j'ai l'erreur suivante :
...
Thread #1 : starting (1/1)
thread #1 : import computers from server: 'ocs'
thread #1 : 17 computer(s)
.
Fatal error: Cannot unset string offsets in /data/srv/www/glpi/inc/commondbtm.class.php on line 651
cleaning up.
Wed Sep 3 10:03:46 CEST 2008 ended
PROD : 0.71.6 - Debian4.0/Apache2.2.3/php5.2.0/Mysql5.0.32
DEV : 0.72 - Debian4.0/Apache2.2/php5/Mysql5
Offline
bonjour,
ça marchait bien avec la version 1.1 du plugin ?
Offline
De mémoire, oui, mais avec la version précédente de GLPI, la 0.71.
Je vais vérifier tout ça
PROD : 0.71.6 - Debian4.0/Apache2.2.3/php5.2.0/Mysql5.0.32
DEV : 0.72 - Debian4.0/Apache2.2/php5/Mysql5
Offline
Bonjour,
même erreur en 0.71.1 et le mass_ocs 1.1
je vais tester avec une vielle sauvegarde la 0.71 et mass_ocs 1.1 pour etre sur que cela fonctionnait
PROD : 0.71.6 - Debian4.0/Apache2.2.3/php5.2.0/Mysql5.0.32
DEV : 0.72 - Debian4.0/Apache2.2/php5/Mysql5
Offline
Bon, sur une sauvegarde de début aout, avec GLPI 0.71 et mass_ocs 1.2, cela fonctionnait.
Est ce la peine que je teste avec la 0.71 et 1.1 ?
edit : correction fautes de frappes
Last edited by laur (2008-09-04 17:09:25)
PROD : 0.71.6 - Debian4.0/Apache2.2.3/php5.2.0/Mysql5.0.32
DEV : 0.72 - Debian4.0/Apache2.2/php5/Mysql5
Offline
encore moi,
je viens de m'apercevoir que lorsque je lance une synchro de mon serveur OCS par le menu GLPI, et pas par le plugin : * Central > * Outils > * OCSNG
J'obtiens la même erreur (en mode debug) :
Fatal error: Cannot unset string offsets in /data/srv/www/glpi/inc/commondbtm.class.php on line 651
PROD : 0.71.6 - Debian4.0/Apache2.2.3/php5.2.0/Mysql5.0.32
DEV : 0.72 - Debian4.0/Apache2.2/php5/Mysql5
Offline
Et dans les journaux (php_error.log) afin d'avoir le "traceback" complet
++
Dév. Fedora 29 - PHP 5.6/7.0/7.1/7.2/7.3/7.4 - MariaDB 10.3 - GLPI master
Certifié ITILv3 - RPM pour Fedora, RHEL et CentOS sur https://blog.remirepo.net/
Offline
rien de plus :
[05-Sep-2008 09:12:59] PHP Fatal error: Cannot unset string offsets in /data/srv/www/glpi/inc/commondbtm.class.php on line 651
L'erreur semble se produire que sur certain objet :
Dans le plugin chaque thread qui va rencontrer l'erreur retourne au prompt, avec 1 thread, le script sort de suite, avec X threads, je vais avoir x erreurs avant de retourner au prompt
Dans l'interface GLPI, en synchro manuelle, lorsque j'obtiens l'erreur, la page ne se rafraichit plus.
La barre de progression est bloqué à X%
Si je rafraichit ma page avec un F5, la progression continue, et va encore bloquer une ou plusieurs fois.
A la fin, tout se termine correctement, mais il me reste quelques postes impossible à synchroniser.
PROD : 0.71.6 - Debian4.0/Apache2.2.3/php5.2.0/Mysql5.0.32
DEV : 0.72 - Debian4.0/Apache2.2/php5/Mysql5
Offline
Il faut activer les traceurs (Configuration / Général / Traceurs dans fichiers (SQL, mail, cron...) = Oui) afin d'obtenir une trace détaillée et savoir ou se produit l'erreur.
++
Dév. Fedora 29 - PHP 5.6/7.0/7.1/7.2/7.3/7.4 - MariaDB 10.3 - GLPI master
Certifié ITILv3 - RPM pour Fedora, RHEL et CentOS sur https://blog.remirepo.net/
Offline
ok, je m'en occupe,
par contre je viens de m'apercevoir que j'ai l'erreur quand je tente de deconnecter "les ecrans" des ordinateurs en question.
J'approfondis la chose et je reviens
PROD : 0.71.6 - Debian4.0/Apache2.2.3/php5.2.0/Mysql5.0.32
DEV : 0.72 - Debian4.0/Apache2.2/php5/Mysql5
Offline
Je n'ai pas plus d'infos dans les logs avec les traceurs, que ce soit dans glpi/files/_log ou dans /var/log/apache/php_error.
Je pense avoir cerner la provenance de l'erreur.
Il m'est impossible de déconnecter les écrans.
Et lorsque la synchro OCS veut déconnecter un écran -> erreur
Lorsque je choisis un ordinateur et que je déconnecte l'ecran associé -> j'ai l'erreur.
Lorsque je choisis l'ecran en question et que je déconnecte l'ordinateur associé -> j'ai l'erreur.
Je peux correctement connecté un nouvel ecran, mais pas le déconnecter
Cela fonctionne correctement pour les autres périphériques
Dans le cas d'un ordinateur saisie manuellement dans GLPI (et non importé par OCS) je peux correctement déconnecter mes écrans
PROD : 0.71.6 - Debian4.0/Apache2.2.3/php5.2.0/Mysql5.0.32
DEV : 0.72 - Debian4.0/Apache2.2/php5/Mysql5
Offline
pour relancer sur mon problème.
L'erreur se situe sur la deconnection des moniteurs et n'est pas spécifique au plugin.
Dois je réouvrir un post dans la forum approprié ?
L'erreur se situe dans le fichier : glpi/inc/commondbtm.class.php ligne 651 :
unset($input['delete']);
Je suis en PHP5
quand je fais un gettype de la variable $input['delete'], j'ai un type : string.
Or dans la doc de migration PHP4 à PHP5 : http://fr3.php.net/manual/fr/migration5 … atible.php
On peut lire : L'utilisation d'index illégaux sur une chaîne de caractères entraîne maintenant un message E_ERROR au lieu d'un message E_WARNING auparavant. Voici un exemple incorrect : $str = 'abc'; unset($str[0]);.
Je viens de tester en PHP4, cela fonctionne correctement.
Last edited by laur (2008-09-09 17:42:43)
PROD : 0.71.6 - Debian4.0/Apache2.2.3/php5.2.0/Mysql5.0.32
DEV : 0.72 - Debian4.0/Apache2.2/php5/Mysql5
Offline
bonjour
je regarde ça demain,
merci beaucoup pour les indications très précises.
walid.
Offline
Bonjour,
avez vous pu y jeter un oeil ?
PROD : 0.71.6 - Debian4.0/Apache2.2.3/php5.2.0/Mysql5.0.32
DEV : 0.72 - Debian4.0/Apache2.2/php5/Mysql5
Offline
Bonjours,
J'ai la même erreur lors des synchro manuel
Fatal error: Cannot unset string offsets in /XXXXX//glpi/0.71.5/inc/commondbtm.class.php on line 651
Offline
Désolé, mais je vois vraiment pas ce qui pourrait bloquer dans cette partie de code
649 if (isset($input['delete'])){
650 $input['_delete']=$input['delete'];
651 unset($input['delete']);
652 }
Un problème spécifique à la version 5.2.0 de php ?
+
Dév. Fedora 29 - PHP 5.6/7.0/7.1/7.2/7.3/7.4 - MariaDB 10.3 - GLPI master
Certifié ITILv3 - RPM pour Fedora, RHEL et CentOS sur https://blog.remirepo.net/
Offline
Je suis pas programmeur en php. Je vois que vous développez en php 5.3.0 RC1 moi je suis en php 5.2.9. Ce problème n'a donc pas de solution actuellement. Est ce qu'il faut que je passe en php 5.1 ?
Offline
Le message à propose de php 5.2.0 concernait laur. En 5.2.9 il ne devrait pas y avoir de problème....
Si vous avez bien, en ligne 651, le code affiché dans mon message précédent, je ne vois pas ce qui pourrait bloquer...
+
Dév. Fedora 29 - PHP 5.6/7.0/7.1/7.2/7.3/7.4 - MariaDB 10.3 - GLPI master
Certifié ITILv3 - RPM pour Fedora, RHEL et CentOS sur https://blog.remirepo.net/
Offline
Je sais pas , en tout cas j'ai toujours ce problème. Que fait exactement cette partie de code ? Intéragie t'il avec la base ? C'est peut être un problème d'accès ? Car d'après ce que je comprend il arrive pas a supprimer la l'élement delete du tableau input ?
Offline
ce code s'assure que l'élément deleted existe bien dans le tableau, afin de pouvoir l'enlever
Offline
A qu'elle moment l'élément deleted est insérer dans le tableau ? Est ce que je dois forcer cet élement ?
Offline
Bonsoir,
je viens de voir avec grande stupéfaction que ça fait une éternité que je n'ai pas réagit sur ce post et aussi sur le forum.
Je vais essayer de mettre à jour php sur le serveur de dev et voir ce que ça donne.
PROD : 0.71.6 - Debian4.0/Apache2.2.3/php5.2.0/Mysql5.0.32
DEV : 0.72 - Debian4.0/Apache2.2/php5/Mysql5
Offline
bien, bizzare
je viens de tester sur un autre serveur en php 5.2.0, même version de .deb que la prod
Un export de la base et de la racine web du serveur de prod du 1er juin
et la ... ça fonctionne ...
la conf de PHP est la même en prod et en dev
Edit : je me suis en plus mélangé les pinceaux.
En fait, la suppression des moniteurs fonctionne lorsque dans la configuration d'OCS l'import des moniteurs est désactivé, et cela ne fonctionne pas lorsque l'import des moniteurs est à "import unique"
Last edited by laur (2009-06-11 17:30:08)
PROD : 0.71.6 - Debian4.0/Apache2.2.3/php5.2.0/Mysql5.0.32
DEV : 0.72 - Debian4.0/Apache2.2/php5/Mysql5
Offline
Bonjour,
je pense pouvoir vous faire recréer le problème :
Dans le configuration du serveur OCS (configuration / mode OCS NG)
Mettre les valeurs suivantes :
Comportement lors de la déconnexion : Suppression
Moniteur : Import Unique
Une fois fait, choisir un ordinateur synchronisé par ce serveur OCS, puis lui déconnecter l'ecran.
L'erreur devrait se produire (il faut peut etre forcer une synchronisation OCS avant de déconnecter)
Si je comprends bien ce qu'il se passe :
On déconnecte l'ecran, donc celui-ci va etre supprimer de GLPI :
Or pour supprimer cet ecran le code suivant est executé :
commondbtm.class.php: ligne 648
$input=doHookFunction("pre_item_delete",$input);
if (isset($input['delete'])){
$input['_delete']=$input['delete'];
unset($input['delete']);
}
et ça coince au unset($input['delete']);
Dans le cas de la suppression d'un ecran, la valeur de $input['delete'] est "4"
donc unset($input['delete']); est equivalent à : unset("4");
Ce qui nous renvoie une erreur en PHP5 et plus un warning comme en PHP4 (voir post #12)
Muller avez vous la même config que ci-dessus ?
Arrivez vous a recréer l'erreur avec ces elements ?
Last edited by laur (2009-06-12 11:36:39)
PROD : 0.71.6 - Debian4.0/Apache2.2.3/php5.2.0/Mysql5.0.32
DEV : 0.72 - Debian4.0/Apache2.2/php5/Mysql5
Offline
Bonjour,
Désolé du retard mais j'étais occupé. C'est pour j'ai mis ce problème de côté.
effectivement j'ai la même config
J'ai temporairement résolu le problème en remplaçant "unset($input['delete']);" par "$input['delete']='';"
Offline