آموزش رفع خطای ۵۰۰ Internal Server Error در هاست

خطای Internal Server Error 500 به دلایل بسیار متنوعی ایجاد شود ولی بیشترین و رایج ترین دلایل بروز این خطا می تواند از اعمال سطح دسترسی یا Permission نادرست بر روی فایل ها و دایرکتوری ها، Ownership نادرست در هاست، کد های نادرست در فایل php.ini یا فایل .htaccess ، درخواست های نامعتبر از سمت اسکریپت سایت و … باشد. این خطا با توجه به نام آن بسیاری از کاربران را به این اشتباه می اندازد که مشکلی در سرور وجود دارد ولی در واقع سرور مشکلی نداشته و با اعمال تغییرات در تنظیمات پیکربندی سایت معمولاً قابل رفع می باشد. جزئیات کاملی از خطاهای سایت در فایل Error Logs همیشه ذخیره می شود که در زمان مشاهده ی خطای ۵۰۰ می توانید با مراجعه به این فایل اطلاعاتی در مورد عامل ایجاد این خطا دریافت کنید. این فایل در قسمت File Manager در هاست شما وجود دارد که لیستی از خطاهای سایت را همراه با تاریخ و جزئیات ارائه می دهد.

نمونه ای از خطای ۵۰۰ را می توانید در ذیل مشاهده نمایید:

Internal Server Error
 
The server encountered an internal error or misconfiguration and was unable to complete your request.
 
Please contact the server administrator, webmaster@example.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.
 
More information about this error may be available in the server error log.
 
Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request

در ادامه ی آموزش انواع عوامل بروز خطای Internal Server Error 500 را همراه با نحوه ی رفع آن ها توضیح خواهیم داد:

  • Bad Permission, Writable by Group

خطایی که به واسطه ی سطح دسترسی پوشه ها بیش از حد مجاز رخ می دهد. در فایل Error Logs می توانید این خطا را بدین صورت مشاهده کنید:

[Sun Jun 05 12:03:22 2012] [error] [client 66.249.72.82] SoftException in Application.cpp:601: Directory "/home/exampleuser/public_html" is writeable by group

در این مثال، سطح دسترسی پوشه غیر مجاز تعریف شده که برای رفع این مشکل باید سطح دسترسی پوشه را از ۷۷۷ به ۷۵۵ تغییر دهید. سطح دسترسی دایرکتوری ها و پوشه ها ۷۵۵ می باشد ، اسکریپت های اجرایی شامل پوشه ی cgi-bin نیز دارای سطح دسترسی ۷۵۵ می باشند. تصاویر، فایل های چندرسانه ای و فایل های متنی مثل HTML نیز دارای سطح دسترسی ۶۴۴ می باشند.

  • Files – ۶۴۴
  • CGI Scripts – ۷۵۵
  • Directories – ۷۵۵

شما می توانید سطح دسترسی ها را از طریق File manager واقع در دسته بندی Files در Cpanel یا سرویس گیرنده ی FTP و یا از طریق دستورات chmod در SSH/Bash ویرایش کنید.

Bad .htaccess, Invalid code, command, or syntax

ممکن است کاربران در فایل .htaccess خطوطی را اضافه کنند که در اثر عدم دانش کافی و بی دقتی حاوی کلمات نادرست یا متضاد با تنظیمات سرور باشند. در این حالت خطای ۵۰۰ رخ خواهد داد. بهترین روش برای رفع این مشکل ، تبدیل خطوط مشکل دارد در فایل .htaccess به توضیحات یا Comment می باشد که کافی است در ابتدای خطوط کاراکتر # را درج کنید و فایل را ذخیره نمایید. برای مثال اگر محتوای فایل .htaccess شما به صورت زیر باشد:

DirectoryIndex default.html
 AddType application/x-httpd-php5 php

برای اینکه خط دوم را کامنت کنید می بایست به این صورت عمل کنید:

DirectoryIndex default.html
 <strong>#</strong>AddType application/x-httpd-php5 php

خطوطی که با php_flag شروع می شوند معمولا دچار خطا می شوند و می بایست آن ها را کامنت کنید.

Other common .htaccess errors

مشکل FollowSymlinks :

در این حالت خطایی مشابه ذیل خواهید داشت:

[Sun Jun 05 12:11:38 2011] [alert] [client 66.249.72.82] /home1/examplec/public_html/.htaccess: /home1/examplec/public_html/.htaccess:3: <IfModule>ExampleRule/Module> was not closed.

باز هم به سادگی می توانید این خطا را رفع کنید و یا آن را حذف نمایید. در این مورد دستور </IfModule> را به درستی پایان دهید :

 

<IfModule>ExampleRule</IfModule>

این موارد تعداد کمی از خطاهایی می باشد که در اثر دستورات اشتباه در فایل .htaccess بروز می دهند ولی به صورت کلی پیغام های خطا به اندازه ی کافی در تشخیص خطا شما را راهنمایی می کنند و می توانید با دقت در خطاها به راحتی آن ها را رفع نمایید.

Improperly configured php.ini

خطاهایی که در فایل php.ini می تواند رخ دهد به صورت زیر می باشند:

مشکل ForceType :

زمانیکه از فایل ها با پسوند یا بدون پسوندی متفاوت از پسوند های معمول استفاده می کنید می توانید از ForceType در فایل .htaccess استفاده کنید و نحوه ی استفاده از آن در سرور را تعیین کنید. (برای تمامی فایل های موجود در پوشه ی مربوطه و سرور های بدون phpsuexec)

