lucky82
Messages postés89Date d'inscriptionsamedi 30 octobre 2004StatutMembreDernière intervention16 juin 2008
-
6 mai 2005 à 17:50
willowman
Messages postés143Date d'inscriptionvendredi 5 juillet 2002StatutMembreDernière intervention18 mars 2006
-
8 mai 2005 à 07:38
Bonjour
j'ai un petit prblème et j'espere que vous m'aidiez,voila un programmme en php:
"
<?
touch("cmdawk");
if (!$cmdawk=fopen("cmdawk","w")){
echo "ouverture du fichier impossible";
}
"
le probleme c'est que toutes les etapes marchent à la merveille sauf la commande: echo exec('awk -f cmdawk access.log > file');
n.b:
le fichier access.log contient des lignes de type:
123.100.0.9 - - [22/Mar/2005:16:17:00 +0100] "GET / HTTP/1.1" 200 1552
le fichier file s'est crée mais il est vide
lucky82
Messages postés89Date d'inscriptionsamedi 30 octobre 2004StatutMembreDernière intervention16 juin 2008 7 mai 2005 à 00:53
peut etre je me suis mal exprimée,
bon,le fichier access.log est constituer de plusieurs lignes et chaque ligne est constituée de plusieurs champs voici un extrait:
de ce fichier là je n'est besoin que de l'adresse ip et de la date donc des champs 1 et 4 ( mais le champs 4 et constitué de la date plus l'heure et moi je n'est besoin que de la date donc j'ai pris depuis la position 2 du 4eme champs 11caractere ce qui me donnera la date toute seuls)
je voulias faire ceci en php ,et le code c'est celui que j'ai deja présenté mais le probleme c'est que la commande :
echo exec('awk -f cmdawk access.log > file');
ne fonctionne pas ,cela veux dire que le fichier "file " est vide.
merci pour votre patience.
ce Safe mode dont vous m'avez parlé je ne le connait pas ; prière de me l'expliquer
MERCI
willowman
Messages postés143Date d'inscriptionvendredi 5 juillet 2002StatutMembreDernière intervention18 mars 20061 7 mai 2005 à 01:09
Salut a toi lucky82
Je pars du principe que le safe mode n'est pas activé !
Quand tu dis que la ligne exec(...) ne marche pas, as-tu un message d'erreur ??
As-tu testé l'execution d'une autre commande ?? (autre que awk !)
A priori, si tu obtiens un fichier 'file' vide, cela signifie que la
redirection ">" dans ton 'exec' est bien passée ! Après il faut
examiner pourquoi est ce que celui ci est vide !?
As-tu testé ton script awk directement dans un terminal ? (avec le meme
appel que celui du 'exec(...)' ?? Obtiens-tu ce que tu désires sur la
ligne de commande ? (apparement tu desires récuperer l'ip et la date
issue de ton access.log d'apache)
Est ce que tu as le meme resultat avec la commande system(...) ??
As-tu essayé le chemin en dur du awk ? (/usr/bin/awk) Et surtout le
chemin en dur de ton fichier access.log (dépend de ta distrib !!
/var/log/http/access.log au lieu de access.log)
Idem pour ton fichier cmdawk !
Bref, si tu pouvais nous en dire plus sur ce que tu dis "ne marche pas", ce serait cool !!
lucky82
Messages postés89Date d'inscriptionsamedi 30 octobre 2004StatutMembreDernière intervention16 juin 2008 7 mai 2005 à 01:38
Salut et merci
ooups je crois que j'ai comis une grosse bétise en oubliant de signaler que je suis sous linux ..
n.b:
je n'obtiens pas de message d'erreur en executant exec()
j'ai essayé avec system et ca donne la meme chose
Vous n’avez pas trouvé la réponse que vous recherchez ?
willowman
Messages postés143Date d'inscriptionvendredi 5 juillet 2002StatutMembreDernière intervention18 mars 20061 7 mai 2005 à 02:03
Ok autant pour moi !!
Alors ou as-tu eu la commande awk ?? (est-ce gawk ?)
As-tu tester en mettant le chemin complet de l'executable ?
Sous windows, lorsque tu rediriges ta sortie standard vers un fichier,
il est bon de toujours rediriger celle d'erreur ( awk -truc- >
monfichier 2>&1) lors de l'appel !
Donc si j'etais toi, je m'orienterais plus vers une rigueur dans
l'appel de mes executables, mes fichiers filtre et log (pour awk) et le
fichier en sortie ! Ensuite je testerais la redirection !!