ecshop Undefined variable: data in 的問題處理方法

經過一個上午的查詢資料,我發現了別人忽略的一個地方,在includes文件下有一個叫lib_base.php的文件,裏面存着這樣的兩個函數

函數一:

read_static_cache()
/**
 * 讀結果緩存文件
 *
 * @params  string  $cache_name
 *
 * @return  array   $data
 */
function read_static_cache($cache_name)
{
    if ((DEBUG_MODE & 2) == 2)
    {
        return false;
    }
    static $result = array();
    if (!emptyempty($result[$cache_name]))
    {
        return $result[$cache_name];
    }
    $cache_file_path = ROOT_PATH . ’/temp/static_caches/’ . $cache_name . ’.php’;
    if (file_exists($cache_file_path))
    {
        include_once($cache_file_path);
        $result[$cache_name] = $data;
        return $result[$cache_name];
    }
    else
    {
        return false;
    }
}


另一個函數

write_static_cache()
/**
 * 寫結果緩存文件
 *
 * @params  string  $cache_name
 * @params  string  $caches
 *
 * @return
 */
function write_static_cache($cache_name, $caches)
{
    if ((DEBUG_MODE & 2) == 2)
    {
        return false;
    }
    $cache_file_path = ROOT_PATH . ’/temp/static_caches/’ . $cache_name . ’.php’;
    $content = ”<?php\r\n”;
    $content .= ”\$data = ” . var_export($caches, true) . ”;\r\n”;
    $content .= ”?>”;
    file_put_contents($cache_file_path, $content, LOCK_EX);
}


這兩個函數就是控制讀出和寫入緩存的,在各個頁面中都有被用到。而從上面的錯誤信息分析來看,只有不讓它寫入到temp文件夾下就能解決問題,也就是緩存的屏蔽,將這兩個函數,在第一個 if  前面加上

  1. return false;

直接屏蔽掉功能,這樣改過之後,(測試之前應該刪除原有的除index.htm以 外的文件,然後通過反覆訪問進行測試緩存的寫入)我測試了一下,temp/static_caches/文件夾下不再寫入緩存文件了,只保留有 index.htm,也就是不會再出現剛開始的那種錯誤了,因爲寫入和讀出都被屏蔽了。最直接是頁面的錯誤消失了,網站恢復了正常,讓人感到欣慰

如果以上都解決不了,你不妨查看一下,是否你的空間滿了,很多人曾經遇到過這樣的問題!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章