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] Retour de la fonction exec()


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 22
    Par défaut [Système] Retour de la fonction exec()
    Bonjours à tous,

    j'utilise un morceau de code sur mon site (PHP Version 4.4.4-8+etch4) et ce code ne semble pas fonctionner correctement. Voici les extraits de code concernés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $status_code = exec($command);
    if (!$status_code) { [...]   return false; }
    Ici, $status_code ne contient pas un booléen mais une chaine de caractères. Donc on n'entre jamais dans le if.

    De même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $status_code = copy($tmp_filename,$filename);
    if (!$status_code) { [...]   return false; }
    Ici, $status_code ne semble rien contenir et on n'entre pas non plus dans le if.

    Il est étrange que ce code ne fonctionne pas sur mon serveur. J'ai regardé du côté de mon safe_mode mais il est Off. Je n'ai pas d'explication.

    Merci d'avance pour vos suggestions.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Par défaut
    Citation Envoyé par MB_MathemaTeX Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $status_code = exec($command);
    if (!$status_code) { [...]   return false; }
    Ici, $status_code ne contient pas un booléen mais une chaine de caractères. Donc on n'entre jamais dans le if.
    Sache que le resultat de exec($command) sera exactement comme celui de cmd.exe

    Citation Envoyé par MB_MathemaTeX Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $status_code = copy($tmp_filename,$filename);
    if (!$status_code) { [...]   return false; }
    Ici, $status_code ne semble rien contenir et on n'entre pas non plus dans le if.

    Il est étrange que ce code ne fonctionne pas sur mon serveur. J'ai regardé du côté de mon safe_mode mais il est Off. Je n'ai pas d'explication.

    Merci d'avance pour vos suggestions.
    Essaye de faire un echo de $tmp_filename et de $filename avant le if pour voir le contenu de tes variables.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par MB_MathemaTeX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $status_code = exec($command);
    if (!$status_code) { [...]   return false; }
    Ici, $status_code ne contient pas un booléen mais une chaine de caractères. Donc on n'entre jamais dans le if.
    La chaîne vide (entre autres) est évaluée comme fausse donc on rentrerait en ce cas dans la condition.

    Citation Envoyé par MB_MathemaTeX
    De même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $status_code = copy($tmp_filename,$filename);
    if (!$status_code) { [...]   return false; }
    Ici, $status_code ne semble rien contenir et on n'entre pas non plus dans le if.
    La documentation de la fonction copy indique qu'un booléen est retourné, il est possible, si vous affichez directement ce résultat et s'il est faux, qu'il n'apparaisse pas.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 22
    Par défaut
    Citation Envoyé par julp Voir le message
    La chaîne vide (entre autres) est évaluée comme fausse donc on rentrerait en ce cas dans la condition.
    Une n'importe quelle chaine non vide sera considérer comme vraie ?

    Citation Envoyé par julp Voir le message
    La documentation de la fonction copy indique qu'un booléen est retourné, il est possible, si vous affichez directement ce résultat et s'il est faux, qu'il n'apparaisse pas.
    Ah oui, c'est possible.
    Par contre, la fonction copy plante et me renvoie tout de même un message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: copy(5fbbe25a64df5716fd7656401351a9b5.png) [function.copy]: failed to open stream: No such file or directory in filename.php on line 325

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par MB_MathemaTeX
    N'importe quelle chaine non vide sera considérer comme vraie ?
    Oui mis à part un autre cas : une chaîne vide comportant la valeur nulle (ie "0").

    Citation Envoyé par MB_MathemaTeX
    Par contre, la fonction copy plante et me renvoie tout de même un message d'erreur
    Et ? Etes-vous certains que vos fichier/répertoire existent ? Ajoutez au besoin des tests complémentaires (is_file/is_dir et is_writeable).

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 22
    Par défaut
    Citation Envoyé par julp Voir le message
    Oui mis à part un autre cas : une chaîne vide comportant la valeur nulle (ie "0").
    Merci pour la précision importante.

    Citation Envoyé par julp Voir le message
    Et ? Etes-vous certains que vos fichier/répertoire existent ? Ajoutez au besoin des tests complémentaires (is_file/is_dir et is_writeable).
    Non, justement. Apparemment le code semblait récupérer ce genre d'erreur directement avec $status_code. Enfin, je vais ajouter les tests nécessaires.

    Merci.

Discussions similaires

  1. [Système] Problème avec la fonction "exec()"
    Par jb084 dans le forum Langage
    Réponses: 2
    Dernier message: 07/08/2007, 11h21
  2. [Système] Pb avec la fonction exec
    Par MayOL69bg dans le forum Langage
    Réponses: 9
    Dernier message: 24/05/2007, 19h12
  3. [Système] problème avec la fonction exec
    Par SegmentationFault dans le forum Langage
    Réponses: 1
    Dernier message: 30/06/2006, 17h59
  4. [Système] Problème avec la fonction exec()
    Par ben_harper dans le forum Langage
    Réponses: 13
    Dernier message: 28/06/2006, 11h32

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