علت خطای ۵۰۰ در وردپرس و آموزش تعمیر و رفع آن (راهنمای کامل عیبیابی)
آخرین بروزرسانی در ۲۲ بهمن ۱۴۰۱
حتما برای شما به عنوان یک وبمستر تا به حال پیش آمده که سایتتان بالا نیاید و در عوض آن با چنین پیغامی مواجه شوید:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
این نشان میدهد که شما امروز روی شانس نیستید و یکی از معمولترین ارورها و خطاها در دنیای اینترنت و وب برای سایت شما رخ داده که اسمش خطای ۵۰۰ است. اما اگر جستجو برای رفع مشکل٬ شما را به این صفحه کشانده پس یعنی آن قدرها هم بدشانس نیستید٬ چرا که در این راهنما ما تمام علتهایی که ممکن است باعث این مشکل شوند را برایتان شرح داده و روش رفع آن را به شما میآموزیم. پس اسبها را زین کنید و با ما همراه شوید تا سایتتان را با هم تعمیر کنیم.
خطای ۵۰۰ چیست و چرا رخ میدهد؟
انواع و اقسام شکل های نمایش خطای ۵۰۰
بر اساس وب سرورهای مختلف٬ مرورگرهای متفاوت و سیستم عاملهای مختلف٬ یک خطای داخلی سرور ۵۰۰ میتواند خودش را به شکلهای مختلفی نمایش بدهد.. اما همهی آن ها یک معنی را منتقل میکنند. در اینجا ما لیستی از شکل های مختلف نمایش خطای ۵۰۰ را به شما نشان میدهیم:
“500 Internal Server Error”
“HTTP 500”
“Internal Server Error”
“HTTP 500 – Internal Server Error”
“500 Error”
“500 – Internal Server Error”
“500 Internal Server Error. Sorry something went wrong.”
“500. That’s an error. There was an error. Please try again later. That’s all we know.”
“The website cannot display the page – HTTP 500.”
یک صفحه خالی سفید
جالب اینجاست که برندهای معتبر و بزرگ ممکن است صفحهی خطای اختصاصی برای خودشان داشته باشند. حتی شرکت بزرگی مثل یوتیوب نیست ممکن است با این خطا مواجه شود. این خطا را در یوتیوب به این شکل میبینید:
خطای ۵۰۰ روی سئو تاثیر منفی میگذارد
وقتی با خطای ۵۰۰ مواجه میشوید حالتان گرفته میشود چون سایتتان از دسترس خارج شده و بازدیدکنندههایتان به دیوار میخورند و شاید حتی از سایتتان دلسرد شوند. شما مقداری ترافیک و بازدید (بر حسب زمان دان بودن سایتتان) از دست میدهید و همهی اینها به نوبه خود بسیار بد است. اما باید بدانید برخلاف خطای ۵۰۳ که برای حالت در حال تعمیر در وردپرس به کار میرود و به گوگل میگوید مه دقایقی بعد دوباره سری به سایت بزند٬ یک خطای ۵۰۰ میتواند تاثیر منفی بر روی سئو بگذارد اگر که زود تعمیر نشود. اگر به فرض مثال سایت شما به مدت ۱۰ دقیقه دان باشد٬ در این مدت خزشگر گوگل چندین بار در صفحه میخزد و برمیگردد و میتواند برگه را از روی کش دریافت کند. گوگل حتی ممکن است این شانس را پیدا نکند که قبل از بکاپ٬ سایت را مجددا بکاود. در این حالت مشکلی برای شما پیش نمیآید و خطری تهدیدتان نمیکند.
اما اگر سایت شما برای مدت طولانی مثلا بگویید بیش از ۶ ساعت٬ دان باشد آن وقت گوگل ممکن است خطای ۵۰۰ را به عنوان یک خطای سطح سایت ببیند. این میتواند روی رتبه شما تاثیرگذار باشد. برای آن که جلوی تکرار خطای ۵۰۰ را بگیرید باید علت آن را درک کرده و راهحل های ان را بدانید.
چگونه خطای ۵۰۰ را تعمیر کنیم؟
خب حالا وقتش رسیده که پس از دانستن مفهوم خطای ۵۰۰ بیاییم علتهای آن را درک کرده و طرق رفع مشکل را پیدا کنیم. ما در اینجا کارهایی که باید انجام بگیرد تا علت ایجاد مشکل دانسته شود و راخ حل آن نیز انجام شود را به شما میگوییم. دقت کنید مهم است که بدانیم علت خطا کجاست و هر کدام را چک کنیم و در صورتی که مطمئن شدیم مشکل از اینجاست آن گاه راه حل پیشنهادی را انجام دهیم. بنابراین در هنگام مواجهه با این مشکل:
۱- در ابتدا سعی کنید صفحه را رفرش (بارگذاری مجدد) کنید
بله به همین سادگی. مخصوصا اگر شما از یک هاست اشتراکی استفاده میکنید و شرکت میزبان شما٬ سایت شما را به همراه تعداد زیادی سایت دیگر بر روی یک سرور میزبانی میکند ممکن است در لحظاتی خاص٬ سایت شما با کمبود منابع برای پاسخگویی به تعدد درخواستها مواجه شود و در واقع اوردوز کند. در این هنگام مشکل به شما ربطی ندارد و از جانب سرور است و اگر چند دقیقه صبر کنید و مجددا سایت را بارگذاری کنید میبینید که مشکل رفع شده است.
بدون تردید کارمندان شرکت هاستینگ شما به طور مرتب٬ عملکرد سرورها را مانیتور و بررسی میکنند و پی به مشکلات برده و درصدد رفع آن برمیآیند. اما بد نیست در صورت به وجود آمدن و رفع شدن این مشل بر روی سایت٬ به شرکت هاستینگ اطلاع دهید که چنین اتفاقی افتاده است تا ان ها اقدامات لازم برای جلوگیری از تکرار آن را به عمل آورند.
کار دیگری که برای اطمینان از این موقعیت میتوانید انجام دهید آن است که نشانی سایتتان را کپی کرده و در سایت downforeveryoneorjustme.com در فیلد وسط صفحه پیست کنید و کلید اینتر را فشار دهید. این سایت به شما نشان میدهد که آیا این مشکل فقط برای شما (از طریق سیستم عامل و مرورگر شما) وجود دارد یا همه مخاطبان شما نیز با این مشکل مواجه میشوند و به اصطلاح سایت شما واقعا دان شده است. این ابزار در واقع کد حالت HTTP را چک میکند تا مطمئن شود مشکلی وجود نداشته باشد.
این امکان وجود دارد که این مشکل درست بعد از زمانی که شما یک افزونه یا قالب را بروزرسانی کردهاید اتفاق بیفتد. معمولا ان=ین مشکل بر روی هاستهایی اتفاق میافتد که درست پیکربندی و تنظیم نشدهاند. اتفاقی که میافتد ان است که آنها با تایماوتهای موقتی مواجه میشوند. این مشکل معمولا پس از چند دقیقه و با رفرش کردن صفحه رفع میشود.
۲- کش مرورگرتان را پاک کنید
پاک کردن کش مرورگر نیز معمولا راهکار مناسبی است که ممکن است مشکل را رفع کند بدون این که به مراحل بعدی و رفع اشکال عمیقتر نیازی باشد. برای این کار باید به تنظیمات مرورگر بروید و به دنبال گزینهای مثل Clear Browsing Data… بگردید و بر روی آن کلیک کنید و بر روی پنجرهای که نمایش داده میشود بر روی دکمهی Clear Data کلیک کنید. سپس چک کنید ببینید مشکل رفع شده یا خیر.
۳- لاگ خطا Error Logs سرورتان را چک کنید
خطاهای رخ داده بر روی سرور معمولا روی فایلی به نام errorlog ذخیره میشود و شما با چک کردن محتویات این فایل میتوانید خطاهایی که رخ داده را بیابید. اگر شرکت هاستینگ تان از مدیر هاست سی پنل استفاده میکند به راحتی میتوانید با جستجوی عبارت error به بخش Errors بروید و لاگ خطاها را چک کنید. توصیه ما همواره این است که از شرکتهای هاستینگ معتبر استفاده کنید مخصوصا وقتی میخواهید کمتر هزینه کرده و از سرورهای اشتراکی استفاده کنید.
اگر هاستتان ابزار ارور لاگ ندارد میتوانید به سادگی با افزودن این کدها به فایل wp-config در پوشه اصلی وردپرس سایتتان این امر را فعال کنید:
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
لاگ ها معمولا در پوشه wp-content ذخیره میشوند. در برخی مواقع هم پوشهای به نام logs وجود دارد
۴- فایل .htaccess را چک کنید
از علتهای معمول این خطا به خاطر فایل .htaccess است. این فایل یک فایل سیستمی در پوشه روت وردپرس است. برای این که چک کنید آیا مشکل از اینجاست باید فایل .htaccess را یافته و آن را تغییر نام دهید مثلا به .htaccess_old . برای یافتن این فایل باید به فایل منیجر هاستتان رفته و یا از کلاینتها و نرمافزارهای ftp مثل Filezilla و یا به توضیه ما از WinSCP در ویندوز و یا نرم افزار Transmit در مک استفاده کنید. سپس به پوشه Public_html بروید و فایل .htaccess را آن جا ببینید. ممکن است در بار اول این فایل را مشاهده نکنید. در این صورت باید در فایل منیجر cpanel روی دکمه تنظیمات settings در گوشه سمت راست کلیک کنید.
و در پنجره باز شده تیک گزینه Shoe hidden files را بزنید.
حالا دوباره صفحه را رفرش کنید تا فایل .htaccess نمایان شود. سپس این فایل را تغییر نام دهید. مثلا نام آن را به .htaccess0 تغییر دهید:
بعد از انجام این کار و تغییر نام فایل .htaccess دوباره سایت را لود کنید و ببینید مشکل حل شده یا خیر. اگر مشکل حل شده به خودتان تبریک بگویید که تبدیل به کارشناس وردپرس شدهاید. اما در هنگام شادی یادتان نرود حتما به بخش تنظیمات وردپرس >> پیوندهای یکتا بروید و آن را ذخیره کنید. این کار باعث میشود که فایل .htaccess مجددا تولید شود تا بازدیدکننده ها با خطای ۴۰۴ مواجه نشوند.
۵- محدودیت حافظه php یا همان php memory limit را افزایش دهید
خیلی وقتها مشکل به خاطر این است که PHP memory limit بر روی عدد کوچکی قرار گرفته است. مخصوصا در هاستهای اشتراکی (یعنی اغلب وبسایتها) که با کمبود منابع مواجهیم این اتفاق بیشتر میافتد. برای حل این مشکل باید به فایل php.ini مراجعه کرده (در سی پنل php را جستجو کنید و بر روی multi-php-ini کلیک کنید) و این کد را بیابید و مقدار آن را افزایش دهید:
memory_limit
معمولا میگویند این رقم را بر روی 64MB قرار دهید اما در هاستینگهای قدرتمند که کشش بیشتری داشته و سایتهای کمتری را بر روی یک سرور میزبانی میکنند میتوانید از رقمهای بالاتری هم استفاده کنید. مثلا ما سایتمان را بر روی 1024MB قرار دادهایم و خیلی راضی هستیم.
این کار را از طریق فایل wp-config وردپرس هم میتوانید انجام دهید. برای این کار باید کدهای زیر را به این فایل اضافه کنید:
define(‘WP_MEMORY_LIMIT’, ’64M’); ini_set(‘post_max_size’, ’64M’); ini_set(‘upload_max_filesize’, ’64M’);
همان طور که گفتیم این ارقام را حتی بالاتر میتوانید قرار دهید. اما اگر از توان هاستتان خبر ندارید میتوانید روی همین مقدار ۶۴ قرارش دهید. موارد دیگر هم مربوط به حداکثر اندازه ارسال و حداکثر اندازه فایل برای بارگذاری است که میتواند جلوی تایماوت در هنگام بارگذاری فایل و نصب قالب یا افزونه را گرفته تا خطایی رخ ندهد.
۶- تمام افزونهها را غیرفعال کنید
اگر اعمال بالا مشکل را حل نکرد٬ یک راه حل باحال دیگر آن است که تمام افزونههای فعال سایتتان را غیرفعال کنید. پس از انجام این کار دوباره سایت را تست کنید و اگر مشکل رفع شده بود بنابراین مشکل از طرف یک افزونه ایجاد شده است. برای غیرفعال کردن تمام افزونهها نیز چندین راه وجود دارد مثل اینکه از پنل ادمین وردپرس بروید و همه افزونهها را انتخاب کرده و گزینه غیرفعال کردن در اقدام دسته جمعی را انتخاب کرده و اوکی کنید. اما یک راه سادهتر نیز وجود دارد مخصوصا برای زمانی که شما حتی به پنل ادمین وردپرس دسترسی ندارید.
این راه از طریق هاست انجام میشود. به فایل منیجر یا ftp بروید و داخل پوشه wp-contents پوشه plugins را بیابید و این پوشه را تغییر نام دهید مثلا بگذارید plugins0. خب حالا بدون اینکه تمام افزونهها را غیرفعال کنید میتوانید سایتتان را چک کنید و اگر مشکل حل شده بود به پنل ادمین بروید و افزونه خاطی را بیابید. دقت داشته باشید تا زمانی که به صفحه افزونه ها در پنل مدیریت وردپرس نروید٬ افزونهها غیرفعال نمیشوند اما همین که به این صفحه مراجعه میکنید از ان جا که وردپرس این پوشه را پیدا نمیکند (چون نامش را تغییر دادهاید) تمام افزونهها را غیرفعال می کند.
خب حالا یکی یکی افزونهها را فعال کنید و هر بار سایت را تست کنید تا زمانی که با فعال کردن افزونه خاطی دوباره مشکل پدیدار شود و شما افزونه خاطی را بیابید.
۷- فایل های هسته وردپرس را مجددا بارگذاری کنید
اگر با راه حل های بالا مشکلتان حل نشد ممکن است به خاطر تغییر و اشکال در یکی از فایلهای هسته وردپرس اتفاق افتاده باشد. برای حل آن باید پوشه های wp-admin و wp-includes را جایگزین کنید.
همیشه به یاد داشته باشید در زمانی که میتوانید از سایتتان بکاپ بگیرید. البته پیشنهاد ما این است که وقتی سایتتان راه افتاد٬ حتما به کمک افزونه بکاپ بادی٬ پشتیبان گیری منظم و زمان بندی شده را تنظیم کنید و خوب است که یک روز در میان بکاپ کامل و هر روز بکاپ از دیتابیس بگیرید. درست است که شرکت هاستینگتان از سایت بکاپ منظم میگیرد اما بکاپهای کامل آنها هفتگی است و ممکن است در بدترین حالت یک هفته از محتویات بروزرسانی شدهی سایتتان را از دست بدهید.
خب برای بکاپ منظم٬ یک روز در میان بکاپ کامل بگیرید و آن را به حساب دراپ باکس و یا گوگل درایو خود متصل کنید (گوگل درایو حجمش بیشتر است) و تنظیم کنید که مثلا تنها ۳ یا ۷ فایل بکاپ را نگه دارد (بسته به حجم سایتتان). در این صورت مثلا تعداد بکاپ ها از ۳ بیشتر شد قدیمیترین بکاپ را حذف و با بکاپ فعلی جایگزین میکند. بنابراین وقتی بکاپهای یک روز دی میان میگیرید و ۳ بکاپ قبلی همیشه نگهداری میشود یعنی شما بکاپ ۶ روز قبل خود را دارید و از آن جا که هاستینگ شما بکاپ هفتگی میگیرد بنابراین مشکلی نیست.
حالا به سایت wordpress.org بروید و وردپرس نسخه آخر را دانلود کنید و از زیپ خارج کنید و پوشههای wp-contents , wo-includes را با همین پوشه ها در هاستتان جایگزین کنید و جاهایی که پیغام Overwrite میدهد تایید کنید تا فایلهای تمیز جایگزین فایلهای قبلی شود. حال ببینید که مشکل رفع میشود. ان شالا که همین طور باشد.
۸- پرمیشن ها را تغییر دهید
هیچکدام از راه حل های بالا مشکل را حل نکرد. نگران نباشید. باز هم راه حل داریم. بعضی وقتها پرمیشن های بعضی از پوشه های سایت ممکن است باعث بروز خطای ۵۰۰ شود. پس باید ببینیم پرمیشن permission چیست و چگونه میتوان از طریق آن مشکل را حل کرد.
پرمیشن چیست؟
پرمیشن یعنی این که شما اجازه دسترسی٬ خواندن و ویرایش یک فایل را به چه کسی (مدیر٬ کاربر و سایرین) بدهید یا ندهید. اگر به همه اجازهی همه کار بدهید پرمیشن روی عدد 777 قرار خواهد گرفت و اگر به هیچکس هیچ اجازهای ندهید (که کار اشتباه و نامحتملی است) روی عدد 000 قرار خواهد گرفت. بنابراین 7 به معنای اجازهی دسترسی و دیدن و ویرایش (اجرا) هست. 7 اول مربوط به کاربر (مدیرکل)٬ ۷ دوم مربوط به گروه (اعضا) و ۷ سوم مربوط به جهان (همه بازدیدکنندگان) است. بنابراین عدد 755 به معنای آن است که مدیر میتواند فایل را ببیند٬ بخواند و اجرا یا ویرایش کند اما سایرین (اعضا و بازدیدکنندگان) تنها می توانند آن را ببینند و بخوانند اما اجازهی دستکاری آن را نخواهند داشت.
قاعده برای تنظیم پرمیشن ها چیست؟
برای تنظیم پرمیشن ها این قواعد باید مراعات شود:
- تمام فایل ها باید بر روی 644 یا 640 قرار گیرد
- تمام پوشه ها باید بر روی 755 یا 750 قرار گیرد
- هیچ کدام از پوشه ها نباید بر روی 777 قرار گیرد حتی پوشه آپلودها
- فایل wp-config.php باید بر روی 440 یا 400 قرار گیرد برای تامین امنیت سایت٬ تا کسی از روی سرور نتواند آن را بخواند.
- فایل htaccess نیز باید بر روی 400 یا 444 قرار بگیرد
ممکن است انجام این تغییرات و تنظیمات مشکل شما را حل کند. پرمیشن ها را چک کنید و هر کدام از آن ها که غیر از این قاعده و روال بود را تغییر دهید.
۹- قالب خود را غیرفعال کنید
ممکن است اشکال در قالب شما باشد. برای رفع آن باید قالب را بر روی قالب پیشفرض قرار دهید (قالب پیشفرض وردپرس را فعال کنید) و سپس چک کنید که آیا مشکل حل شده یا خیر. البته وقتی به ادمین وردپرس هم دسترسی ندارید از طریق ftp و یا کنترل پنل هاست به فایل منیجر بروید و در مسیر wp-contents/themes پوشه قالب فعال سایت خود را پیدا کرده و آن را تغییر نام دهید. بدین ترتیب قالب فعال سایت شما غیرفعال شده و قالب پیشفرض به جای آن فعال میشود. حالا دوباره سایت را چک کنید که مشکل رفع شده یا خیر.
۱۰- با شرکت هاستینگ خود تماس بگیرید
خب اگر هیچکدام از موارد بالا مشکل را حل نکرد٬ مشکل از طرف سرور سایت شماست. بنابراین باید از خدمات میزبانی خود بخواهید مشکل را بررسی کرده تا ببینند مشکل سرور از کجاست.
به شما توصیه میکنیم از طریق ابزارهای مانیتورنیگ سایت خود را همواره تحت نظر بگیرید. چون ممکن است شما در سفر باشید و یا به سیستم دسترسی نداشته باشید و سایتتان دان شود و شما مشتریانتان را از دست بدهید بدون اینکه خبر داشته باشید. یا اینکه سایت برای شما به خاطر کش بالا بیاید اما دیگران نتوانند سایت شما را ببینند. بنابراین به سایت uptimerobot مراجعه کنید و یک اکانت رایگان ایجاد کرده و دامنه سایتهایتان را وارد کنید و ایمیلتان را به ان بدهید تا هر زمان که یکی از سایتهایتان دان شد از طریق ایمیل به شما اطلاعرسانی کند.
امیدواریم که به کمک این راهنما مشکل شما حل شده باشد. تجربیاتتان را با ما در میان بگذارید.