سبد (0)

اجرای PHP در iis ویندوز

بهترین راهکار برای اجرای PHP در IIS ویندوز

Wiki

تا قبل از آشنایی با امکانات IIS 7 به نظر می رسید که بهترین جا برای میزبانی یک وب سایت PHP فقط و فقط یک سرور Linux می تواند باشد، چون IIS 6 خیلی خوب PHP را اجرا نمی کند و خبری از URL rewriting هم در IIS 6 نیست، اما تغییر زاویه حرکت مایکروسافت در جهتِ گرفتن بیشتر سهم بازار باعث شده امکانات جالبی به IIS7 اضافه بشود و امروز می شود گفت ویندوز به خوبی لینوکس می تواند یک وب سایت PHP را میزبانی کند.

سه دلیل اصلی که ویندوز می تواند میزبان خوبی برای PHP باشد:

  • اولین و بهترین دلیل این است که، IIS7 خیلی خوب URL rewriting را پشتیبانی می کند، شما به راحتی می توانید از امکان Pretty URLs سایت وردپرسی خودتان در سرور های ویندوز که IIS7 دارن استفاده کنید.
  • دلیل دوم هم اینه که مایکروسافت وقت زیادی را صرف کرده تا عملکرد Fast CGI را تا حد ممکن در IIS 7 بهبود بدهد، و کاملاً مشکل Performance پایین PHP در ویندوز حل شده.
  • دلیل سوم Module اختصاصی مایکروسافت برای PHP هست که کار Output Caching صفحات PHP رو بسیار آسان می کند و در نتیجه باز هم Performance بهتر…

و حالا یک نکته مهم: تمام Performance خوبی که تا اینجا ازش صحبت شد در گرو خوب Config کردن IIS 7 برای اجرای PHP هست.

در گذشته 2 راه برای اجرای PHP در IIS وجود داشت، یعنی PHP را می شد در دو Mode مختلف روی IIS ویندوز اجرا کرد:

  1. CGI Application
  2. ISAPI Managed Handler

اما هر کدام از این دو راه حل، خوبی ها و مشکلات فراوانی را به همراه داشت.

  • خوبی CGI این است که PHP رو خوب اجرا می کند و کمتر Crash اتفاق می افتد، اما از طرفی خیلی مصرف CPU بالایی دارد چون CGI برای اجرای هر کار کوچکی یک Process جدید ایجاد می کند و سیستم باید برای اجرای یک پردازش کوچیک صفحه PHP بهای راه اندازی و بستن یک Process رو پرداخت کند.
    سرورهای شلوغ هرگز نمی تونن از CGI برای اجرای PHP استفاده کنند. چون هم Ram به زودی پر می شود و هم CPU از پردازش باز می ماند و نهایتاً کار به Crash کردن ویندوز می کشه.
  • اما ISAPI این مشکل رو حل کرده، PHP در ISAPI Mode به روشی اجرا میشه که ASP و ASP.Net اجرا میشوند، به این صورت که همه صفحات توسط یک Process پرازش میشوند، اما چطوری؟ IIS توسط سرویس word wide web ویندوز همه پردازش ها را انجام می دهد. و برای اینکه بفهمد فایل های مثلا با پسوند php را چه جوری اجرا کند، از یک فایل dll کمک می گیرد. IIS برای اجرای php یا aspx یا asp از dll های مخصوص همون زبان، که بهش Managed Handler میگن، کمک می گیره و با سرویس world wide web ویندوز اجرا می شود.
    ISAPI مشکل Performance اجرای PHP رو حل کرده اما مشکلات دیگه ای با خودش همراه داره. از جمله اینکه PHP در حالت ISAPI گاهی Crash می کنه و یه جورایی سایت هایی که با این روش کار می کند اعصاب صاحباشون رو خورد می کنن.

ورود Fast CGI و پایان مشکلات

Wiki

مشکلات PHP در CGI و ISAPI موجب به وجود آمدن Fast CGI شد. از اسمش هم معلومه که با چه هدفی ایجاد شده. هدف Fast CGI کنار هم آوردن سرعت ISAPI و کارایی CGI هست. در واقع روش کار Fast CGI مثل روش کار CGI هست. اما با تفاوتی کوچک اما کلیدی که سرعت بالایی بهش میده.

Fast CGI برای انجام هر پردازشی یک Process جدید ایجاد نمی کنه. بلکه یک Process بعد از ایجاد باز می مونه و تعدادی پردازش رو انجام میده و بعد بسته میشه. همین تغییر کوچک موجب پایین اومدن باور نکردنی مصرف منابع سیستم توسط PHP میشه.

با این حال Config کردن Fast CGI کمی سخت تر از CGI و ISAPI هست. اما بعد از اون مثل بنز کار می کنه.

خوب پس بهترین راه کار برای اجرای PHP در IIS مشخص شد:

1. قبل از همه مطمئن شوید كه CGI روی IISتون نصب هست، این رو می‌تونید از اینجا چك كنید:

Control Panel -> Programs and Features -> Turn Windows features on or off

2. نسخه غیرنصبی PHP رو دانلود كنید و در مسیر دلخواه (مثلاً C:\PHP) كپی كنید.

3. فایل php.ini-recommended رو به php.ini تغییر نام بدید و این تغییرات رو در اون ایجاد كنید:

  • كاراكتر سمیکالن ( ;) را از ابتدای خط fastcgi.impersonate = 1 بردارید. (اگر مقدارش یك نیست اون رو به یك تغییر بدید).
  • برای خط cgi.fix_pathinfo = 1 هم همون كار رو انجام بدید.
  • این بار خط cgi.force_redirect=0 (حتماً مقدارش صفر باشد).
  • مقدار خط open_basedir رو برابر با مسیر c:\inetpub\wwwroot قرار بدید.

حالا این فایل رو Save كنید و برای تست صحت نصب در اعلان داس (Command Prompt) دستور C:\PHP>php –info رو اجرا كنید، اگه اطلاعاتی رو در مورد php نشون داد، یعنی كار تا اینجا خوب پیش رفته.

4. نوبت به تنظیمات در IIS می‌رسه. ابتدا IIS Manager رو اجرا كنید. سرور اصلی رو از لیست Connections سمت چپ انتخاب كنید و از قسمت میانی گزینه Handler Mapping رو دوبار كلیك كنید. این هم عكس:

از ستون سمت راست گزینه Add Module Mapping رو انتخاب كنید و اون رو مثل عكس زیر پر كنید و OK كه یه پنجره دیگه بعدش باز می‌شه اون رو هم Yes كنید:

6. كار تمومه اما برای تست تو پوشه c:\inetpub\wwwroot یه فایل به نام phpinfo.php بسازید با این محتوا:

<?php
echo 'Hello';
؟>

و آن را با این آدرس باز كنید: http://localhost/phpinfo.php


برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.

آموزش صوتی PHP

ابزاری که در پیش روی دارید یکی از ابزارهای بسیار کاربردی سایت بیاموز در زمینه آموزش است، این ابزار برای سهولت یادگیری شما کاربران محترم طراحی شده است.

فقط کافی است روی عنوان پاراگراف مورد نظرتان کلیک کنید تا پخش صدا آغاز شود ...!

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه