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 :

[Système] Commande Linux avec php


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut [Système] Commande Linux avec php
    Bonjour à tous,

    Je suis à la recherche d'une fonction en php permettant d'exécuter une commande du même genre que la console Debian sous Linux.

    Ce que je veux faire :
    Convertir un fichier pdf en txt à partir d'un site web (en cliquant sur un bouton)

    Sous windows en cliquant sur le bouton : "version txt"
    Je faisais appel à un fichier : convertionpdftxt.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    if (file_exists($filename_pdf)) {
    echo $filename_pdf;
    exec('pdftotext.exe '.$filename_pdf);
    ?>
    <script>
    document.location.href="../../../../pdf/<?php echo $filename_txt; ?>";
    </script>
    La commande de conversion se faisait par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec('pdftotext.exe '.$filename_pdf);
    Sous linux, j'ai trouvé xpdf qui permet de faire la même chose à partir de la console en tapant par exemple :
    pdftotext test.pdf test.txt
    cela converti bien mon fichier pdf.
    Mais lorsque je fais la même chose avec une page php avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    exec('pdftotext.exe test.pdf test.txt);
    ?>
    ça ne marche pas, il m'affiche une page blanche.

    Existe-t-il un équivalent de la fonction "exec" qu'on trouve dans le langage php sous windows, mais qui fonctionnerait sous Linux ?

    Merci d'avance pour vos réponses.

    Pour info : j'suis sous Debian

  2. #2
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 327
    Points
    4 327
    Par défaut
    La commande exec permet simplement d'executer une commande systeme sur le systeme d'exploitation executant le script php.
    Et cela marche que ca soit window ou linux.

    Ton soucil viens je pense du fait que tu appel toujours ton fichier .exe de window sous debian.
    De plus tu as une faute de quote

    Tente d'executer cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exec('pdftotext '.$filename_pdf.' test.txt');
    Si sela ne marche pas, execute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo 'pdftotext '.$filename_pdf.' test.txt';
    et dis nous ce qu'il t'affiche.

    Kaz.

  3. #3
    Membre à l'essai
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Lorsque je fais "pdftotext", ça n'a plus rien à voir avec windows.

    J'ai marqué dans mon premier message que quand je tape :
    pdftotext test.pdf test.txt
    cela fonctionnait parce que j'ai installé Xpdf sous Linux.

    Mais lorsque je marque la même chose dans un fichier php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    	$filename_pdf = 'test.pdf';
    	$filename_txt = 'test.txt';
    	if (file_exists($filename_pdf)) {
    		echo "le fichier pdf existe";
    		exec('pdftotext '.$filename_pdf.' '.$filename_txt);
    	} else {
    		echo "le fichier pdf n'existe pas";
    	}
    ?>
    La commande ne s'excute pas sous Linux mais lorsque je fais la même chose sous windows, tout fonctionne très bien.

  4. #4
    Membre à l'essai
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    ça y est, c'est bon, j'ai résolu mon problème merci.

    En effet, il faut toujours utiliser la commande exec en php.
    Le problème venait des droits en écriture sur le répertoire où se trouvent les fichiers pdf.
    Lorsque j'exécutais la commande à partir de la console Linux, j'avais les droits en écriture sur le répertoire des pdf. Mais en faisant la commande suivantge :
    chmod 777 pdf
    pour donner un accès total aux fichiers pdf, le script php fonctionne sans problème.

    Merci de ton aide Kazou.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécuter une commande linux avec php
    Par Tinkite82 dans le forum Langage
    Réponses: 4
    Dernier message: 27/10/2009, 13h56
  2. Réponses: 12
    Dernier message: 28/04/2009, 09h20
  3. [Système] Commande Linux via PHP
    Par musix77 dans le forum Langage
    Réponses: 1
    Dernier message: 31/07/2008, 12h57
  4. [Système] Commande Linux dans Programme PHP
    Par makohsarah dans le forum Langage
    Réponses: 3
    Dernier message: 10/09/2007, 12h36
  5. [Système] passwd sous linux avec PHP
    Par guitouu dans le forum Langage
    Réponses: 1
    Dernier message: 14/02/2007, 20h38

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