
خطاهایی که هنگام اجرای xampp رخ میدهند به آسانی قابل رفع هستند. معمولاً این مشکلات به خاطر تداخل در پورت مورد نیاز سرویس رخ میدهند. در این آموزش ۳ خطای رایج زمپ و راهحلهای آن را بررسی میکنیم.
همانطور که میدانید به کمک نرمافزار زمپ میتوانیم یک وبسرور در ویندوز، لینوکس یا مک راهاندازی کنیم. apache webserver به عنوان سرویس اصلی هست که توسط xampp در سیستم اجرا میشود. در کنار این سرویس، سرویس پایگاه داده mysql و چند مورد جانبی دیگر نظیر وبمیل و ftp نیز فعال میشود.
در هر بخش از آموزش ابتدا دلیل بروز خطا را بررسی کرده و سپس به رفع آن میپردازیم.
فهرست محتوای آموزش
روشهای رفع خطای زمپ
دو خطای اصلی که در اجرای xampp رخ میدهد، عدم اجرای آپاچی یا mysql است. این دو خطا در اکثر اوقات به دلیل مشکل در رزرو کردن پورت مورد نیاز در سیستم است.
هر برنامه در سیستم عامل که بخواهد با ابزارها یا برنامههای دیگر در تعامل باشد، نیاز به در اختیار گرفتن یک پورت (port) دارد. در زمپ از پورت 80 برای آپاچی (apache) و 3306 برای پایگاه داده mysql استفاده میشود.
اگر هر کدام از این پورتها قبلاً توسط نرمافزار دیگری گرفته شده باشد، زمپ نخواهد توانست سرویس مورد نظر شما را start کند.
برای رفع هر دو خطا دو راهحل داریم:
- پیدا کردن نرمافزاری که باعث تداخل شده و غیرفعال کردن آن
- تغییر پورت مورد نیاز زمپ برای اجرای صحیح
گاهی اوقات امکان اجرایی کردن روش اول را نداریم. پس بهتر است port سرویسهای زمپ را تغییر دهیم تا دیگر به مشکل بر نخوریم.
خطای access denied در xampp
قبل از بررسی رفع خطای پورت در زمپ، بهتر است یک خطای رایج دیگر که اکثراً در ویندوز رخ میدهد را بررسی میکنیم.
گاهی اوقات پس از نصب زمپ، در اجرای اول با خطای access denied برای xampp-control.ini مواجه میشویم.
Error: Cannot create file xampp-control.ini Access is denied
برای رفع این مشکل میتوانید XAMPP Control Panel را به صورت Run As Administrator اجرا کنید. فقط کافی است روی آیکون زمپ کلیک راست کرده و این گزینه را انتخاب کنید.

برای اینکه در هر بار اجرای زمپ نیاز به کلیک راست کردن نباشد، وارد مسیر نصب شوید. روی آیکون xampp-control.exe کلیک راست کرده و گزینه آخر (properties) را انتخاب کنید. در صفحه باز شده، از تب compatibility تیک Run this program as an administrator را فعال کنید.

در رفع دو خطای بعدی نرم افزار xampp پورت سرویس مورد نظر را تغییر میدهیم. فرقی ندارد از چه سیستم عاملی استفاده میکنید، این روش رفع خطا را میتوانید به کار ببرید.
مشکل استارت نشدن Apache زمپ
اگر این مشکل برای زمپ وجود داشته باشد، وقتی روی دکمه start ماژول Apache کلیک میکنید، آپاچی شروع به کار نمیکند! در این لحظه معمولاً خطای زیر در log کنسول زمپ نمایش داده میشود.

این خطا در اجرای زمپ ممکن است به شکل پیغامهای زیر نیز ظاهر شود:
Problem detected!
Port 80 in use by X with PID
Apache will not start without the configured ports free!
Error: Apache shutdown unexpectedly.
This may be due to a blocked port, missing dependencies.
improper privileges, a crash, or a shutdown by another method
حالت 1: غیرفعالسازی نرمافزار مزاحم!
اولین راهکار این است که نرمافزاری که در حال استفاده از پورت 80 است را غیرفعال کرده یا تنظیمات آن را تغییر دهیم.
اگر خطایی مشابه اولی دریافت میکنید در خط دوم، نرمافزاری که موجب اختلال شده است را اعلام کرده است. برای رفع خطای زمپ باید آن نرمافزار را ببندید یا پورت پیشفرض آن را تغییر دهید.
از آنجا که تنظیمات هر نرمافزار متفاوت است، یافتن چگونگی انجام این کار را به خودتان واگذار میکنم.
حالت 2: تغییر پورت آپاچی (Apache) در زمپ
در این حالت پورت پیشفرض آپاچی در زمپ که 80 است را به یک مقدار دلخواه دیگر تغییر میدهیم. من این مقدار را 8000 قرار میدهم.
ممکن است خطایی که دریافت کنید مربوط به پورت https یعنی 443 در اجرای وب سرور آپاچی توسط زمپ باشد. در اینصورت باید پورت 443 را به مقداری دیگر (مثلاً 4430) تغییر دهیم.
تغییر پورت http در زمپ
از کنترل پنل زمپ روی دکمه Config در جلوی Apache کلیک کرده و گزینه اولی (httpd.conf) را باز کنید.

