هنگامی که یک سایت جوملا را در لوکال ایجاد میکنیم و قالب جدید نصب میکنیم و تنظیمات لازم را انجام میدهیم و همه موارد بدرستی کار میکنند باید وقت آنست که سایت را به سرور منتقل کنیم. هنگامی که سایت را به سرور منتقل کردیم ناگهان به پیغام خطای Infinite loop detected in JError مواجه میشویم . برای رفع این خطا باید موارد زیر را تک تک بررسی و اجرا کنیم.
این خطا مربوط به تنظیمات نادرست فایل configuration.php است . این تنظیمات الزاما تنظیمات مربوط به Database و کاربر نیست .
بررسی فایل configuration.php
ابتدا باید فایل configuration.php را باز کنیم و متغیرهای زیر را بررسی کنیم . ممکن است یک یا چند مورد از آنها بدرستی set نشده باشند که باید موارد نادرست را تصحیح کنیم
public $dbtype = 'mysqli'; public $host = '[some host]'; public $user = '[some database user]'; public $password = '[some password]'; public $db = '[some database]'; public $dbprefix = '[someprefix_]'; public $log_path = '/logs'; public $tmp_path = '/tmp';
در مورد خط اول باید عرض کنم که اگر سرور تان mysqli را پشتیبانی نمیکرد باید آنرا برروی mysql تنظیم کنید.
ویرایش فایل error.php
اگر تمامی موارد بالا بدرستی تنظیم شده بود و مشکل پیغام خطا همچنان پا برجاست به آدرس
JoomlaRoot/libraries/joomla/error/error.php
بروید و فایل error.php باز نمایید و تابع throwError در خط ۱۹۱ ( ممکن است در نسخه جوملا شما این تابع در خط دیگری باشد بنابراین search کنید ) پیدا کنید .
public static function throwError(&$exception) { static $thrown = false; // If thrown is hit again, we've come back to JError in the middle of throwing another JError, so die! if ($thrown) { // خط پایین را از حال کامنت خارج کنید // echo debug_print_backtrace(); jexit(JText::_('JLIB_ERROR_INFINITE_LOOP')); }
و خطی که مشخص شده خط بالای ( jexit ) را از حالت کامنت خارج کنید یعنی علامت // در ابتدای آن خط حذف کنید. و سپس تگ pre را به قبل و بعد خطی که از حالت کامنت خارج کردید اضافه کنید. به صورت زیر:
print"<pre>"; echo debug_print_backtrace(); print"</pre>";
به این صورت جوملا جزئیات پیشتری از خطای موجود در سیستم را به شما ارائه میکند بعد از مشاهده این جزئیات شما میتوانید مورد نادرست را در فایل configuration.php مشاهده و آنرا بدرستی تنظیم کنید .
نکته : پس از رفع این خطا کد موجود در jexit را به حالت اولیه بازگردانید.