Probleme PHP, interpreteur de commandes

Eléphanteau du PHP | 23 Messages

29 janv. 2007, 11:25

Bonjour,

Voila mon soucis, et je n'arrive pas à trouver une solution.

J'ai un script PHP qui fait appel a une fonction de window
$cmd2="freedisk /S $serveur /D $k: > $serveur.txt";
exec($cmd2);
$handle = fopen("$serveur.txt","r");
Or le fichier retourné est vide.
Par contre si je tappe cette commande dans la console ms-dos de windows elle me retourne un résultat.

Je ne sais pas pourquoi d'un coup php ne veux plus éxecuter ces commandes.

J'ai regardé et je ne suis pas en safe mode.

Merci.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

29 janv. 2007, 12:19

1/ Est-ce que ton serveur est bien sous windows ? (Je sais, c'est con mais c'est possible ;) )
2/ Est-ce que tu as essayé d'afficher la commande générée et de l'exécuter ou est-ce que tu as écris une commande standard que tu as exécuté ?
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éphanteau du PHP | 23 Messages

29 janv. 2007, 12:42

Mon serveur est sous Windows XP Pro (easyPHP 1.8) :S

La commande passé a l'interpreteur est un copier collé d'un echo de la commande générée par mon code.

Il faut croire que la commande marche qu'à moitié car elle crée bien un fichier pour chaque serveurs mais ce fichiers et vide.
Sauf pour un serveur ou cette commande marche.

La dernière fois que j'ai lancé ce script elle fonctionné parfaitement.

J'ai le même problème pour un autre script qui ne marche plus mais qui marché avant.

Pourtant personne n'a modifié les fichiers.

Eléphanteau du PHP | 23 Messages

29 janv. 2007, 13:12

Du nouveau !

J'ai regardé dans le log des erreur d'apache et il me dit accès refusé pour chaque freedisk que je fais.

Pourtant je suis connecté en tant qu'administrateur. Peut-être que PHP se donne des droits différents pour éxécuter les commandes non ?
Enfin je pense que ce serait logique car a partir d'un autre poste, et en utilisant la commande

Code : Tout sélectionner

freedisk /u administrateur /p mot_de_passe /s nom_serveur /d $partition:
cela fonctionne correctement.

Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

29 janv. 2007, 13:18

Effectivement, il me semble que le user est "Apache" lors de l'exécution d'une commande via un script PHP ;)

Il ne te reste plus qu'à modifier ta commande ;)
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éphanteau du PHP | 23 Messages

29 janv. 2007, 13:54

Hélas même si je passe en paramêtre les champ user et password cela ne marche pas.

J'ai essayer de copier le script qui fonctionne sur la machine distante, mais en vaint, cela ne marche toujours pas sur la machine connecté en administrateur.

Je m'aperçois que plusieurs fonctions de mon programme ne marche plus, (les uptimes par exemple). Pour les uptimes qui me dit depuis combien de temps le serveur est démarré pose une erreur et j'ai le droit a un jolie message
Calculates system uptime and availability a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrment encouru.

Alors que si je fait démarrer->éxécuter->cmd
et que la je tappe uptime /S nom_du_serveur ca marche.

Je ne pense pas que mon code soit en cause, mais plutôt un défaut de configuration ou une incompatibilité avec un autre programme.

Par contre je n'ai aucune piste pour commencer a cherché.

Voici les deux types d'erreurs que je trouve dans mon log des erreurs apache :

WARNING: Plusieurs connexions … un serveur ou … une ressource partag‚e par le mˆme utilisateur, en utilisant plus d'un nom utilisateur, ne sont pas autoris‚es. Supprimez toutes les connexions pr‚c‚dentes au serveur ou … la ressource partag‚e et recommencez.
ERROR: AccŠs refus‚.
WARNING: Plusieurs connexions … un serveur ou … une ressource partag‚e par le mˆme utilisateur, en utilisant plus d'un nom utilisateur, ne sont pas autoris‚es. Supprimez toutes les connexions pr‚c‚dentes au serveur ou … la ressource partag‚e et recommencez.
ERROR: AccŠs refus‚.
WARNING: Plusieurs connexions … un serveur ou … une ressource partag‚e par le mˆme utilisateur, en utilisant plus d'un nom utilisateur, ne sont pas autoris‚es. Supprimez toutes les connexions pr‚c‚dentes au serveur ou … la ressource partag‚e et recommencez.
ERROR: AccŠs refus‚.
ERREURÿ: AccŠs refus‚.
ERREURÿ: AccŠs refus‚.
ERREURÿ: AccŠs refus‚.


Merci pour votre aide.[/i]

Eléphanteau du PHP | 23 Messages

29 janv. 2007, 15:20

hallelujah !!!!!

J'ai trouvé le problème :D

Alors en faite j'avait cocher démarré easyPHP en tant que service, donc les programme s' éxécuter avec un droit bizarre. ds le gestionnaire des tâches on voyait que apache est démarrer par system.

Maintenant c'est l'administrateur qui l'utilise. Donc les fonction éxécutées au sein d'apache sont éxécuter en tant qu'administrateur.

En tout cas merci pour votre aide !