رفع خطای Notice و Strict Standards و Deprecated در جوملا

در این مقاله با سه نوع خطای php از جمله Notice و Strict Standards و Deprecated که در جوملا ممکن است با آن روبرو شوید به صورت کامل آشنا خواهید شد و روش حل این موارد را می آموزید.

روزانه تعداد زیادی از سوالات کاربران مربوط به خطاهای موجود درسایت های جوملایی است که در این آموزش سعی می کنیم آموزش های لازم در این زمینه را به شما ارايه کنیم.
خطاها در جوملا انواع متفاوتی دارد مهم ترین خطاها در جوملا از نوع Fatal Error و Warning بوده که این خطاها جدی ترین خطاها در php هستند و باعث مختل شدن عملکرد تمام سایت یا بعضی از قسمت های سایت می شوند. این خطاها علت های متفاوتی دارند که باید از دیدگاه برنامه نویسی بررسی و برطرف شوند و نیاز به توجه جدی دارند. اما در این مقاله بنا نیست در مورد این دو خطای مهم بیش از این صحبت کنیم.
خطاها و پیام های دیگری در جوملا وجود دارند که از اهمیت پایین تری برخوردار هستند و یاد میگیریم هر کدام از آن ها چه کاربردی دارند و چگونه نمایش آنها را غیر فعال کنیم.

۱-Notice: این نوع پیام ممکن است ۱ عدد در صفحه و یا تمام صفحه شما را پر کرده باشد. این خطا اهمیت چندانی ندارد و به شما نکاتی را که در برنامه نویسی اشتباه انجام شده باشد و یا دارای مشکلی جزئی می باشد ولی هیچ آسیبی به سایت شما نمی زند را گوش زد می کند مانند نمونه زیر:

PHP Notice:  Undefined offset: 1 in .../file.php on line 0
Notice: Use of undefined constant DS - assumed 'DS' in /home/###/public_html/.../file.php on line 13

۲-Strict یا Strict Standards: این پیام هم به شما نکات درست برنامه نویسی را گوشزد می کنند به قول برنامه نویس ها مانند پیرمردی نصیحتتان می کنند و راهنمایی می کند که در برنامه نویسی لقمه را دور سرت نپیچ. مانند نمونه زیر:

Strict Standards: Only variables should be assigned by reference in /public_html/.../file.php on line 278
Strict Standards: Declaration of JCacheControllerView::get() should be compatible with that of JCacheController::get() in /file.php on line 137

۳-Deprecated: این کد از نسخه ۵ به بعد به php اضافه شد این پیام نیز شما را نصیحت می کند اما کمی متفاوت و به شما می گوید که اگر از این کد استفاده کنید در صورت آپدیت php ممکن است به درستی کار نکند. در واقع کد های منسوخ شده را به شما اعلام می کند مانند:

Deprecated:  iconv_set_encoding(): Use of iconv.internal_encoding is deprecated in  Your_Domain\libraries\joomla\string\string.php on line 27

البته توجه کنید اگر دقیقا خط کد بالا را در هنگاه نصب جوملا مشکل داشتید درخواستی در این زمینه در بخش پشتیبانی ارسال نمایید.

این سه نوع خطای یا بهتره بگیم پیامی که با آنها آشنا شدیم همگی پیام های بی خطری هستند و برای سایت شما مشکلی ایجاد نمی کنند و ادامه یاد می گیریم به چه صورت نمایش این خطاها را در سایتتان غیر فعال کنید.
این موارد معمولا در زمانی نمایش داده می شود که گزینه نمایش خطای php بر روی نمایش تمام پیام ها باشد که معمولا این موارد فقط برای برنامه نویس ها کاربر دارد و به صورت استاندارد تنظیمات php سرورها باید بر روی فقط نمایش خطاهای مهم باشد. در ادامه به شما می آموزیم چگونه باید در صورتی که گزارش خطا روی نمایش همه پیام ها بود آن را اصلاح کنید:

