اجرای PHP در iis ویندوز
بهترین راهکار برای اجرای PHP در IIS ویندوز
تا قبل از آشنایی با امکانات 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 ویندوز اجرا کرد:
- CGI Application
- 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 و پایان مشکلات
مشکلات 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 کلیک کنید.
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 42642
دیدگاهها
دونستن طریقه کار کرد و تنظیمات و را اندازی خیلی مهم هستش که این مطلب به همین موضوع به خوبی پرداخته و ممنون.
صرفا برای آگاهی بیشتر دوستان عرض میکنم، با استفاده از ماژول PHP Manager for IIS به راحتی میتوانید همه این تنظیمات را به صورت ویزارد و خودکار انجام دهید؛ به اضافه کلی امکانات مازاد دیگه.
برای نسخه ویندوز 8 , 10 یا Server 2012 که IIS 8 به بعد را دارن حتما کامپایل مخصوص به این نسخه ها را دانلود کنید:
https :// phpmanager.code plex.com
سلام فایلی به اسم php.ini-recomme nded پیدا نکردم کجاس دقیقا؟؟؟؟؟؟؟؟؟؟ ؟
php.ini در xampp همون اسم php.ini رو داره و نیازی به تغییر اسم نداره.
سلام.
شما باید دنبال فایلی به نام php.ini باشید.
با توجه به اینکه از xamp یا wamp استفاده کنید. مسیرش متفاوت هست. ولی معمولا این فایل از طریق کنترل پنل برنامه قابل دستیابی هست.
به نقل از mm:
متاسفانه من هم همین طور
فایلی به اسم php.ini-recomme nded پیدا نکردم
سلام
اسمش هست php.ini-production
فقط کافیه شما production رو از آخرش بردارین
موفق باشین
:P :P :P :P :P :P :P :lol: :lol: :lol: :lol: :lol: :D :D :D :D
خیلی خوب توضیح دادین ممنون, دنبالش بودم