رفع خطای Maximum Execution Time در وردپرس؛ آموزش قدم‌به‌قدم

رفع خطای Maximum Execution Time در وردپرس؛ آموزش قدم‌به‌قدم

خطای Maximum Execution Time بیشتر وقت‌ها موقع نصب یا به‌روزرسانی افزونه و قالب، درون‌ریزی اطلاعات، گرفتن نسخه پشتیبان یا اجرای یک کار سنگین دیده می‌شه. این پیام یعنی اجرای یک کد PHP بیشتر از زمان مجاز طول کشیده و سرور برای جلوگیری از مصرف بیش‌ازحد منابع، اون پردازش رو متوقف کرده.

توی این آموزش اول کمک می‌کنیم علت اصلی خطا رو پیدا کنید. بعد روش افزایش زمان اجرای PHP رو براساس نوع هاستتون توضیح می‌دیم. برای انجام این کار به افزونه نیاز ندارید و خود وردپرس هم فعلاً گزینه‌ای داخل پیشخوان برای تغییر این محدودیت نداره.

خطای Maximum Execution Time در وردپرس یعنی چی

وردپرس بخش زیادی از کارهاش رو با زبان PHP انجام می‌ده. PHP برای اجرای هر اسکریپت، یعنی مجموعه‌ای از دستورهای برنامه، یک محدودیت زمانی داره. این محدودیت نمی‌ذاره پردازش‌های بی‌پایان همه منابع سرور رو مصرف کنن.

اگه اجرای یک پردازش بیشتر از این زمان طول بکشه، خطایی شبیه پیام زیر می‌بینید:

کد
Fatal error: Maximum execution time of 30 seconds exceeded

عدد داخل خطا همیشه ۳۰ نیست. ممکنه به‌جای اون ۶۰، ۱۲۰ یا عدد دیگه‌ای ببینید. مقدار دقیق به تنظیمات PHP و محدودیت‌های شرکت هاستینگتون بستگی داره.

قبل از افزایش زمان اجرا، علت خطا رو پیدا کنید

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

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

قبل از دست‌زدن به فایل‌های سایت هم حتماً یک نسخه پشتیبان بگیرید. اگه به فایل‌های هاست دسترسی ندارید، بهتره مستقیم با پشتیبانی هاست تماس بگیرید.

روش اول: افزایش زمان اجرا از پنل هاست

اگه تازه‌کار هستید، تغییر تنظیمات از پنل هاست معمولاً راحت‌ترین راهه. بعضی سرویس‌ها بخشی برای انتخاب نسخه و تغییر گزینه‌های PHP دارن. مثلاً در بعضی پنل‌های cPanel می‌تونید از MultiPHP INI Editor کمک بگیرید.

  1. وارد پنل هاستتون بشید.
  2. بخش تنظیمات PHP، PHP Options یا MultiPHP INI Editor رو باز کنید.
  3. دامنه‌ای رو انتخاب کنید که وردپرس روی اون نصب شده.
  4. گزینه max_execution_time رو پیدا کنید.
  5. مقدارش رو موقتاً روی ۱۲۰ یا ۳۰۰ ثانیه بذارید و تغییرات رو ذخیره کنید.
  6. حالا همون کاری رو که خطا می‌داد دوباره انجام بدید.
MultiPHP INI Editor در سی پنل
MultiPHP INI Editor در سی پنل

اسم و محل این گزینه در شرکت‌های هاستینگ مختلف فرق می‌کنه. اگه پیداش نکردید، از پشتیبانی هاست بخواید مقدار max_execution_time رو بررسی کنه. یادتون نره یک عدد خیلی بزرگ رو به‌عنوان تنظیم دائمی انتخاب نکنید؛ اول باید بفهمید چرا پردازش این‌قدر طول می‌کشه.

روش دوم: تغییر زمان اجرا با فایل .user.ini