۱- راه حل اول: معمول ترین راه برای برطرف کردن و عدم نمایش این پیام ها، غیر فعال کردن این مورد از طریق بخش تنظیمات کلی جوملا است.
در مدیریت جوملا مسیر زیر را طی کنید:
منوی سایت یا منوی اول/ تنظیمات کلی جوملا/ زبانه سرور
گزینه ای با نام گزارش خطا وجود دارد که معمولا بر روی گزینه سیستم پیش فرض قرار دارد و به این معنا است که تنظیمات نمایش پیام های php را از سرور شما می خواند. شما با قرار دادن این گزینه بر روی ساده می توانید تنظیم کنید که فقط خطاهای اساسی و مشکل ساز را به شما نمایش دهد و یا با قرار دادن این گزینه بر روی هیچ می توانید تنظیم کنید که هیچ خطا و پیامی را نمایش ندهد که در این صورت اگر خطای مهمی به وجود بیاید به جای نمایش خطا صفحه سایت شما سفید خواهد شد.
این روش در ۹۰٪ مواقع مشکل را رفع می کند اما ممکن است بنا به هر دلیلی مشکل برطرف نشود که ما راه حل های دیگری را به شما آموزش می دهیم.

۲- راه حل دوم: خاموش کردن نمایش خطا از طریق فایل php.ini
اگر این مشکل را در سرور لوکال خود دارید شما به راحتی به فایل تنظیمات اصلی php در سرور لوکال خود دسترسی دارید و به عنوان مثال در سرور های لوکال xamp این فایل در مسیر زیر قرار دارد xampp\php\php.ini و در سرور های مختلف مثل wamp جایش متفاوت است.
شما با پیدا کردن این فایل آن را ویرایش نموده و دنبال واژه display_errors بگردید و این گزینه را به صورت زیر تنظیم نمایید:

display_errors = Off
سپس فایل را ذخیره نموده و اقدام به ری استارت و بارگزاری مجدد سرور لوکال خود نمایید.
اگر مشکل شما در سرور و هاست های آنلاین است و شما مدیر اصلی سرور نیستید قاعدتا به فایل php.ini اصلی سرور دسترسی ندارید اما بعضا به شما این امکان داده می شود که بتوانید فایل php.ini خود را داشته باشید برای این کار کافیست در پوشه روت هاست خود که معمولا public_html است فایلی با نام php.ini بسازید و کد بالا را در آن قرار دهید. البته توجه داشته باشید امکان کار کردن این مورد پایین است به دلیل این که اکثر هاست ها این امکان را به کاربران خود نمی دهند. و حتی ممکن است خطا دریافت کنید در این صورت فایل ساخته شده را حذف کنید.

 

۳- راه حل سوم: خاموش کردن نمایش خطا از طریق فایل htaccess.
در پوشه اصلی جوملا فایلی با نام htaccess.txt وجود دارد که امکانات زیادی را به کاربران می دهد. شما با تغییر نام این فایل از htaccess.txt به htaccess. (اول نقطه و سپس htaccess) ابتدا آن را فعال نمایید سپس کد زیر را به انتهای آن اضافه کنید:

php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /home/path/public_html/domain/PHP_errors.log
php_value error_reporting -1
php_value log_errors_max_len 0
سپس ذخیره کنید. البته توجه داشته باشید که باز هم ممکن است مدیر سرور شما دسترسی این کار را هم به شما نداده باشد و با ذخیره این فایل سایت شما خطای internal server error یا خطای 500 دریافت کند. که در این صورت لازم است کد هایی که اضافه کردید را حذف نمایید و فایل را مجددا ذخیره کنید.

 

۴- راه حل چهارم: خاموش کردن نمایش خطای php از طریق فایل php :
در این روش شما وارد پوشه اصلی جوملا شده و فایل index.php را باز می کنید در ابتدای فایل پس از تگ <?php یک اینتر بزنید و به خط بعد بروید سپس کد زیر را اضافه نمایید:

ini_set('display_errors','Off');

 

سپس ذخیره کنید. اگر مشکل برطرف نشد و یا خطایی دریافت کردید تغییرات را به حالت اول برگردانید.

۵- راه حل پنجم: تماس با مدیر هاست
شما می توانید با مدیر هاستتان تماس حاصل نموده و بخواهید نمایش پیام ها و خطاهای php را برای اکانت شما غیر فعال کند. شاید بپرسید این راه حل ساده را چرا به عنوان اولین راه حل به شما پیشنهاد نکردم و علت آن این است که متاسفانه پشتیبانی هاست ها بعضا پاسخگویی ضعیفی دارند و یا مسئولیت این موارد را قبول نمی کنند و یا بعضا محدودیتی در انجام تغییرات دارند.

این مقاله برای راحتی کار شما با جوملا طراحی و نوشته شده و مشکلات خودتان را از طریق بخش نظرات در رابطه با خطاهای جوملا با ما در میان بگذارید.
با تشکر
حمیدرضا ذوالفقار