سبد خرید (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

دیدگاه‌ها  

+1 # محمد 1395-02-31 23:25
دونستن طریقه کار کرد و تنظیمات و را اندازی خیلی مهم هستش که این مطلب به همین موضوع به خوبی پرداخته و ممنون.
صرفا برای آگاهی بیشتر دوستان عرض میکنم، با استفاده از ماژول PHP Manager for IIS به راحتی میتوانید همه این تنظیمات را به صورت ویزارد و خودکار انجام دهید؛ به اضافه کلی امکانات مازاد دیگه.
برای نسخه ویندوز 8 , 10 یا Server 2012 که IIS 8 به بعد را دارن حتما کامپایل مخصوص به این نسخه ها را دانلود کنید:
https :// phpmanager.code plex.com
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # lay 1394-07-26 19:51
سلام فایلی به اسم php.ini-recomme nded پیدا نکردم کجاس دقیقا؟؟؟؟؟؟؟؟؟؟ ؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # sdsasdf 1395-03-01 14:03
php.ini در xampp همون اسم php.ini رو داره و نیازی به تغییر اسم نداره.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1394-07-26 20:38
سلام.
شما باید دنبال فایلی به نام php.ini باشید.
با توجه به اینکه از xamp یا wamp استفاده کنید. مسیرش متفاوت هست. ولی معمولا این فایل از طریق کنترل پنل برنامه قابل دستیابی هست.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # mahdi 1394-06-26 17:56
به نقل از mm:
فایلی به اسم php.ini-recommended پیدا نکردم

متاسفانه من هم همین طور
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # mm 1394-02-14 19:20
فایلی به اسم php.ini-recomme nded پیدا نکردم
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # MohammadReza_PHP 1394-03-11 19:13
سلام
اسمش هست php.ini-production
فقط کافیه شما production رو از آخرش بردارین

موفق باشین
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # hg 1393-04-12 14:36
:P :P :P :P :P :P :P :lol: :lol: :lol: :lol: :lol: :D :D :D :D
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+8 # wapi 1393-01-24 13:34
خیلی خوب توضیح دادین ممنون, دنبالش بودم
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن

آموزش صوتی PHP

بستن
انتخاب مدرس:

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

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