Plesk

تنظیمات PHP در Plesk: افزایش حجم آپلود و رفع خطای 500

تنظیمات PHP در Plesk برای هر دامنه از Websites & Domains، بخش PHP Settings تغییر می کند. برای بالا بردن حجم آپلود باید upload_max_filesize و post_max_size را با هم بالا ببرید و اگر خطای 500 دیدید، اول لاگ خطا را بخوانید، نه اینکه مقدارها را حدسی عوض کنید.

نوشته تیم فنی پیکوهاستبه روزرسانی: ۱۵ مهر ۱۴۰۵۸ دقیقه مطالعه

تنظیمات PHP در Plesk برای هر دامنه جداگانه است و از مسیر Websites & Domains، دامنه، PHP Settings باز می شود. اگر فقط می خواهید حجم آپلود را بالا ببرید، مقدار upload_max_filesize و post_max_size را با هم زیاد کنید و ذخیره بزنید. این مقاله برای Plesk Obsidian است و جای بعضی فیلدها در نسخه یا قالب دیگر ممکن است فرق کند. در ادامه می بینید هر مقدار چه کاری می کند، چطور تغییر را می سنجید و خطای 500 را از کجا ردیابی می کنید.

تنظیمات PHP در Plesk کجاست

بعد از ورود به پنل، از منوی Websites & Domains دامنه را پیدا کنید و روی PHP Settings بزنید. دو بخش اصلی دارد:

  • در بالا نسخه PHP و حالت اجرا (PHP-FPM یا FastCGI و مانند آن) را انتخاب می کنید. فهرست نسخه ها به نصب های ادمین سرور بستگی دارد.
  • پایین تر فیلدهای رایج مثل memory_limit، max_execution_time، post_max_size، upload_max_filesize و display_errors هستند. یک کادر هم برای Additional configuration directives وجود دارد که دستورهای دلخواه php.ini را می پذیرد.

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

افزایش حجم آپلود قدم به قدم

حجم آپلود فقط به یک مقدار وابسته نیست. سه تنظیم با هم عمل می کنند:

تنظیمکاربردرابطه با بقیه
upload_max_filesizeسقف حجم هر فایلنباید از post_max_size بزرگ تر باشد
post_max_sizeسقف کل بدنه درخواست POSTباید برابر یا بزرگ تر از فایل باشد
memory_limitسقف حافظه یک اجرای PHPبهتر است از post_max_size کمتر نباشد
  1. PHP Settings دامنه را باز کنید.
  2. upload_max_filesize را مثلا روی 128M و post_max_size را روی 128M یا کمی بیشتر بگذارید.
  3. اگر فایل ها را پردازش می کنید (مثل تصویر یا ایمپورت)، max_execution_time و memory_limit را هم متناسب بالا ببرید.
  4. OK یا Apply را بزنید.

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

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

اگر کادر Additional configuration directives دارید

بعضی دستورها فیلد جدا ندارند و باید در این کادر نوشته شوند. هر دستور در یک خط:

upload_max_filesize = 128M
post_max_size = 128M
memory_limit = 256M
max_execution_time = 300

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

چرا بعد از تغییر هنوز خطای آپلود می آید

گاهی مقدار PHP درست است ولی آپلود باز هم رد می شود. چند علت رایج دارد:

  • فایل از نظر وب سرور بزرگ است. در Plesk معمولا nginx جلوی Apache قرار می گیرد و خودش سقف حجم بدنه دارد. اگر خطای 413 Request Entity Too Large می بینید، راهنمای رفع خطای 413 در nginx را بخوانید.
  • تنظیم دیگری در همان سایت مقدار را عوض می کند. وردپرس چندسایته یک سقف جداگانه دارد، و بعضی افزونه ها هم سقف خودشان را می گذارند.
  • نسخه PHP دیگری از آنچه فکر می کنید اجرا می شود. بالای همان صفحه PHP Settings نسخه فعلی را ببینید.
  • حالت اجرا عوض شده و تغییرات در دامنه یا ساب دامین دیگری ذخیره شده است. هر ساب دامین ممکن است تنظیم جدا داشته باشد.

برای اینکه مطمئن شوید PHP کدام مقدار را دارد، یک فایل phpinfo.php در httpdocs بسازید:

<?php phpinfo();

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

اگر در nginx روی سرور خودتان لازم است سقف حجم را بالا ببرید، از Websites & Domains، دامنه، Apache & nginx Settings، بخش Additional nginx directives استفاده کنید و در آن بنویسید:

client_max_body_size 128m;

فایل های تنظیمات nginx را مستقیم ویرایش نکنید. Plesk آن ها را خودش دوباره می سازد و تغییر دستی از بین می رود.

حالت اجرای PHP و تنظیمات پردازش

در صفحه PHP Settings گزینه ای برای حالت اجرا وجود دارد و معمولا PHP-FPM است که با Apache یا با nginx سرو می شود. FastCGI و CGI قدیمی ترند و کندتر. تغییر حالت اجرا روی رفتار htaccess اثر دارد، پس بعد از آن سایت را کامل تست کنید. اگر فقط nginx بدون Apache استفاده می شود، فایل .htaccess اصلا خوانده نمی شود و قانون های داخل آن بی اثر هستند.

