
آموزش پنهان کردن خطاهای php وردپرس
خطاهای PHP در وردپرس چیست؟ خطاهایی هستند که بهعلت وجود مشکلات در کدهای PHP که برای توسعه وبسایت با استفاده از وردپرس نوشته شدهاند، ایجاد میشوند. این خطاها ممکن است بهدلیل عدم تطابق نسخهی PHP با نسخهی وردپرس، پلاگینهای نادرست، قالبهای نامناسب یا اشکالات دیگری در کدهای PHP باشند. این خطاها ممکن است با روشهای […]
آموزش پنهان کردن خطاهای php وردپرس
خطاهای PHP در وردپرس چیست؟ خطاهایی هستند که بهعلت وجود مشکلات در کدهای PHP که برای توسعه وبسایت با استفاده از وردپرس نوشته شدهاند، ایجاد میشوند. این خطاها ممکن است بهدلیل عدم تطابق نسخهی PHP با نسخهی وردپرس، پلاگینهای نادرست، قالبهای نامناسب یا اشکالات دیگری در کدهای PHP باشند. این خطاها ممکن است با روشهای مختلفی مانند نمایش پیام خطا در صفحه وب، ثبت خطا در فایل خطای لاگ (error log)، یا استفاده از افزونههای مدیریت خطا رفع شوند.
نمایش خطاهای PHP در محیط وردپرس به توسعه دهندگان کمک میکند تا از هشدارها و مشکلات مربوط به کدهایی که نوشتهاند، آگاه شوند و آنها را رفع کنند. با این حال، باید توجه داشت که کاربران عادی هدف این پیامها نیستند و وقتی با آنها مواجه میشوند، تجربهی نامطلوبی برایشان ایجاد میشود.
این قابلیت البته مفید است، اما بهتر است رویت هشدارها را غیرفعال کنید تا سوءتفاهم و بیاعتمادی مشتریان به شما نسبت به وبسایت یا برنامهی شما کاهش یابد. در این مقاله از مجله پارس هاست چگونگی رفع نمایش ارورهای PHP وردپرس و تفاوت آن را با خاموش کردن دیباگ توضیح میدهیم. همچنین کدهای مورد نیاز در فایل wp-config.php، روش ثبت خطاها در debug.log و نحوه فعال کردن دوباره نمایش خطاها برای عیبیابی را بررسی خواهیم کرد.
پنهان کردن خطاهای php در وردپرس یا خاموش کردن!
در وردپرس، پنهان کردن خطاهای PHP در وردپرس با خاموش کردن آنها یکسان نیست. وقتی دیباگ وردپرس را خاموش میکنید، قابلیت عیبیابی وردپرس غیرفعال میشود. با مخفی کردن خطاها، دیباگ میتواند فعال بماند و فقط نمایش پیامهای فنی برای بازدیدکنندگان متوقف شود. با غیرفعالکردن خطاهای php در وردپرس میتوانید نمایش خطا را غیرفعال و ثبت آنها در لاگ را فعال کنید. اما اگر در حال حاضر نیازی به بررسی خطاها ندارید، غیرفعال کردن WP_DEBUG انتخاب سادهتری است.

