IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Objets COM sous WAMP


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Septembre 2010
    Messages : 76
    Points : 42
    Points
    42
    Par défaut Objets COM sous WAMP
    Bonjour,

    J'essaie d'utiliser des objets COM pour ouvrir un fichier word. J'utilise mon PC local (Windows seven 32b) avec Wamp, quand j'utilise des codes de test récupérés à droite à gauche, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $word = new COM("word.application") or die ("Could not initialise MS Word object."); 
    $word->Documents->Open(realpath("test.docx")); 
    // Extract content. 
    $content = (string) $word->ActiveDocument->Content;  
    echo $content; 
    $word->ActiveDocument->Close(false); 
    $word->Quit(); 
    $word = null; 
    unset($word);
    J'ai l'exception :

    Uncaught exception 'com_exception' with message 'Source: Microsoft Word
    Description: La commande a échoué
    Détail de l'exception en la catchant :

    protected 'message' => string '<b>Source:</b> Microsoft Word<br/><b>Description:</b> Commande non disponible : aucun document n'est ouvert.' (length=108)
    private 'string' (Exception) => string '' (length=0)
    protected 'code' => int -2147352567
    Le document est bien lisible (file_exists et is_readable et file_get_contents marchent).

    Point marrant : quand j'exécute ma page PHP en ligne de commande, ça marche bien ! Donc je suppose que ça doit venir d'un "détail" de sécurité ou une différence dans le php.ini (puisque le mode web et le mode console utilisent un fichier différent). Mais je vois pas quoi ...

  2. #2
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    vérifie que realpath("test.docx") donne bien le chemin complet pour accéder à ton document

    tu n'est peut être pas dans le même répertoire lors de l’exécution en ligne de commande et lors de l’exécution via la page php.

    il faut peut être , la préciser plus formellement par exemple "c:/xxx/yyy/test.docx";
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Septembre 2010
    Messages : 76
    Points : 42
    Points
    42
    Par défaut La réponse...
    Le fichier est accessible normalement.

    En fait le problème vient du fait que quand je lance en ligne de commande, ça exécute PHP avec l'utilisateur courant et donc lance Word avec mon login courant - ça ça marche.

    Par contre quand j'ouvre la page avec un navigateur web, ça utilise le service Apache qui est associé à l'utilisateur système et donc Word est lancé avec le user SYSTEM et bloque, en étant caché, sur la première petite popup Word qui demande nom et initiales.

    J'ai trouvé une solution de contournement en lançant une ligne de commande avec le user SYSTEM avec l'outil PSEXEC, qui me permet ensuite de lancer Word et de valider le popup. Ca marche ensuite bien...

    ...mais uniquement sur mon PC perso. J'ai essayé sur un serveur 2008 avec Office 2003 x86 installé, et quand le user SYSTEM lance Word il ne peut rien faire, il a un message de "mémoire insuffisante"... Je suppose qu'il faut mettre à jour le Office vers un x64...

Discussions similaires

  1. Executer un objet COM sous L'ide
    Par ricky78 dans le forum MFC
    Réponses: 0
    Dernier message: 06/02/2012, 14h19
  2. [PHP 5.2] Utilisation d'une DLL sous PHP avec objet COM
    Par Bqda dans le forum Langage
    Réponses: 5
    Dernier message: 08/06/2009, 16h05
  3. [Excel] De xls vers csv sans objet COM (php4 sous linux)
    Par AntaresJon dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 26/02/2009, 17h13
  4. Objet COM sous builderC++2007
    Par sylvain.cool dans le forum C++Builder
    Réponses: 5
    Dernier message: 14/03/2008, 09h42
  5. Désenregistrement d'Objets COM sous Windows
    Par barthelv dans le forum Windows
    Réponses: 2
    Dernier message: 21/05/2003, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo