【问题标题】:PHP Warning: filemtime() [<a href='function.filemtime'>function.filemtime</a>]PHP 警告:filemtime() [<a href='function.filemtime'>function.filemtime</a>]
【发布时间】:2011-12-30 19:34:27
【问题描述】:

我注意到其中一个 PHP 脚本的安装目录有非常大的 error_log 文件,几乎有 1GB 大小,大部分错误是由第 478 行和第 479 行的编码生成的。error_log 文件中的错误示例如下:

PHP Warning:  filemtime() [<a href='function.filemtime'>function.filemtime</a>]: stat failed for /home/khan/public_html/folder/ZBall.jar in /home/khan/public_html/folder/index.php on line 478
PHP Warning:  filemtime() [<a href='function.filemtime'>function.filemtime</a>]: stat failed for /home/khan/public_html/folder/ZBall.jar in /home/khan/public_html/folder/index.php on line 479

我有以下编码,第 477 到 484 行

foreach ($mp3s as $gftkey => $gftrow) {
   $ftimes[$gftkey] = array(filemtime($thecurrentdir.$gftrow),$gftrow);
   $ftimes2[$gftkey] = filemtime($thecurrentdir.$gftrow);
 }
 array_multisort($ftimes2,SORT_DESC,$ftimes);
 foreach ($ftimes as $readd) {
   $newmp3s[] = $readd[1];
 }

请帮帮我。

谢谢.. :)

【问题讨论】:

    标签: php filemtime


    【解决方案1】:

    stat failed 错误表明文件/home/khan/public_html/games/ZBall.jar 不存在,或者由于权限错误而无法读取。确保文件存在于 PHP 正在查找的位置,因为这似乎是问题的最相似原因。

    由于它来自数组$mp3s,请确保该数组包含存在的文件名,如果不存在则修改它。

    【讨论】:

    • 文件确实存在并且文件也被下载了,前端没有问题..问题是生成了error_log文件,并且随着文件的大量下载,文件大小变得更大和更大.. 已应用@Gabriel Sosa 编辑的代码.. 希望它会工作.. :-)
    • 应用@Gabriel Sosa 后会产生以下错误...
      PHP Warning: array_multisort() [&lt;a href='function.array-multisort'&gt;function.array-multisort&lt;/a&gt;]: Argument #1 is expected to be an array or a sort flag in /home/khan/public_html/folder/index.php on line 483 PHP Warning: Invalid argument supplied for foreach() in /home/khan/public_html/folder/index.php on line 484
      代码来自第 483-486 行
      array_multisort($ftimes2,SORT_DESC,$ftimes); foreach ($ftimes as $readd) { $newmp3s[] = $readd[1]; }
      任何一种帮助将不胜感激..谢谢..
    • @HaroonKhattak 你的问题不是你的错误日志越来越多,而是你的代码产生了错误。有些东西阻止 Apache/PHP 统计该文件。
    • @HaroonKhattak 这个新错误看起来是因为数组$ftimes2 没有创建。如果 file_exists() 返回 false,就像未找到该文件时一样(根据 stat 错误),您的数组将永远不会构建,并且在传递给 array_multisort() 时会出错
    • 好吧,我在论坛上添加了绝对路径,除非您指定绝对路径而不是相对路径,否则某些系统上的 filemtime 不起作用..让我们看看..foreach ($mp3s as $gftkey =&gt; $gftrow) { if (file_exists($thecurrentdir.$gftrow)) { $ftimes[$gftkey] = array(filemtime('/home/khan/public_html/folder/' . $thecurrentdir.$gftrow),$gftrow); $ftimes2[$gftkey] = array(filemtime('/home/khan/public_html/folder/' . $thecurrentdir.$gftrow),$gftrow); } } array_multisort($ftimes2,SORT_DESC,$ftimes); foreach ($ftimes as $readd) { $newmp3s[] = $readd[1]; }跨度>
    【解决方案2】:

    在对文件进行操作之前先询问文件。检查我的编辑:

    <?php
    foreach ($mp3s as $gftkey => $gftrow) {
       if (file_exists($thecurrentdir.$gftrow)) {
         $ftimes[$gftkey] = array(filemtime($thecurrentdir.$gftrow),$gftrow);
         $ftimes2[$gftkey] = filemtime($thecurrentdir.$gftrow);
       }
     }
     array_multisort($ftimes2,SORT_DESC,$ftimes);
     foreach ($ftimes as $readd) {
       $newmp3s[] = $readd[1];
     }
    

    【讨论】:

    • 我已经添加了您编辑的代码,网站正在运行.. 到目前为止,该文件夹中没有创建 error_log 文件.. 如果生成任何错误,将通知您.. 谢谢.. :-)
    • 现在产生了这个错误...PHP Warning: array_multisort() [&lt;a href='function.array-multisort'&gt;function.array-multisort&lt;/a&gt;]: Argument #1 is expected to be an array or a sort flag in /home/khan/public_html/folder/index.php on line 483 PHP Warning: Invalid argument supplied for foreach() in /home/khan/public_html/folder/index.php on line 484第483-486行的代码array_multisort($ftimes2,SORT_DESC,$ftimes); foreach ($ftimes as $readd) { $newmp3s[] = $readd[1]; }
    • 如果 foreach 抛出了那个,看起来你的文件都不存在,所以最后一个 foreach 试图迭代一个不存在的数组。检查文件的路径,如果您愿意,请接受答案:)
    【解决方案3】:

    PHP.net 网站上有一个函数可以消除 Windows 上关于 filemtime 的错误

    function GetCorrectMTime($filePath) { 
    
    $time = filemtime($filePath); 
    
    $isDST = (date('I', $time) == 1); 
    $systemDST = (date('I') == 1); 
    
    $adjustment = 0; 
    
    if($isDST == false && $systemDST == true) 
        $adjustment = 3600; 
    
    else if($isDST == true && $systemDST == false) 
        $adjustment = -3600; 
    
    else 
        $adjustment = 0; 
    
    return ($time + $adjustment); 
    }
    

    来源:http://php.net/manual/tr/function.filemtime.php#100692

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-07
      • 2019-04-23
      • 1970-01-01
      • 2017-02-14
      • 1970-01-01
      • 2015-07-27
      相关资源
      最近更新 更多