همچنین میتوانید در مسیر زمپ وارد پوشه apache شده و در پوشه conf فایل httpd.conf را با یک ویرایشگر متن باز کنید.
عبارت Listen 80
را در فایل جستجو کنید. مقدار آن را به Listen 8000 تغییر دهید.

عبارت ServerName localhost:80
را جستجو کرده و مقدار 80 را به همان مقداری که برای قبلی قرار دادید (در اینجا 8000) تغییر دهید.

پس از تغییر این دو خط، فایل را ذخیره کنید.
توجه کنید که اگر پورت 80 را تغییر دادید، برای دسترسی به localhost باید آدرس localhost:port که در آن به جای port عددی که برای مقدار جایگزین 80 انتخاب کردید قرار میگیرد را وارد کنید.
رفع خطای پورت https زمپ
برای تغییر پورت https که به صورت پیشفرض روی 443 تنظیم است، باید فایل httpd-ssl.conf را ویرایش کنید.
برای باز کردن این فایل مشابه فایل قبلی، میتوانید از منوی کنترل پنل زمپ استفاده کرده یا به مسیر apache/conf/extra
مراجعه کنید.

ابتدا عبارت Listen 443
را جستجو کنید. در خط 36 مقدار جدید را جایگزین شماره پورت کنید. من مقدار 4430 را جایگزین میکنم.
برای اعمال تغییر دوم، عبارت ServerName localhost:443
را جستجو کرده و شماره پورت را تغییر دهید.

اگر شبیه تصویر بالا، در چند خط بالاتر مقداری به نام VirtualHost _default_
میبینید، پورت جلوی آن را نیز تغییر دهید.
در نهایت فایل را ذخیره کنید. کنترل پنل را باز کرده و سعی کنید سرویس Apache را start کنید. خواهید دید که مشکل خطای پورت آپاچی در زمپ برطرف شده است.
رفع خطای اجرای mysql در زمپ
مشابه رفع خطای پورت آپاچی در اجرای زمپ، ممکن است برای اجرای mysql هم به مشکل بر بخوریم. پایگاه داده در زمپ از پورت 3306 به صورت پیشفرض استفاده میکند. خیلی کم پیش میآید که نرمافزار دیگری از این پورت استفاده کند مگر سایر برنامههای مدیریت دیتابیس را نصب کرده باشید.
در هر حال اگر با خطایی به شکل زیر مواجه شدید، باید برنامهای که باعث تداخل میشود را ببندید و یا پورت mysql در زمپ را تغییر دهید.
Error: MySQL shutdown unexpectedly.
This may be due to a blocked port, missing dependencies.
improper privileges, a crash, or a shutdown by another method.
رفع خطا با تغییر پورت دیتابیس در xampp
برای تغییر پورت دیتابیس در زمپ، ابتدا لازم است فایلی به نام my.ini را ویرایش کنیم.
با کلیک روی دکمه Config در جلوی MySQL در کنترل پنل زمپ و انتخاب my.ini میتوانید آن را باز کنید. این فایل در مسیر نصب زمپ در زیرپوشه mysql/bin
قرار دارد.

در این فایل به دنبال کلمه port بگردید و هر کجا که مقدار 3306 وجود داشت، به یک مقدار دلخواه دیگر تغییر دهید. معمولاً عدد 3307 مشکل خطای اجرای زمپ را برطرف میکند.

تغییر php.ini برای رفع خطای زمپ
در مرحله بعدی باید فایل php.ini را باز کرده و تغییرات پورت پیشفرض mysql را در آن اعمال کنیم.
این فایل در مسیر C:\xampp\php
قرار دارد. همچنین از کنترل پنل زمپ با کلیک روی Config سرویس آپاچی (Apache) میتوانید آن را باز کنید.
در این فایل به دنبال عبارت mysql.default_port
بگردید. پس از علامت مساوی عدد 3306 را به مقداری که در فایل قبلی تعریف کردید تغییر دهید. در اینجا من 3307 را جایگزین میکنیم.

فایل را ذخیره کنید.
اگر سرویس Apache فعال است، آن را stop کنید تا php.ini بازخوانی شود. حالا مجدداً آپاچی را روشن کرده و سعی کنید MySQL را هم start کنید. خواهید دید که دیگر خطای رزرو پورت نمایش داده نمیشود و سرویس به درستی اجرا خواهد شد.
امیدوارم با این آموزش توانسته باشید عملیات رفع خطای زمپ را به درستی انجام دهید. اگر همچنان مشکلی وجود داشت، در قسمت دیدگاهها اعلام کنید تا با هم بررسی کنیم.