خطای ۵۰۰ یا Internal Server Error
رفع خطای ۵۰۰ یا Internal Server Error
خطای ۵۰۰ یکی از رایج ترین خطاهای سمت سرور میباشد که بنابر هر دلیل و مشکلی که از طرف سرورهای داخلی سایت وجود داشته باشد، نشان داده میشود. رایج ترین دلیل بروز این خطا می تواند از اعمال سطح دسترسی یا Permission نادرست بر روی فایل ها و دایرکتوری ها، Ownership نادرست در هاست، کدهای نادرست در فایل php.ini یا فایل.htaccess، درخواست های نامعتبر از سمت اسکریپت سایت و یا دلایل دیگری باشد.
این خطا با توجه به نام آن بسیاری از کاربران را به این اشتباه می اندازد که مشکلی در سرور وجود دارد. ولی در واقع سرور مشکلی ندارد و با اعمال تغییرات در تنظیمات پیکربندی سایت معمولاً قابل رفع می باشد. باید توجه داشته باشید نرمافزارهای روی سرور بصورت مداوم در حال بروزرسانی میباشند، ممکن است بروزرسانیها از نسخهای به نسخهی دیگر باعث انجام تغییرات اساسی در سرور شوند و این تغییرات مغایر با تنظیمات قبلی شما باشد و این امر مسبب بروز این خطا شود.
جزئیات کاملی از خطاهای سایت در فایل Error Logs همیشه ذخیره می شود. که میتوانید در زمان مشاهدهی خطای ۵۰۰ با مراجعه به آن اطلاعاتی در مورد عامل ایجاد این خطا دریافت کنید. این فایل در قسمت File Manager در هاست شما وجود دارد. که لیستی از خطاهای سایت را همراه با تاریخ و جزئیات ارائه می دهد.
نمونه ای از خطای ۵۰۰:
عوامل بروز خطای ۵۰۰ چیست و چگونه آنها را رفع کنیم:
- Bad Permission, Writable by Group:
یکی از اولین مشکلات برهم زدن سطح دسترسی فایل ها و پوشه ها توسط کاربر است، ممکن هست شما تنظیماتی را اعمال کرده باشید و یا به طور اتفاقی این تنظیمات اعمال شده باشد و اجازه و دسترسی فایل ها و پوشه ها مناسب برای وب سایت شما نباشد. در این صورت شما باید سطح دسترسی پوشه ها را به ۷۵۵ و فایل ها را ۶۴۴ برگردانید و از اعمال شدن سطح دسترسی ها اطمینان حاصل کنید. به پوشه های tmp و cache بیشتر توجه کنید و سطح دسترسی این دو پوشه را هم چک کنید.
خطایی که بخاطر سطح دسترسی پوشه ها بیش از حد رخ می دهد. در فایل 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 نیز دارای سطح دسترسی ۷۵۵ می باشند.
• Files – ۶۴۴ شامل تصاویر، فایل های چندرسانهای و فایل های متنی
• CGI Scripts – ۷۵۵
• Directories – ۷۵۵
برای این کار سطح دسترسی ها را از طریق File manager واقع در دسته بندی Files در Cpanel یا سرویس گیرندهی FTP و یا از طریق دستورات chmod در SSH/Bash ویرایش کنید.
- Bad .htaccess, Invalid code, command, or syntax
ممکن است کاربران در فایل .htaccess خطوطی را اضافه کنند که در اثر عدم دانش کافی و بی دقتی حاوی کلمات نادرست یا متضاد با تنظیمات سرور باشند. در این حالت خطای ۵۰۰ رخ خواهد داد. بهترین روش برای رفع این مشکل ، تبدیل خطوط مشکل دار در فایل .htaccess به توضیحات یا Comment می باشد که کافی است در ابتدای خطوط کاراکتر # را درج کنید و فایل را ذخیره نمایید. برای مثال اگر محتوای فایل .htaccess شما به صورت زیر باشد:
p style=”text-align: left;”>
DirectoryIndex default.html
AddType application/x-httpd-php5 php
DirectoryIndex default.html
<strong>#</strong>AddType application/x-httpd-php5 php
- مشکل FollowSymlinks:
در این حالت خطایی مشابه ذیل خواهید داشت:
[Sun Jun 05 12:07:10 2011] [alert] [client 66.249.72.82] /home1/examplec/public_html/.htaccess: Option FollowSymlinks not allowed here
این خطا به سادگی قابل رفع می باشد. کافی است در فایل مورد نظر ، دستور مجاز «SymlinksIfOwnerMatches» را به جای «FollowSymlinks» استفاده کنید یا خط مربوطه را حذف نمایید.
- مشکل Syntax Not Closed:
در این حالت خطایی مشابه ذیل خواهید داشت:
[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.
موارد ذکر شده تعداد کمی از خطاهایی هستند که در اثر دستورات نادرست در فایل .htaccess ایجاد میشوند. ولی بطور کلی پیغام های خطا به اندازهی کافی در تشخیص خطا شما را راهنمایی می کنند و میتوانید با دقت در خطاها به راحتی آن ها را رفع نمایید.
خطاهایی که در فایل php.ini می تواند رخ دهد به صورت زیر می باشند:
- مشکل ForceType :
زمانیکه از فایل هایی با پسوند یا بدون پسوندی متفاوت از پسوندهای معمول استفاده میکنید، میتوانید از ForceType در فایل .htaccess استفاده کنید و نحوهی استفاده از آن در سرور را تعیین کنید.البته در تمامی فایل های موجود در پوشه ی مربوطه و سرور های بدون phpsuexec اینگونه است.
برای مثال، وقتی شما فایلی با نام item دارید و می خواهید در سرور به عنوان فایل 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 استفاده کرد. در سرورهای دارای phpsuexec استفاده از این دستور خطای Internal Server Error را ایجاد می کند. برای رفع این خطا شما میتوانید از فایل php.ini که در همان پوشهای که فایل .htaccess قرار دارد موجود است. در فایل php.ini میتوانید تمامی تنظیمات مربوط به php را تغییر دهید. برای مثال اگر شما میخواهید short_open_tag را برابر با off قرار دهید، شما باید از short_open_tag? = off در فایل .htaccess استفاده کنید. با استفاده از فایل php.ini نتیجه به این صورت میشود:
[PHP]</p>
<p style=”text-align: left;”>short_open_tag = Off
یکی از اصلی ترین دلایل رخداد خطای ۵۰۰ Internal Server Error به دلیل اعمال کد های اشتباه در فایل .htaccess هاست می باشد.
درباره Mostafa Shoa
مدیر تیم پارس نویس، کارشناس مهندسی نرم افزار، مدرس دوره های برنامه نویسی و طراحی سایت در مدارس تیزهوشان، مشاور تبلیغات و بازاریابی استارتاپ ها و کسب و کارهای اینترنتی
نوشته های بیشتر از Mostafa Shoa
دیدگاهتان را بنویسید