خیلی از هاست‌های امروزی PHP رو با CGI یا FastCGI اجرا می‌کنن. توی این محیط‌ها فایل .user.ini معمولاً انتخاب مناسب‌تری از .htaccess هست.

  1. وارد File Manager هاست بشید.
  2. پوشه اصلی نصب وردپرس رو باز کنید. ممکنه اسم این پوشه public_html باشه، ولی مسیر دقیقش به تنظیمات هاستتون بستگی داره.
  3. گزینه نمایش فایل‌های مخفی رو فعال کنید.
  4. اگه فایل .user.ini رو می‌بینید، اون رو برای ویرایش باز کنید. اگه چنین فایلی نیست، یک فایل با همین نام بسازید.
  5. خط زیر رو داخل فایل بذارید و اون رو ذخیره کنید.
php.ini
max_execution_time = 120

ممکنه تغییرات این فایل همون لحظه اعمال نشن، چون PHP تنظیمات کاربر رو در فاصله‌های زمانی مشخص دوباره می‌خونه. چند دقیقه صبر کنید و بعد کار موردنظرتون رو دوباره انجام بدید. اگه تغییری ندیدید، احتمالاً هاست اجازه ویرایش این گزینه رو نمی‌ده یا محدودیت جداگانه‌ای روی وب‌سرور تنظیم شده.

روش سوم: ویرایش فایل .htaccess در هاست Apache

فایل .htaccess فقط در بعضی پیکربندی‌های Apache کاربرد داره. این روش معمولاً وقتی جواب می‌ده که PHP به‌شکل ماژول Apache اجرا بشه و هاست هم اجازه تغییر این تنظیم رو بده.

اگه سرورتون از Nginx استفاده می‌کنه، سراغ این روش نرید؛ چون Nginx فایل .htaccess رو پردازش نمی‌کنه. اگه نمی‌دونید وب‌سرورتون از چه نوعی هست، قبل از تغییر فایل از پشتیبانی هاست سؤال کنید.

  1. یک نسخه پشتیبان از فایل .htaccess دانلود کنید.
  2. فایل رو از File Manager یا با اتصال امن SFTP باز کنید. برای اتصال SFTP می‌تونید از نرم‌افزار رایگان FileZilla کمک بگیرید.
  3. خط زیر رو به انتهای فایل اضافه کنید و تغییرات رو ذخیره کنید.
کد
php_value max_execution_time 120

اگه بعد از ذخیره فایل با خطای ۵۰۰ روبه‌رو شدید، خطی رو که اضافه کردید فوراً پاک کنید یا نسخه پشتیبان فایل رو برگردونید. این اتفاق معمولاً یعنی پیکربندی هاست از دستور php_value پشتیبانی نمی‌کنه.

اتصال امن SFTP با filezilla
اتصال امن SFTP با filezilla

آیا برای رفع خطا افزونه رایگان مناسبی هست

قبلاً افزونه رایگان WP Maximum Execution Time Exceeded برای این کار معرفی می‌شد. صفحه رسمی افزونه هشدار می‌ده که مدت زیادی از آخرین به‌روزرسانیش گذشته و با نسخه‌های جدید وردپرس آزمایش نشده. به همین دلیل نصبش رو پیشنهاد نمی‌کنیم.

برای رفع این خطا واقعاً به نصب افزونه نیاز ندارید. افزونه هم در نهایت سعی می‌کنه یکی از تنظیمات PHP رو تغییر بده. اگه شرکت هاستینگ این دسترسی رو بسته باشه، افزونه هم کاری از پیش نمی‌بره. تغییر تنظیمات از پنل هاست یا کمک‌گرفتن از پشتیبانی، انتخاب امن‌تر و مطمئن‌تریه.

آیا خود وردپرس امکان تغییر Maximum Execution Time رو داره

خود وردپرس فعلاً گزینه‌ای داخل پیشخوان برای تغییر max_execution_time نداره. این مقدار بخشی از تنظیمات PHP و سروره، پس کنترل نهایی اون در اختیار شرکت هاستینگ یا مدیر سرور می‌مونه.

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

اگه افزایش زمان اجرا مشکل رو حل نکرد چی کار کنیم

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

  • از پشتیبانی هاست بخواید گزارش خطا و محدودیت واقعی PHP و وب‌سرور رو بررسی کنه.
  • افزونه یا قالبی رو که درست قبل از شروع خطا نصب یا به‌روزرسانی کردید، موقتاً غیرفعال کنید.
  • برای نصب قالب یا افزونه بزرگ، فایل رو از File Manager یا SFTP داخل پوشه درست آپلود کنید.
  • اگه امکانش هست، فایل درون‌ریزی بزرگ رو به چند بخش کوچک‌تر تقسیم کنید.
  • از پشتیبانی ابزار یا افزونه‌ای که پردازش سنگین رو اجرا می‌کنه کمک بگیرید.