کدهای پنهان کردن و خاموش کردن خطاهای PHP وردپرس
کدهای اصلی مربوط به دیباگ وردپرس معمولا در فایل wp-config.php قرار میگیرند. بهتر است تنظیمات مورد نظر را قبل از خط زیر قرار دهید:
/* That’s all, stop editing! Happy publishing. */
۱. خاموش کردن دیباگ وردپرس
اگر سایت شما بدون مشکل کار میکند و در حال حاضر نیازی به بررسی خطاهای PHP ندارید، میتوانید حالت دیباگ وردپرس را غیرفعال کنید:
define( ‘WP_DEBUG’, false );
با این تنظیم، قابلیت دیباگ وردپرس غیرفعال میشود و پیامهای مربوط به دیباگ در حالت معمول در صفحات سایت نمایش داده نمیشوند.
البته WP_DEBUG کنترل همه خطاهای PHP را در اختیار ندارد. تنظیمات PHP و وبسرور نیز میتوانند روی نحوه نمایش یا ثبت خطاها تاثیر بگذارند. بنابراین غیرفعال کردن دیباگ وردپرس به این معنی نیست که خطاهای بحرانی PHP دیگر نمیتوانند روی سایت اثر بگذارند.
مثال: یک خطای Fatal همچنان میتواند باعث اختلال یا از دسترس خارج شدن بخشی از سایت شود.
۲. مخفی کردن خطاها و ثبت آنها در لاگ
اگر سایت فعال است اما میخواهید خطاهای PHP برای بازدیدکنندگان نمایش داده نشوند و در عین حال بتوانید آنها را بررسی کنید، بهتر است دیباگ را فعال و نمایش خطا را غیرفعال کنید:
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_DISPLAY’, false );
define( ‘WP_DEBUG_LOG’, true );
در این حالت، وردپرس خطاها و پیامهای قابل ثبت را در فایل لاگ ذخیره میکند، اما آنها را در صفحات سایت نمایش نمیدهد.
فایل لاگ پیشفرض وردپرس معمولا در مسیر زیر قرار میگیرد:
/wp-content/debug.log
این روش برای عیبیابی سایت وردپرسی در محیط واقعی کاربردی است. چون کاربران پیامهای فنی را نمیبینند و مدیر یا توسعهدهنده میتواند فایل لاگ را برای پیدا کردن علت مشکل بررسی کند.
۳. اگر خطاها همچنان نمایش داده شدند
اگر با وجود تنظیمات بالا بعضی خطاهای PHP همچنان در سایت نمایش داده میشوند، ممکن است تنظیمات PHP یا وب سرور باعث نمایش آنها شده باشد.
یکی از تنظیمات مهم PHP در این زمینه display_errors است. در صورت دسترسی به تنظیمات PHP میتوانید وضعیت آن را بررسی کنید:
ini_set( ‘display_errors’, ‘0’ );
با این حال، بهتر است این دستور را راهحل اصلی در نظر نگیرید. تنظیمات display_errors ممکن است توسط پیکربندی PHP، هاست یا وبسرور کنترل شود و در بعضی محیطها تغییر آن از داخل کد امکانپذیر نباشد.
اگر به تنظیمات PHP دسترسی دارید، بهتر است مقدار display_errors را در همان سطح بررسی کنید. در هاستهای اشتراکی نیز ممکن است برای تغییر این تنظیم به پنل هاست وردپرس یا پشتیبانی سرویس نیاز داشته باشید.
۴. آیا میتوانیم Warning و Notice را جداگانه مخفی کنیم؟
بله، با error_reporting() میتوان مشخص کرد PHP چه نوع خطاهایی را گزارش کند.
مثال:
error_reporting( E_ALL & ~E_WARNING & ~E_NOTICE );
این کد Warning و Notice را از سطح گزارشدهی حذف میکند، اما با مخفی کردن خطاها از خروجی تفاوت دارد. در اینجا نوع پیامهایی که PHP گزارش میکند تغییر کرده است.
بنابراین اگر هدف شما فقط عدم نمایش خطاهای PHP در وردپرس به بازدیدکنندگان است، بهتر است بهجای تغییر سطح گزارشدهی PHP، از تنظیمات WP_DEBUG_DISPLAY و در صورت نیاز WP_DEBUG_LOG استفاده کنید.
تفاوت خاموش کردن و پنهان کردن خطاهای php وردپرس
| خاموش کردن دیباگ | مخفی کردن خطا | ویژگی |
| false | true | WP_DEBUG |
| غیرفعال در حالت عادی | غیرفعال | نمایش خطا به بازدیدکننده |
| معمولا غیرفعال | فعال | ثبت خطا در لاگ |
| محدودتر | بیشتر | امکان بررسی خطاها |
| سایت بدون نیاز به دیباگ | عیبیابی سایت بدون نمایش خطا به کاربران | کاربرد اصلی |
کدام روش برای سایت وردپرسی بهتر است؟
- سایت فعال و بدون مشکل: اگر فعلا نیازی به بررسی خطاها ندارید، WP_DEBUG را روی false قرار دهید.
define( ‘WP_DEBUG’, false );
- در حال عیبیابی سایت: اگر میخواهید خطاها را بررسی کنید اما کاربران آنها را نبینند، WP_DEBUG را فعال، WP_DEBUG_DISPLAY را غیرفعال و WP_DEBUG_LOG را فعال کنید.
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_DISPLAY’, false );
define( ‘WP_DEBUG_LOG’, true );
در این حالت، خطاهای قابل ثبت در لاگ ذخیره میشوند و میتوانید بعدا علت مشکل را بررسی کنید.
آیا مخفی کردن خطا به معنی رفع آن است؟
خیر. مخفی کردن خطا فقط نمایش آن را متوقف میکند و مشکل PHP را برطرف نمیکند. اگر یک خطای PHP باعث اختلال در سایت شده باشد، باید علت آن را از طریق فایلهای لاگ و ابزارهای عیبیابی پیدا و برطرف کنید. پنهان کردن پیام خطا بیشتر برای جلوگیری از نمایش اطلاعات فنی به بازدیدکنندگان کاربرد دارد.
نکات امنیتی هنگام پنهان کردن خطاهای PHP
نمایش خطاهای PHP ممکن است اطلاعات فنی سایت را در اختیار افراد غیرمجاز قرار دهد و بخشی از امنیت سرور را تحت تاثیر قرار دهد؛ برای مثال مسیر فایلها، نام فایلهای PHP یا بخشی از اطلاعات محیط سرور. به همین دلیل، در سایتهای عملیاتی بهتر است خطاهای فنی در صفحات عمومی نمایش داده نشوند.
همچنین اگر WP_DEBUG_LOG را فعال کردهاید، فقط مخفی کردن خطا از صفحه کافی نیست. باید دسترسی به فایل debug.log را نیز بررسی کنید تا افراد غیرمجاز نتوانند محتوای آن را مستقیما مشاهده کنند.
نکته: قبل از ویرایش فایل wp-config.php بهتر است از فایل و سایت خود نسخه پشتیبان تهیه کنید. یک خطای نحوی در این فایل میتواند باعث از دسترس خارج شدن سایت شود.
روشن کردن نمایش خطاهای PHP
به عنوان یک توسعه دهنده و یا کدنویس قطعا شرایطی پیش میآید که قصد داشته باشید وضعیت سایت را برای ارزیابی صحت عملکرد قالب و افزونه ها بررسی کنید. همینطور ممکن است سایت شما در یک سرور محلی – Local Server فعال باشد که در هر دو صورت نمایش خطاهای PHP ضروری بنظر می رسد.
اگر قصد دارید خطاهای PHP را در سایت خود نمایش دهید باید مجددا فایل wp-config.php را ویرایش و کدهای قبلی را حذف کنید.
define(‘WP_DEBUG’, true);
define(‘WP_DEBUG_DISPLAY’, true);
پس از وارد کردن کدهای جدید، وردپرس خطاهای PHP را برای شما به نمایش در خواهد آورد.
نمایش خطاهای php، مشکلات فنی یا مخربی را برای شما و وبسایتتان ایجاد نمیکنند، زیرا اعلانها صرفا برای اطلاع رسانی رویدادی هستند که باید از آن مطلع باشید. هرچند چنین وضعیتی مانع از فعالیت مدیر وبسایت نخواهد شد ولی به این دلیل که مشتریان و بازدیدکنندگان نیز میتوانند را مشاهده کنند، بهتر است با خاموش کردن نمایش خطاهای فوق جلوی تجربه کاربری ناراحتکنندهای که پیش میآید را بگیرید.
در صورتی که توسعه دهنده افزونه و قالب وردپرس هستید و یا وبسایت شما بر روی لوکال سرور درحال بازبینی است، میتوانید از نمایش هشدارها و خطاهای فوق برای عیبیابی و Debug کدها مطمئن شوید.
سوالات متداول
۱. خطاهای PHP در وردپرس چیست؟
خطاهای PHP در وردپرس معمولا به دلیل مشکلات موجود در کد PHP، ناسازگاری نسخه PHP با وردپرس، قالب یا افزونههای ناسازگار و خطاهای برنامهنویسی ایجاد میشوند.
۲. چگونه خطاهای PHP را در وردپرس مخفی کنیم؟
با قرار دادن WP_DEBUG روی true و WP_DEBUG_DISPLAY روی false میتوانید دیباگ را فعال نگه دارید، اما نمایش خطاها برای بازدیدکنندگان را غیرفعال کنید. برای ثبت خطاها نیز میتوانید WP_DEBUG_LOG را روی true قرار دهید.
۰