Une idée de comment je pourrais débugger ceci ?

Petit nouveau ! | 1 Messages

23 nov. 2009, 15:12

- Infos : je suis en PHP 5.3.0 sous WAMP.
- But : je cherche à automatiser des composants Microsoft Office (Microsoft Visio dans cet exemple.)

Voilà pour l'intro rapide :) En version longue, je lance une instance de Visio et la pilote par les objets COM :
$objVisio = new COM("visio.application");
...
Et tout va pour le mieux dans le meilleur des mondes, voilà, merci ! :D

Bon en fait, non, tout ne va pas bien... Et je n'arrive pas à trouver comment debugger mon problème que voici via un script de test ultra basique :
<?php
$input = "c:\mon_document_visio.VSD";
$visio = new COM("visio.application");
$visio->Documents->Open($input);
$visio->Quit();
$visio = null;
echo "Done.\n";
?>
Comme vous le voyez, ce script ne sert à rien : il ouvre un document visio dans Visio et ferme l'appli... Mais il démontre bien mon pbr !

- sur tous les documents que j'ai, sauf un, ça marche.
- sur UN document (me demandez pas ce qu'il a de spécial...) ça plante : Visio reste en mémoire, ne se termine pas, ne rend pas la main à PHP qui freeze à son tour. MAIS ça ne freeze qu'en HTTP... SI je lance le script en ligne de commande (c:\php\php.exe toto.php), ça marche sans failles dans 100% des cas...

Vu que c'est un peu tout ou rien, j'ai du mal à diagnostiquer le pourquoi du plantage... Une idée de comment faire ?

Merci ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 nov. 2009, 18:05

Je ne sais pas si ça rentre dans ton cas de figure, mais je sais que Windows à du mal avec les noms trop long.
Est-ce que le chemin complet (chemin + nom de fichier) ne dépasserais pas 255 caractères ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 72 Messages

25 nov. 2009, 10:51

Le probleme se produit à l'ouverture du fichier qu'il ne trouve pas. j'ai souvent recontré ce probleme avec l'utilisation des com word.application.
De plus il m'etait difficile de comprendre pourquoi car aucune erreur n'etait generé par php ce qui compliquait nettement le probleme.

A partir du moment ou j'ai utilisé la fonction realpath tous mes problemes etaient resolues.
<?php
$input = "c:\mon_document_visio.VSD";
$visio = new COM("visio.application");
$visio->Documents->Open(realpath($input));
$visio->Quit();
$visio = null;
echo "Done.\n";
?>


Essaye mais je pense que ca devrait resoudre tes problemes !