我想在我网站的管理员页面上发布一个过时的日志文件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
?>
答案 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)
需要解决的两个问题:
$filedir$filename
这不是一个有效的php变量。
你有撇号攻击你的代码
$filedir$filename');
取出撇号。
解决这两个问题,如果您的问题得到解决,请告诉我。
答案 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>";