Création
d'entreprise
Posez votre question Signaler

[PHP] exec() [Résolu]

jsaispas 119Messages postés 19 janvier 2008Date d'inscription - Dernière réponse le 12 août 2009 à 14:55
Bonjour,
je rencontre quelque problème avec la fonction exec();
J'essaye d'extraire le contenu d'un archive zip avec 7z. En local (comme dab) tout marche toujours super bien puis quand je veux passer sur le serveur dédié, ça fait rien, ça retourne pas d'erreur...
j'ai simplifié une page pour tester, j'ai fais un dossier (ou l'utilisateur IIS a full contrôle) dans lequel se trouve :
- 7z.exe
- fichier.zip (contenu un fichier .txt)
- page.php
dans laquelle je fais :
<?php
exec('7z e fichier.zip');
?>
plus simple c'est pas possible et pourtant ça marche pas.
Cependant le truc bien bizarre que j'ai eu, c'est sur ma page plus complexe j'ai réussi une fois à extraire l'archive et depuis ça marche plus alors que j'avais pas touché au code....
Lire la suite 

[PHP] exec() »

Suggestions
7 réponses
Réponse
+0
moins plus
Dans les propriété IIS du serveur virtuel il faut s'assurer que les autorisations sont accordées pour "les scripts et executables".
Coté php.ini il faut également s'assurer que le moteur n'est pas en mode SAFE
safe_mode = Off

Et bien sûr vérifier éventuellement que la même ligne de commande marche bien quand elle est lancée dans le ROOT directory.

Vérifier également que l'utisateur IIs a bien les droit d'accès aux executables (ou l'utilisateur de la session windows si il y a autentification intégrée)

(mais par la suite attention aux pb de sécurité !)
Ajouter un commentaire
Réponse
+0
moins plus
ba justement pas logique qu'elle ce soit lancé une fois... Ensuite je fais aussi des exec de pdftotxt et antiword sans aucun soucis sur le serveur. Donc c'est assez bizarre
Ajouter un commentaire
Réponse
+0
moins plus
Les executions sont sensées se faire avec quel utilsateur (utilisateur didié IIS ?)
Qu'est ce que donne l'execution de la page en ligne de commande avec une session de cet utilisateur (si c'est possible) ?

Eventuellement qu'est ce que donne la même instruction système avec des backitcks
par exemple :
<?php
echo `7z e fichier.zip`;
?>
Ajouter un commentaire
Réponse
+0
moins plus
en fait j'ai deja testé avec ' ou " et ` ne marche pas je viens de tester, j'ai aussi fait avec des ",' et tout autour du nom de fichier mais je veux la syntaxe que j'utilise est bonne déjà vu qu'elle marche en local...

j'ai ça en local :
exec("7z e $destination$fichier_zip -o$dossier_zip");
temp/fichier.zip vers temp_zip

le même code qui marche en local et qui fait rien sur le serveur c'est bizarre, souvent c'est un problème de droit mais la je vois pas pourquoi puisque d'autre exe tourne....

Ensuite j'ai aussi testé si 7z avait des dépendances mais apparemment pas parce qu'avec le cmd et mon 7z.exe dans un autre dossier tout seul ça marche niquel.

si qqn connait un autre extracteur qui marche bien avec exec() je veux bien...
Ajouter un commentaire
Réponse
+0
moins plus
Vous n'avez pas un petit executable qui produit du texte sur la sortie standard ?
genre setver.exe pour voir si même ça ça ne marche pas ?
Ajouter un commentaire
Réponse
+0
moins plus
Sinon il y effectivement la solution de passer par des modules
http://fr2.php.net/zip
mais est ce compatible avec 7zip ?
A tester.
Ajouter un commentaire
Réponse
+0
moins plus
je vais prendre la solution php je crois, y a que ça de vrai, la command exec je la déteste, une fois sur 2 elle marche pas bien, je vais essayer de me trouver un exemple pour extraire, surtout que je récup qu'un seul fichier et je supprime le reste.
Ajouter un commentaire
Ce document intitulé « [PHP] exec() » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?