我如何拖尾日期的日志文件?

时间:2016-04-27 00:03:17

标签: php

我想在我网站的管理员页面上发布一个过时的日志文件LIVE,但我遇到了问题。只有当我在$ filename变量中手动输入日期时,我才能使它工作。

以下是我在这里找到的代码,但想知道如何获取过时的文件(例如:2016_04_26.ilog)。

<?php
$filename = 'date('Y_m_d').ilog';
$filedir = '/gamelogs/';
$output = shell_exec('exec tail -n250 ' . $filedir$filename');
echo str_replace(PHP_EOL, '<br />', $output);
?>

我的代码出了什么问题?提前谢谢!


所以在休息一下并回到代码后,我意识到我的日期格式错误,还有其他几个部分。这就是我的作品!

<?php
$filename = date('y_m_d').'.ilog'; // misplaced quotes
$filedir = '/home/a3invmgr/destinedtobe/a3ilogs/'; // relative path instead of full path
$output = shell_exec("tail -n100  $filedir$filename"); //exec removed
echo str_replace(PHP_EOL, '<br />', $output); // line OK
?>

3 个答案:

答案 0 :(得分:1)

你有几个错误,试试这个:

<?php
$filename = date('Y_m_d').'.ilog'; // misplaced quotes
$filedir = '/full/path/to/gamelogs/'; // relative path instead of full path
$output = shell_exec("tail -n250  {$filedir}{$filename}"); //exec removed
echo str_replace(PHP_EOL, '<br />', $output); // line OK
?>

答案 1 :(得分:0)

需要解决的两个问题:

  1. $filedir$filename
  2. 这不是一个有效的php变量。

    1. 你有撇号攻击你的代码

      $filedir$filename');

    2. 取出撇号。

      解决这两个问题,如果您的问题得到解决,请告诉我。

答案 2 :(得分:0)

我认为您最初的$filename可能有误 - 我看到的引号太多了。假设文件名看起来像2016_04_27.ilog,那么你应该使用:

$filename = date('Y_m_d'). '.ilog';

另外,要进一步排除故障,您可以尝试将执行命令放入变量并输出:

$stringToExecute = ('tail -n250 ' . $filedir$filename);
echo $stringToExecute;
$output = shell_exec(stringToExecute);

最后,如果您回复日志文件,您可能只想跳过str_replace并将结果包装在<pre>中。这将告诉浏览器保持换行完整。

echo "<pre>$output</pre>";