2013-04-02 87 views
0

我有我的鏌鋣埃沃網站拋出這個錯誤的問題:ModX:insert_metka函數在哪裏?

Fatal error: Cannot redeclare insert_metka() (previously declared in /home/mysite/public_html/manager/includes/document.parser.class.inc.php(794) : eval()'d code:2) in /home/mysite/public_html/manager/includes/document.parser.class.inc.php(794) : eval()'d code on line 12' 

我已經搜查,搜查,但找不到在哪裏insert_metka()聲明。我甚至下載了整個網站並且無濟於事地進行搜索。我也嘗試將版本更新到最新版本,也無濟於事。

任何人都可以告訴我在哪裏可以找到這個功能嗎?

回答

2

下載數據庫轉儲並在其中查找此行。看起來這是一個插件故障,請嘗試禁用插件,直到找到它。有關更多建議,請參閱ModX Evo: PHP error in document.parser.class.inc.php

+0

是的,你不會在文件搜索中找到該功能,因爲插件+片段存儲在數據庫中。儘量不要發表重複的問題;) – okyanet

+0

謝謝!那樣做了。對於任何正在查看的人來說,它都位於Quick ManagerManger代碼片段中。 – MeltingDog

0

正如您從錯誤代碼中看到的,該函數是在代碼片段中聲明的。這是因爲Modx有這種緩存片段來加速性能。他們將你的片段的靜態文件封裝爲一個函數。

如果同一個函數被調用兩次並且你聲明瞭一個函數,這可能會導致錯誤。我懷疑這是怎麼回事。

爲了解決這個問題,只是包裝你的整個功能function_exists像這樣:

if (!function_exists("insert_metka")) { 
    function insert_metka() { 
     // Stuff goes here 
    } 
} 

旁註:這是除了由VASIS給出了答案。你應該搜索你的片段,演員和插件。它應該位於這些文件的某個位置。這不是從Modx核心提供的功能。