文字列定数の区切り記号として一重引用符を使用しているため、egrep
コマンドが機能しません: 'egreep -w'
<==> 2012-09-01|974'
<==> /home/myquery_test/log/push.log'
<==
文字列内で二重引用符を使用するか、文字列区切り記号として使用するか、引用符をエスケープします。
shell_exec('egrep -w \'2012-09-01|974\' /home/myquery_test/log/push.log');
shell_exec('egrep -w "2012-09-01|974" /home/myquery_test/log/push.log');
shell_exec("egrep -w '2012-09-01|974' /home/myquery_test/log/push.log");
また、テスト時にこの問題を明らかにする原因となる警告やエラーが発生しないようにするには、ini を に設定しE_STRICT|E_ALL
、警告を無視するのではなく修正します。[からかいながら: それが終わったら、いくつかの回答を受け入れることを検討したいかもしれません]私がこの投稿をタイプしている間に、あなたは多くのことを受け入れたようです :)
コマンドで変数を使用する:
$output = shell_exec("tail -f | egrep '$number.*$date' /var/www/myquery_test/log/push.log");
$output = shell_exec('tail -f | egrep "'.$number.'.*'.$date.'" /var/www/myquery_test/log/push.log');
$output = shell_exec("tail -f | egrep \"$number.*$date\" /var/www/myquery_test/log/push.log");