警告:filemtime():统计在第 49 行失败
Warning: filemtime(): stat failed in line 49
我正在尝试修复这部分代码,因为我遇到了这样的错误:
Warning: filemtime(): stat failed for /var/www/vhosts/example.tk/httpdocs/manager/css/general.css in /var/www/vhosts/example.tk/httpdocs/js-and-css.inc.php on line 49
function addStyleCssHtml($arr_css){
$css_files=implode('|', $arr_css);
$file_hash=sha1($css_files);
$dest_path=$_SERVER['DOCUMENT_ROOT'].'/css/static-'.$file_hash.'.css';
$recreate=!file_exists($dest_path);
if (!$recreate) {
$last_updated=filemtime($dest_path);
foreach ($arr_css as $fl){
$temp_path=(substr($fl, 0, 1)=='/')?$_SERVER['DOCUMENT_ROOT'] . $fl:realpath($fl);
if (!file_exists($temp_path)) $temp_path=$_SERVER['DOCUMENT_ROOT'].'/'.$fl;
$time = filemtime($temp_path);
if ($time > $last_updated) {
$recreate=true;
break;
}
第 49 行是:$time = filemtime($temp_path);
我认为这与路径有关。
要解决您遇到的具体问题,您需要这样做:
if (!$recreate) {
$last_updated=filemtime($dest_path);
foreach ($arr_css as $fl){
$temp_path=(substr($fl, 0, 1)=='/')?$_SERVER['DOCUMENT_ROOT'] . $fl:realpath($fl);
if (!file_exists($temp_path)) $temp_path=$_SERVER['DOCUMENT_ROOT'].'/'.$fl;
if (file_exists($temp_path)) {
$time = filemtime($temp_path);
if ($time > $last_updated) {
$recreate=true;
break;
}
}
if(file_exists($tempfile))
块将防止 filemtime()
在不存在的文件上被调用。至于你在上面评论中关于如何在 merchant/css 目录而不是 manager/css 中获取文件的问题,我不知道答案 - 你提供的代码没有提供足够的细节文件列表是如何生成的(通过 $arr_css 变量传入),因此需要更多详细信息来弄清楚为什么传入的文件不存在。
我正在尝试修复这部分代码,因为我遇到了这样的错误:
Warning: filemtime(): stat failed for /var/www/vhosts/example.tk/httpdocs/manager/css/general.css in /var/www/vhosts/example.tk/httpdocs/js-and-css.inc.php on line 49
function addStyleCssHtml($arr_css){
$css_files=implode('|', $arr_css);
$file_hash=sha1($css_files);
$dest_path=$_SERVER['DOCUMENT_ROOT'].'/css/static-'.$file_hash.'.css';
$recreate=!file_exists($dest_path);
if (!$recreate) {
$last_updated=filemtime($dest_path);
foreach ($arr_css as $fl){
$temp_path=(substr($fl, 0, 1)=='/')?$_SERVER['DOCUMENT_ROOT'] . $fl:realpath($fl);
if (!file_exists($temp_path)) $temp_path=$_SERVER['DOCUMENT_ROOT'].'/'.$fl;
$time = filemtime($temp_path);
if ($time > $last_updated) {
$recreate=true;
break;
}
第 49 行是:$time = filemtime($temp_path);
我认为这与路径有关。
要解决您遇到的具体问题,您需要这样做:
if (!$recreate) {
$last_updated=filemtime($dest_path);
foreach ($arr_css as $fl){
$temp_path=(substr($fl, 0, 1)=='/')?$_SERVER['DOCUMENT_ROOT'] . $fl:realpath($fl);
if (!file_exists($temp_path)) $temp_path=$_SERVER['DOCUMENT_ROOT'].'/'.$fl;
if (file_exists($temp_path)) {
$time = filemtime($temp_path);
if ($time > $last_updated) {
$recreate=true;
break;
}
}
if(file_exists($tempfile))
块将防止 filemtime()
在不存在的文件上被调用。至于你在上面评论中关于如何在 merchant/css 目录而不是 manager/css 中获取文件的问题,我不知道答案 - 你提供的代码没有提供足够的细节文件列表是如何生成的(通过 $arr_css 变量传入),因此需要更多详细信息来弄清楚为什么传入的文件不存在。