رفع خطای 500 internal server error روی سایت
gameover.blo.ir
رفع اشکال توسط : گیم اور
نکته: چون خودم تجربه کردم پاسخ میدم
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at webmaster@gamedevelop.ir to inform them of the time this error occurred, and the actions you performed just before this 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.
حل:
برای خطای بالا باید به پوشه ی public_html مجوزهای 775 بدید(اون 5 واسطه Read و Execute برای world هست یعنی افرادی که در سراسر جهان سایت ما رو باز می کنن اجازه دسترسی و اجرای سایت و همینطور مجوز خوندن رو داشته باشن)
خطای Internal Server Error 500 به دلایل بسیار متنوعی ایجاد شود ولی بیشترین و رایج ترین دلایل بروز این خطا می تواند از اعمال سطح دسترسی یا Permission نادرست بر روی فایل ها و دایرکتوری ها، Ownership نادرست در هاست، کد های نادرست در فایل php.ini یا فایل .htaccess ، درخواست های نامعتبر از سمت اسکریپت سایت و … باشد. این خطا با توجه به نام آن بسیاری از کاربران را به این اشتباه می اندازد که مشکلی در سرور وجود دارد ولی در واقع سرور مشکلی نداشته و با اعمال تغییرات در تنظیمات پیکربندی سایت معمولاً قابل رفع می باشد. جزئیات کاملی از خطاهای سایت در فایل Error Logs همیشه ذخیره می شود که در زمان مشاهده ی خطای 500 می توانید با مراجعه به این فایل اطلاعاتی در مورد عامل ایجاد این خطا دریافت کنید. این فایل در قسمت File Manager در هاست شما وجود دارد که لیستی از خطاهای سایت را همراه با تاریخ و جزئیات ارائه می دهد، جهت انجام این کار می توانید از آموزش نحوه مشاهده آخرین خطا های سایت از طریق فایل error log استفاده کنید.
نمونه ای از خطای 500 را می توانید در ذیل مشاهده نمایید:
در ادامه ی آموزش انواع عوامل بروز خطای Internal Server Error 500 را همراه با نحوه ی رفع آن ها توضیح خواهیم داد:
- Bad Permission, Writable by Group
خطایی که به واسطه ی سطح دسترسی پوشه ها بیش از حد مجاز رخ می دهد. در فایل Error Logs می توانید این خطا را بدین صورت مشاهده کنید:
در این مثال، سطح دسترسی پوشه غیر مجاز تعریف شده که برای رفع این مشکل باید سطح دسترسی پوشه را از 777 به 755 تغییر دهید. سطح دسترسی دایرکتوری ها و پوشه ها 755 می باشد ، اسکریپت های اجرایی شامل پوشه ی cgi-bin نیز دارای سطح دسترسی 755 می باشند. تصاویر، فایل های چندرسانه ای و فایل های متنی مثل HTML نیز دارای سطح دسترسی 644 می باشند.
- Files – 644
- CGI Scripts – 755
- Directories – 755
شما می توانید سطح دسترسی ها را از طریق File manager واقع در دسته بندی Files در Cpanel یا سرویس گیرنده ی FTP و یا از طریق دستورات chmod در SSH/Bash ویرایش کنید.
ممکن است کاربران در فایل .htaccess خطوطی را اضافه کنند که در اثر عدم دانش کافی و بی دقتی حاوی کلمات نادرست یا متضاد با تنظیمات سرور باشند. در این حالت خطای 500 رخ خواهد داد. بهترین روش برای رفع این مشکل ، تبدیل خطوط مشکل دارد در فایل .htaccess به توضیحات یا Comment می باشد که کافی است در ابتدای خطوط کاراکتر # را درج کنید و فایل را ذخیره نمایید. برای مثال اگر محتوای فایل .htaccess شما به صورت زیر باشد:
برای اینکه خط دوم را کامنت کنید می بایست به این صورت عمل کنید:
خطوطی که با php_flag شروع می شوند معمولا دچار خطا می شوند و می بایست آن ها را کامنت کنید.
مشکل FollowSymlinks :
در این حالت خطایی مشابه ذیل خواهید داشت:
این خطا به سادگی قابل رفع می باشد. کافی است در فایل مورد نظر ، دستور مجاز «SymlinksIfOwnerMatches» را به جای «FollowSymlinks» استفاده کنید یا خط مربوطه را حذف نمایید.
مشکل Syntax Not Closed
در این حالت خطایی مشابه ذیل خواهید داشت:
باز هم به سادگی می توانید این خطا را رفع کنید و یا آن را حذف نمایید. در این مورد دستور </IfModule> را به درستی پایان دهید :
این موارد تعداد کمی از خطاهایی می باشد که در اثر دستورات اشتباه در فایل .htaccess بروز می دهند ولی به صورت کلی پیغام های خطا به اندازه ی کافی در تشخیص خطا شما را راهنمایی می کنند و می توانید با دقت در خطاها به راحتی آن ها را رفع نمایید.
خطاهایی که در فایل php.ini می تواند رخ دهد به صورت زیر می باشند:
مشکل ForceType :
زمانیکه از فایل ها با پسوند یا بدون پسوندی متفاوت از پسوند های معمول استفاده می کنید می توانید از ForceType در فایل .htaccess استفاده کنید و نحوه ی استفاده از آن در سرور را تعیین کنید. (برای تمامی فایل های موجود در پوشه ی مربوطه و سرور های بدون phpsuexec)
برای مثال ، زمانیکه شما فایلی با نام item دارید ( مانند Nucleus برای استفاده از FancyURL) و می خواهید در سرور بعنوان فایل php تعریف شود ، می توانید از کد زیر در فایل .htaccess استفاده کنید:
البته در سرور هایی که دارای phpsuexec می باشند با کد فوق خطای Internal Server Error دریافت خواهید ، که این مشکل به راحتی با استفاده از SetHandler بجای ForceType در فایل .htaccess رفع خواهد شد:
مشکل 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 نتیجه به این صورت می شود:
یکی از اصلی ترین دلایل رخداد خطای 500 Internal Server Error به دلیل اعمال کد های اشتباه در فایل .htaccess هاست می باشد، بنابراین جهت رفع این مشکل حتما به شما توصیه می کنیم ویدئو آموزشی نحوه مشاهده فایل مخفی .htaccess رو داخل هاست مشاهده کنید تا بتونین به راحتی این فایل رو از داخل هاستتون پیدا کنین و کد های داخلش رو به حالت اولیه برگردونین.
منبع:
https://mizbanfa.net/blog/hosting/internal-server-error-500/