Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Salut tout le monde,
j'ai besoin de chercher une chaine de caractère dans un fichier ,pour cela je mets le code suivant dans mon controlleur:
$date=$this->_getParam('date');
$result=shell_exec('grep "$date" info.log');
Cependant ,j'obtiens comme résultat tout le fichier comme s'il était une seule chaine de caractère .
Par contre ,lorsque je mets $result=shell_exec('grep "Jun 19 05:22:58" info.log');j'obtients la ligne exacte!!
Merci à l'avance pour vos réponses.
Hors ligne
Et si tu vire les quote autour de $date ça donne quoi?
Hors ligne
Pour t'aider, il suffit d'un echo :
echo 'grep "$date" info.log'; // affiche : grep "$date" info.log
Une variable PHP ne peut pas être interprétée dans une chaîne de caractères définies par des simples quotes. Cela ne fonctionne que pour des doubles quotes ou une concaténation.
$result = shell_exec("grep '$date' info.log"); // ou bien $result = shell_exec('grep "' . $date . '" info.log');
Dernière modification par Intiilapa (08-08-2010 08:30:54)
Hors ligne
pas glop d'utiliser shell_exec
A+JYT
Hors ligne
Merci beacoup Intiilapa, ça marche maintenant
Merci à tout le monde
Hors ligne
la même chose indépendamment se la machine (pas de shell)
if (preg_match_all ('/(^.*'.$date.'.*)$/', file_get_contents('info.log'), $results)) { print_r($results); }
le contenu de l'expression te permet de capturer exactement la partie de la ligne que tu veux
http://fr.php.net/manual/fr/reference.p … syntax.php
http://www.php.net/manual/fr/function.p … ch-all.php
A+JYT
Hors ligne
Salut,
J'ai une autre question concernant toujours shell_exec:
est ce qu'on peut rediriger les sorties des commandes vers des fichiers textes?
car j'ai essayé le code suivant mais j'obtiens rien dans le fichier:
shell_exec('df > sortie.txt').
Merci à l'avance pour vos réponses.
Hors ligne
shell_exec renvoie ce qui est affiché, donc tu devrais écrire:
$sortie_txt = shell_exec('df');
Hors ligne
oui ,mais moi je veux que la sortie de 'df' soit écrite dans le fichier sortie.txt.et meme si je fais
$sortie_txt = shell_exec('df > sortie.txt'); ça marche pas!!
Hors ligne
Si $sortie_txt contient bien la sortie de df (ce qui devrait être le cas, mais je n'ai pas testé), alors il suffit d'écrire le contenu dans un fichier avec un commande du genre:
file_put_contents ( 'sortie.txt' , $sortie_txt);
Hors ligne
Je l'ai testé ,j'obtiens l'erreur :
Warning: file_put_contents(sortie.txt): failed to open stream: Permission denied in /var/www/MyZendwebapp1/application/controllers/ServeurController.php on line 25
Je suis entrain de chercher la cause de cette erreur,si qq a une idée ??
Hors ligne
Il faut choisir un répertoire dans lequel php a le droit d'écrire. /tmp devrait fonctionner.
ex: file_put_contents ( '/tmp/sortie.txt' , $sortie_txt);
Hors ligne
à part le controleur il faut mettre quoi d'autre dans le view ?
Hors ligne