در همین صفحه، بخش تنظیمات عملکرد و امنیت فیلدهایی مثل pm.max_children و pm.max_requests دارد. pm.max_children سقف پردازش های هم زمان PHP برای این دامنه است. عدد کم باعث صف و کندی در ترافیک بالا می شود و عدد خیلی زیاد حافظه سرور را پر می کند. مقدار مناسب به رم سرور و مصرف هر پردازش وابسته است و عدد ثابت درست برای همه ندارد.

تنظیم های دیگری که خطا می دهند

بعضی خطاها به upload ربطی ندارند ولی از همین صفحه حل می شوند:

نشانهتنظیم محتمل
ذخیره نشدن منوها یا تنظیمات بزرگ وردپرسmax_input_vars
قطع شدن ایمپورت یا بکاپ افزونهmax_execution_time
پیام Allowed memory size exhaustedmemory_limit
خطای open_basedir restriction in effectopen_basedir یا مسیر فایل
خالی ماندن صفحه بدون پیامdisplay_errors و لاگ خطا

display_errors را روی سایت زنده روشن نگذارید. پیام خطا ممکن است مسیر فایل ها و اطلاعات حساس را به بازدیدکننده نشان دهد. به جای آن لاگ را بخوانید.

رفع خطای 500 بعد از تغییر تنظیمات PHP

خطای 500 یک پیام عمومی است و علت را فقط لاگ می گوید. به همین دلیل اول لاگ را بخوانید و بعد کار دیگری بکنید. در Plesk این دو راه را دارید:

  1. Websites & Domains، دامنه، بخش Logs. آخرین خطاهای وب سرور و PHP را اینجا می بینید.
  2. روی VPS با دسترسی ترمینال، لاگ خطای دامنه معمولا در مسیری مثل /var/www/vhosts/system/example.com/logs/error_log است. مسیر دقیق در نسخه های مختلف ممکن است فرق کند.
tail -n 50 /var/www/vhosts/system/example.com/logs/error_log

علت های رایج، به ترتیب تکرار:

  • تغییر نسخه PHP و ناسازگاری افزونه یا قالب. خطا معمولا Fatal error یا Call to undefined function است. نسخه را به قبلی برگردانید و افزونه را به روز کنید.
  • افزونه PHP که نسخه جدید ندارد (مثلا یک extension مثل ionCube). افزودن extension کار ادمین سرور است.
  • کم بودن memory_limit. در لاگ عبارت Allowed memory size exhausted می آید.
  • خطا در .htaccess. فایل را به نام دیگری تغییر نام بدهید و دوباره امتحان کنید، و راهنمای خطای 500 در cPanel را برای ادامه ببینید، چون فایل .htaccess در هر دو پنل یکسان کار می کند.
  • مجوز یا مالک اشتباه فایل ها. پوشه ها معمولا 755 و فایل ها 644 هستند.

برای وردپرس، نمایش خطا را در wp-config.php فعال کنید و بعد از رفع مشکل برگردانید:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

خطاها در wp-content/debug.log ثبت می شوند. قبل از ویرایش wp-config.php از آن یک نسخه پشتیبان بگیرید.

بعد از ذخیره تغییرات چه چیزی را تست کنیم

هر تغییر را با یک آزمایش مشخص تایید کنید و به دیدن صفحه اصلی بسنده نکنید:

  1. فایل واقعی را با حجمی که قبلا رد می شد آپلود کنید، نه یک فایل کوچک.
  2. صفحه مدیریت سایت را باز کنید، چون خطای PHP اغلب فقط در بخش مدیریت دیده می شود.
  3. لاگ خطا را ببینید و مطمئن شوید خط تازه ای با Fatal یا Warning بعد از تغییر نیامده است.
  4. اگر کش دارید، یک بار آن را پاک کنید تا نتیجه قدیمی نمایش داده نشود.

اگر مشکل فقط روی یک دامنه است و دامنه های دیگر درست کار می کنند، تفاوت تنظیم های PHP همان دو دامنه را کنار هم بگذارید. معمولا یک مقدار یا یک نسخه متفاوت علت است.

تفاوت دامنه اصلی و ساب دامین

در Plesk ساب دامین ها می توانند تنظیم PHP جدا داشته باشند. اگر سایت اصلی را درست کرده اید ولی ساب دامین وردپرس هنوز همان خطا را می دهد، PHP Settings خود ساب دامین را از Websites & Domains باز کنید و مقدارها را همان جا تغییر دهید. برعکسش هم صادق است: تغییر دامنه اصلی همیشه به ساب دامین اعمال نمی شود.

تغییر نسخه PHP و محدودیت حافظه

وقتی نسخه PHP را از همان صفحه عوض می کنید، تنظیمات memory_limit و بقیه مقدارها ممکن است به مقدارهای پیش فرض آن نسخه برگردند. بعد از هر تغییر نسخه، فیلدها را دوباره چک کنید. برای ملاحظات نسخه و حافظه در پنل cPanel، مقاله نسخه PHP و memory limit هم کمک می کند. مفهوم این تنظیم ها در هر دو پنل یکی است و فقط محل منوها فرق دارد.

اگر سایت وردپرس شما کند است و فکر می کنید باید فقط حافظه را بالا ببرید، قبلش مقاله افزایش سرعت ووکامرس را ببینید. بیشتر کندی ها با افزایش memory_limit حل نمی شوند.

پیکوهاست هم VPS در ایران ارائه می کند و روی آن می توانید Plesk را با دسترسی root راه اندازی کنید. اگر هنوز بین ایران و خارج مردد هستید، مقایسه VPS ایران و خارج را ببینید.