Categories > [old] TbsOoo & TinyDoc >

Fatal error: Cannot redeclare tbs_misc_convspe

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: danypoup
Date: 2007-01-12
Time: 09:54

Fatal error: Cannot redeclare tbs_misc_convspe

Voici ma configuration :
- Win XP/SP2, IIS, PHP 5.2.0
- TBSooo 0.79
- TBS 3.2.0

J'ai installé TBSooo et ses exemples sous c:\inetpub\wwwroot\phpooo\tbsooo.

J'ai remplacé le fichier "tbs_class.php" par celui de la version 3.2.0 de TBS.

J'ai installé les programmes Zip et Unzip dans le dossier c:\php. Ce dossier a été ajouté à la variable d'environnement PATH.

J'ai testé, avec succès, le bon fonctionnement de PHP et IIS avec un petit script php simple :-).

J'ai ensuite testé l'exemple tbsooo_us_examples_hello.php.

J'y ai uniquement modifié la ligne suivante :
$OOo->SetProcessDir('c:/tmp');

Et lors de son exécution, j'obtiens le message d'erreur suivant :

Fatal error: Cannot redeclare tbs_misc_convspe() (previously declared in C:\Inetpub\wwwroot\phpooo\tbsooo\tbs_class.php:2634) in C:\Inetpub\wwwroot\phpooo\tbsooo\tbs_class.php on line 2641

Par ailleurs, dans le dossier c:\tmp, un dossier temporaire est crée avec un fichier content.xml dont la taille est à zéro !!! Ce dossier et ce fichier n'étant pas supprimés.

Or, en analysant le fichier incriminé, ici tbs_class.php, il s'avère que la fonction tbs_misc_convspe() n'y est pas défini plus d'une fois !!!

J'ai alors déplacé cette fonction à la fin du fichier. Et, du coup, le problème se reproduit, mais sur la fonction suivante, c'est à dire tbs_Misc_CheckArgLst.

Ce qui confirme que le problème n'est pas sur la fonction, mais ailleurs !!

Alors, d'où vient le problème ???

Merci.
By: danypoup
Date: 2007-01-12
Time: 10:06

Re: Fatal error: Cannot redeclare tbs_misc_convspe

Complément d'infos :

Le message d'erreur apparait dans le navigateur si vous modifiez le fichier de configuration de php (php.ini) comme suit :

display_errors = On

Si ce paramètre est laissé à OFF (valeur par défaut), alors l'exécution du script tbsooo_us_examples_hello.php renvoi un fichier vide. Pour autant, il semble bien que ce soit un fichier OpenOffice qui soit renvoyé car l'activex OOO s'affiche dans IE, mais avec uniquement une page blanche !!!

J'espère avoir été clair :-).

Je poursuis les tests....
By: Olivier Loynet
Date: 2007-01-12
Time: 10:25

Re: Fatal error: Cannot redeclare tbs_misc_convspe

Pour ma part je n'ai encore fait le portage de tbsOOo en version 3. Question de temps !

Pour la génération de document, je te conseille d'utiliser la version 2.
Cela n'empeche pas que si tu utilises TBS aussi pour tes pages HTML d'avoir la version 3, mais il faut avoir les deux versions des 2 classes.

Tu pourrais par exemple renommer la classe tbs v2 comme suit
tbsooo_class.php en tbs_class_v2.php

et lors de la génération de tes documents de faire
  include('inc/tbs_class_v2.php');
  include('inc/tbsooo_class.php');

Olivier
By: danypoup
Date: 2007-01-12
Time: 10:25

Re: Fatal error: Cannot redeclare tbs_misc_convspe

Je viens de refaire le test, mais avec une configuration un peu différente : j'ai remplacé PHP 5.2.0, par PHP 4.4.4. Par ailleurs, j'ai remis le fichier tbs_class.php d'origine de TBSooo.

Résultat lors de l'exécution de l'exemple tbsooo_us_examples_hello.php:

J'obtiens un fichier OpenOffice qui s'affiche, via l'ActiveX d'OO, dans IE, mais avec les message suivants (la marque [...] indique une partie non recopiée ici):

- au début du fichier :

TinyButStrong Error (LoadXmlFromDoc method): File not found : c:/tmp/9e66e7a8a78a19eee999d26e59b2b083/content.xml
PK¢V.3á¥19mimetypeapplication/vnd.sun.xml.writerPK¢V.3 content.xml¥UÏoÚ0¾ï¯ð|Ø-ÖKa@¥•VªDKµ‚´iÚÁuðæØ™íøï÷b'¡
’¸$²ß÷¾÷½¶Ç7»T¢-7Vh
[.....]

- à la fin du fichier :

[...]
o«•5šÿþðP×óØ’8Û«Çg%æ°¶—´ ^-ÖêPK GþðPK ¢V.3á¥19mimetypePK ¢V.3HµeŽz× Dcontent.xmlPK ¢V.3û§Ù § ÷styles.xmlPK ¢V.3(¾žÛˆˆÏmeta.xmlPK ¢V.3 Öé)—
} settings.xmlPK ¢V.3 GþðàMETA-INF/manifest.xmlPKZ !
TinyButStrong Error (_RemoveTmpDir method): Can't remove directory : c:/tmp/9e66e7a8a78a19eee999d26e59b2b083

Or, dans le c:\tmp, 5 dossiers temporaires sont créés, dont celui évoqué dans les messages d'erreur ci-dessus. Tous ces dossiers contiennent un fichier content.xml vide. Par ailleurs, sous c:\tmp, un fichier avec l'extension ".sxw" est présent, d'une taille de 6 Ko !!!

Je suis ouvert à toute proposition, suggestion, conseil, recommandation, .... ;-)

Merci.

P.S. : dans le fichier tbsooo_class.php, j'ai apporté les corrections suivantes, suggérés par Guido :

  function GetPathnameDoc()
  {
     // return path
    return $this->_ooo_basename.'.'.$this->_ooo_file_ext;
  }

function RemoveDoc()
  {
    // remove file
    unlink($this->GetPathnameDoc());
   
    // remove tmp dir
    $this->_RemoveTmpBasenameDir();

  }
By: danypoup
Date: 2007-01-12
Time: 10:56

Re: Fatal error: Cannot redeclare tbs_misc_convspe

Allez, un test supplémentaire !!!.

Cette fois-ci, la configuration est la suivante :
- Win XP/SP2, IIS, PHP 5.2.0
- TBSooo 0.79
- TBS 2.05.8

Résultat :

Même problème constaté que celui évoqué dans le premier post de ce thread. Au numéro de ligne près, la fonction tbs_misc_convspe est considérée comme redéclarée dans le fichier tbs_class.php, alors qu'il n'en est rien en réalité!!!

Le doute m'envahit et la suspicion me guette... :-)

La suite au prochain épisode...

Plus sérieusement, j'espère trouvé la cause de ces problèmes ou que quelqu'un saura m'aiguiller, voire me donner l'explication.

Merci d'avance.