بالابردن زمان از ۱۲۰ به ۳۰۰ یا ۶۰۰ ثانیه، بدون اینکه علت اصلی رو بررسی کنید، ممکنه فقط مشکل رو پنهان کنه. اگه یک پردازش عادی چند دقیقه طول می‌کشه، بهتره مصرف حافظه، منابع هاست و عملکرد افزونه مربوط رو هم بررسی کنید.

جمع‌بندی

خطای Maximum Execution Time یعنی یک پردازش PHP بیشتر از زمان مجاز طول کشیده. اول افزونه، قالب یا کاری رو پیدا کنید که باعث نمایش خطا شده. بعد برای افزایش موقت زمان اجرا، به‌ترتیب سراغ تنظیمات PHP در پنل هاست، فایل .user.ini یا در محیط مناسب فایل .htaccess برید.

برای انجام این کار به افزونه نیاز ندارید و خود وردپرس هم تنظیم مستقیمی داخل پیشخوان نداره. اگه به تنظیمات سرور دسترسی ندارید یا تغییرات اثری نمی‌ذارن، از پشتیبانی هاست بخواید محدودیت واقعی و گزارش خطا رو بررسی کنه.

خطای Maximum Execution Time یعنی چی؟

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

آیا خود وردپرس گزینه‌ای برای تغییر زمان اجرا داره؟

نه، وردپرس فعلاً گزینه مستقیمی برای تغییر max_execution_time داخل پیشخوان نداره. این مقدار از تنظیمات PHP و سرور کنترل می‌شه.

برای رفع این خطا به افزونه رایگان نیاز داریم؟

نه، نصب افزونه ضروری نیست. بهتره تنظیمات PHP رو از پنل هاست، فایل .user.ini یا با کمک پشتیبانی هاست تغییر بدید.

چرا کد .htaccess روی سایت من کار نمی‌کنه؟

این کد فقط در بعضی پیکربندی‌های Apache کار می‌کنه. اگه سرور از Nginx، CGI یا FastCGI استفاده کنه، باید از روش دیگه‌ای مثل .user.ini یا تنظیمات پنل هاست کمک بگیرید.

نظر شما در این مورد چیه؟

  1. U406269۱۹ بهمن ۱۴۰۴

    با عرض سلام من با لوکال هاست فعلا دارم کار میکنم اول که در پنل xampp فایل mysql ارور داد که با ایجاد یک فایل جدید data اوکی شد بعد که میخواستم وارد وردپرس بشم این ارور maximum execution میاد در نظرات دیدم که نوشته بودید فایل php_ini پیدا کن اما من دوتا فایل دارم یکی php.ini_development یکی php.ini_production سوال اولم در کدام یکی باید وارد بشم سوال دوم این کد را در آخر باید وارد کنیم php_value max_execution_time 300؟

    • رضا راد۲۰ بهمن ۱۴۰۴

      درود بر شما توی هر دو تغییر بدین بسته به تنظیمات وب سرور یکی رو میخونه

  2. کاربر مهمان۹ بهمن ۱۳۹۷

    اگر این خطا در لوکال هاست باشد چیکار کنیم

    • رضا راد۱۰ بهمن ۱۳۹۷

      باید php.ini رو توی فایل های نرم افزار پیدا کنید.

  3. کاربر مهمان۱۹ مهر ۱۳۹۷

    سلام و عرض خسته نباشید خدمت شما، دقیقا باید کجا قرار داد؟ بین تو هشتک شروع و پایان؟ و بالاتر از
    ؟

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /sw6/
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /sw6/index.php [L]

    # END WordPress

    • رضا راد۱۹ مهر ۱۳۹۷

      سلام بعد از این کدها قرار بدید.

پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرس
پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرسآنلاین و پاسخگوی شما هستیم.آنلاین

در حال بارگذاری...

هر سوالی دارید بپرسید.پاسخگوی شما هستیم.