برای مثال ، زمانیکه شما فایلی با نام item دارید ( مانند Nucleus برای استفاده از FancyURL) و می خواهید در سرور بعنوان فایل php تعریف شود ، می توانید از کد زیر در فایل .htaccess استفاده کنید:

ForceType application/x-httpd-php

البته در سرور هایی که دارای phpsuexec می باشند با کد فوق خطای Internal Server Error دریافت خواهید ، که این مشکل به راحتی با استفاده از SetHandler بجای ForceType در فایل .htaccess رفع خواهد شد:

SetHandler application/x-httpd-php

مشکل php_value :

در سرور های بدون phpsuexec می توان از php_value در فایل .htaccess برای تغییر تنظیمات php (در واقع بازنویسی تنظیمات از php.ini) استفاده نمود. در سرور های دارای phpsuexec استفاده از این دستور خطای Internal Server Error را ایجاد می کند. برای رفع این خطا شما می توانید از فایل php.ini که در همان پوشه ی ای که فایل .htaccess قرار دارد موجود است. در فایل php.ini می توانید تمامی تنظیمات مربوط به php را تغییر دهید. برای مثال اگر شما می خواهید short_open_tag را برابر با off قرار دهید، شما باید از short_open_tag? = off در فایل .htaccess استفاده کنید. با استفاده از فایل php.ini نتیجه به این صورت می شود:

[PHP]
 short_open_tag = Off

یکی از اصلی ترین دلایل رخداد خطای ۵۰۰ Internal Server Error به دلیل اعمال کد های اشتباه در فایل .htaccess هاست می باشد.

صفحات خطا و چگونگی تغییر انها (ERROR PAGES)

تا به حال همه ی ما یکی از ورژن های صفحات وب هنگامی که امکان Load سایت وجود ندارد را دیده ایم.کد های HTTP که وضعیت خطا را در صفحه ی مورد نظر را نشان میدهند (برای مثال ارور 404، 500 و …) میتوانند به راحتی باعث از دست رفتن بازدید سایت شما و مهمتر از ان منفی شدن SEO وب سایت و در نتیجه کاهش در امد شوند.این ارور ها همیشه وجود دارند و اجتناب از ان ها غیر ممکن به نظر میرسد .پس بهترین کار Edit کردن این صفحات است تا به هنگام بروز مشکل صفحه ی دلخواه ما را نمایش دهند تا شاید برای بازدیدکننده کمی خوشایندتر به نظر رسد !

404-error

پر بازدیدترین اروری که در صفحات وب دیده میشود معمولا ارور 404 است.اما ارور های دیگری نیز هستند که عضوی از همین خانواده محسوب میشوند و احتمالا تا به حال با ان ها برخورد داشته اید از جمله :

  • Wrong Page: این ارور از خانواده 404 error page میباشد و به کاربر یا بازدید کننده اخطار میدهد که صفحه ی مورد نظر وجود خارجی ندارد(و یا ادرس ان تغییر پیدا کرده است)
  • Bad Request: این ارور از خانواده ی ارور های 400 میباشد که در هنگامی که درخواست شما نامعتبر باشد مشاهده میگردد (400 error page)
  • Authorization Required: این ارور به ارور 401 معروف است و هنگامی نمایش داده میشود که درخواست شما از نظر دستوری درست باشد (صفحه مورد نظر وجود داشته باشد) اما اطلاعات و پارامترهای وارد شده (برای مثال یوزر و پسورد) صحیح و معتبر نباشند.
  • Forbidden: این ارور یک ارور 403 میباشد و مانند ارور 401 هنگامی که درخواست شما از لحاظ دستوری صحیح باشد نمایش داده میشود،با این تفاوت که بنا بر محدودیت ها و permission هایی که ادمین سرور بر روی ان فایل ایجاد کرده است شما اجازه دسترسی و مشاهده ان صفحه را نخواهید داشت .به همین دلیل ارور Forbidden برای شما نمایش داده خواهد شد.
  • Internal Server Error: این ارور بر خلاف 4 ارور پیشین که همگی از خانواده ی 404 بودند از خانواده ی ارور 500 میباشد.این ارور هنگامی که در سرور مشکل غیرمنتظره ای پدید اید نمایش داده میشود. برای مثال وجود تداخل در کد های سایت شما میتواند باعث نمایش ان گردد.

ویرایش ERROR PAGE ها از طریق Cpanel 

ابتدا وارد کنترل پنل هاست خود (Cpanel) شوید، سپس از تب Advanced بر روی گزینه Error Pages کلیک کنید.

cpanel-error-pages

در صفحه ی بعدی دامنه ای که قصد تغییر ERROR PAGE های ان را دارید انتخاب نمایید و ارور مدنظر خود را گزینش نمایید.(با کلیک بر روی گزینه Show All HTTP Error Status Codes میتوانید ارور های بیشتری را برای ویرایش مشاهده نمایید).

cpanel-custom-error-pages

پس از انتخاب ارور مدنظر ، سی پنل برای شما صفحه ای را نمایش خواهد داد که در ان اجازه ی ویرایش کد های HTML به کدهای مورد علاقه کاربر داده شده است.

cpanel-404-error-page

پس از تغییر کدهای HTML ، بر روی گزینه Save کلیک نمایید تا تغییرات ذخیره گردند.