آشنایی با PHP handlers

آشنایی با PHP handlers

گروه آموزشی مجموعه تدبیر

گرداننده پی‌اچ‌پی و یا PHP handlers چیست؟
وقتی درخواست بازدید یک صفحه پی‌اچ‌پی را به سرور می‌دهید سرور کد پی‌اچ‌پی را تفسیر می‌کند و صفحه با خروجی مناسب را برای کاربر تولید می‌کند. گرداننده پی‌اچ‌پی روالی است که کتابخانه‌های پی‌اچ‌پی را برای تفسیر کد فرا می‌خواند.
چند هندلر متفاوت برای لود پی‌اچ‌پی وجود دارد:

  • CGI
  • DSO
  • suPHP
  • FastCGI

DSO: که با نام mod_php نیز شناخته می‌شود قدیمی‌ترین و سریع‌ترین هندلر پی‌اچ‌پی است. این گرداننده کدهای پی‌اچ‌پی را مستقیما بوسیله آپاچی تفسیر می‌کند در نتیجه کدهای پی‌اچ‌پی با مجوز کاربر آپاچی (nobody ، apache و یا www-data) اجرا می‌شوند. همه فایل‌های موجود در وب‌سرور شما باید بوسیله کاربر آپاچی قابل مشاهده باشند تا اجرا شوند و همچین همه فایلها و دایرکتوری‌ها باید بوسیله کاربر آپاچی قابل نوشتن باشند تا امکان تغییر یا آپلود فایل به سرور بوسیله کدهای پی‌اچ‌پی وجود داشته باشد.

در سرورهای که با این هندلر تنظیم شده‌اند چنانچه هکر به یکی از اکانت‌های شما نفوذ کند می‌تواند به همه فایل‌های سرور که متعلق به کاربر آپاچی هستند دسترسی پیدا کند. در نتیجه مجوزها باید به این شکل تنظیم شود:

  • فایل: همه فایلها باید دارای مجوز ۶۴۴ باشند، کاربر صاحب (owner) فایل باید کاربر اکانت باشد و گروه فایل  گروه آپاچی باشد.
  • دایرکتوری: دایرکتوری‌های باید مجوز ۷۵۵ داشته باشند. کاربر و گروه دایرکتوری باید کاربر آپاچی باشد.

CGI: هندلر سی‌جی‌آی بر خلاف« آپاچی ماژول»، php را به عنوان ماژول CGI اجرا می‌کند. با توجه به اینکه این هندلر نه امن است و نه سریع استفاده از این هندلر توصیه نمی‌شود.

suPHP: در این روش پی‌اچ‌پی به عنوان یک سرویس جدا اجرا می شود و پس از تفسیر کد‌های پی‌اچ‌پی نتیجه را به آپاچی می‌فرستد.  این روش با اینکه مانند روش بالا یک CGI است اما تفاوت‌هایی دارد. چنانچه این هندلر با suEXEC همراه باشد کدهای پی‌اچ‌پی با مجوز کاربر صاحب فایل اجرا خواهد شد.

در این روش مجوز و کاربر فایل‌ها و دایرکتوری‌ها باید به صورت زیر باشد:

  • فایل: همه فایلها باید دارای مجوز ۶۴۴ باشند، کاربر و گروه فایل باید کاربر و گروه مالک فایل باشد.
  • دایرکتوری: دایرکتوری‌های باید مجوز ۷۵۵ داشته باشند. کاربر و گروه دایرکتوری باید کاربر و گروه مالک فایل باشد.

FastCGI: این هندلر که به نام mod_fcgid و یا FCGI هم شناخته می‌شود. در این هندلر کدها با مجوز کاربر صاحب فایل (و نه کاربر آپاچی) اجرا می‌شود در نتیجه بسیار امن‌تر از سایر روش‌هاست . از جهتی دیگر سرعت اجرا بسیار بالاتر و مصرف CPU در این هندلر بسیار کمتر از سایر روش‌هاست.

نکته: در این روش از آنجا که کدهای php بوسیله یک پروسس اجرا می‌شوند و این پروسه در پس زمینه باقی می‌ماند در نتیجه در این روش مصرف رم بالاتر از سایر روش‌هاست.

کدام هندلر را انتخاب کنم؟
با توجه به شرایط شما باید یک هندلر که بیشترین بازدهی را برای شما دارد انتخاب کنید.

DSO بیشتر مناسب استفاده در سرورهایی است که نیاز به سرعت بالا دارند و تعداد وب‌سایت‌های میزبانی شده محدود است.

CGI برای هیچ سروری پیشنهاد نمی‌شود. از CGI تنها در مواردی که به دلایلی امکان استفاده از سایر هندلرها نباشد استفاده می‌کنیم!