آموزش کامل رفع خطاهای زمپ XAMPP

خطاهایی که هنگام اجرای 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 اجرا کنید. فقط کافی است روی آیکون زمپ کلیک راست کرده و این گزینه را انتخاب کنید.

رفع خطای Access Denied در زمپ
رفع خطای Access Denied در زمپ

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

اجرای برنامه به صورت Administrator
اجرای برنامه به صورت 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 تغییر دهید.

کد مربوط به پورت http در xampp

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

تصویر کد تغییر پورت آپاچی زمپ

پس از تغییر این دو خط، فایل را ذخیره کنید.

توجه کنید که اگر پورت 80 را تغییر دادید، برای دسترسی به localhost باید آدرس localhost:port که در آن به جای port عددی که برای مقدار جایگزین 80 انتخاب کردید قرار می‌گیرد را وارد کنید.

رفع خطای پورت https زمپ

برای تغییر پورت https که به صورت پیش‌فرض روی 443 تنظیم است، باید فایل httpd-ssl.conf را ویرایش کنید.

برای باز کردن این فایل مشابه فایل قبلی، می‌توانید از منوی کنترل پنل زمپ استفاده کرده یا به مسیر apache/conf/extra مراجعه کنید.

رفع خطای ssl در زمپ
رفع خطای ssl در زمپ

ابتدا عبارت Listen 443 را جستجو کنید. در خط 36 مقدار جدید را جایگزین شماره پورت کنید. من مقدار 4430 را جایگزین می‌کنم.

کد پورت ssl

برای اعمال تغییر دوم، عبارت ServerName localhost:443 را جستجو کرده و شماره پورت را تغییر دهید.

کد تغییر پورت ssl در httpd-ssl.conf
کد تغییر پورت ssl در httpd-ssl.conf

اگر شبیه تصویر بالا، در چند خط بالاتر مقداری به نام 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 مشکل خطای اجرای زمپ را برطرف می‌کند.

کد پورت MySQL در my.ini
کد پورت MySQL در my.ini

تغییر php.ini برای رفع خطای زمپ

در مرحله بعدی باید فایل php.ini را باز کرده و تغییرات پورت پیش‌فرض mysql را در آن اعمال کنیم.

این فایل در مسیر C:\xampp\php قرار دارد. همچنین از کنترل پنل زمپ با کلیک روی Config سرویس آپاچی (Apache) می‌توانید آن را باز کنید.

در این فایل به دنبال عبارت mysql.default_port بگردید. پس از علامت مساوی عدد 3306 را به مقداری که در فایل قبلی تعریف کردید تغییر دهید. در اینجا من 3307 را جایگزین می‌کنیم.

تغییر پورت پایگاه داده برای وب‌سرور
تغییر پورت پایگاه داده برای وب‌سرور

فایل را ذخیره کنید.

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

آموزش جامع نصب وردپرس تصویری و گام به گام در ۵ دقیقه!

آموزش جامع نصب وردپرس تصویری و گام به گام در ۵ دقیقه!

خطای دیتابیس در زمپ

اگر پس از مدتی کار با زمپ، با خطایی در مورد mysql و دیتابیس مواجه شدید و این خطا مربوط به پورت نبود، احتمالاً این بخش به شما کمک کند. معمولاً خطایی مشابه متن زیر دریافت می‌کنید: (عبارت ibtmp1 در متن خطا وجود دارد.)

[Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
InnoDB: Compressed tables use zlib 1.2.11
InnoDB: Using SSE2 crc32 instructions

InnoDB: Initializing buffer pool, total size = 16M, instances = 1, chunk size = 16M
InnoDB: 128 out of 128 rollback segments are active.
InnoDB: Setting file ‘C:\xampp\mysql\data\ibtmp1’ size to 12 MB. Physically writing the file full; Please wait …
InnoDB: File ‘C:\xampp\mysql\data\ibtmp1’ size is now 12 MB.

برای رفع این خطا، مراحل زیر را در مسیر نصب زمپ دنبال کنید:

  1. نام فولدر mysql/data را به mysql/data_old تغییر دهید.
  2. پوشه جدیدی به نام data در کنار آن بسازید.
  3. محتوای mysql/backup را در فولدر mysql/data کپی کنید.
  4. فولدرهای درون data_old را در پوشه جدید کپی کنید. (به جز فولدرهای mysql, performance_schema و phpmyadmin)
  5. فایل ibdata1 از فولدر قبلی را به پوشه mysql/data کپی کنید.
  6. زمپ را بسته و مجدداً باز کنید. حالا روی دکمه استارت دیتابیس کلیک کنید.

اگر خطای شما با این روش برطرف شد، می‌توانید فولدر data_old را پس از چند روز پاک کنید. مطمئن باشید که تمام جداول دیتابیس به درستی منتقل شده باشند.

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