BLOG · طراحی سایت

حل مشکل آپلود تصویر در وردپرس؛ ۶ علت و راه‌حل

2026/11/07

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

جدول پیام‌های خطای آپلود در وردپرس و علت محتمل هر کدام
پیام خطا را با این جدول به علت نزدیک کنید.

۱. حد مجاز حجم فایل

سقف آپلود یک تنظیم وردپرس نیست؛ تنظیم PHP روی هاست است. مقدار فعلی را در پیشخوان وردپرس از مسیر «ابزارها ← سلامت سایت ← تب اطلاعات ← بخش سرور» می‌بینید. طبق مستندات PHP مقدار پیش‌فرض upload_max_filesize دو مگابایت است و اگر post_max_size کوچک باشد، فایل‌های بزرگ هم آپلود نمی‌شوند.

سه مقدار باید با هم هماهنگ باشند: upload_max_filesize، post_max_size (نباید کمتر از قبلی باشد) و memory_limit (حداقل برابر post_max_size). نمونه‌ی فایل .user.ini یا بخش تنظیمات PHP هاست:

upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M

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

اگر هنگام آپلود خطای ۴۱۳ می‌بینید، محدودیت از وب‌سرور است نه PHP: در Nginx مقدار پیش‌فرض client_max_body_size یک مگابایت است و بالاتر از آن خطای 413 برمی‌گردد.

۲. خطای «HTTP error» و ویرایشگر تصویر

«HTTP error» یک پیام عمومی است و بیشتر وقت‌ها هنگام تولید اندازه‌های کوچک تصویر رخ می‌دهد. دو دلیل رایج دارد: حافظه‌ی PHP کم است، یا کتابخانه‌ی Imagick روی آن هاست مشکل دارد. راه سریع این است که ویرایشگر تصویر را به GD تغییر دهید. این قطعه را در فایل functions.php قالب فرزند یا یک افزونه‌ی کدهای سفارشی بگذارید:

add_filter( 'wp_image_editors', function () {
    return array( 'WP_Image_Editor_GD' );
} );

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

۳. اندازه‌ی پیکسلی عکس

از وردپرس ۵٫۳ به بعد، اگر عرض یا ارتفاع تصویر از ۲۵۶۰ پیکسل بیشتر باشد، وردپرس یک نسخه‌ی کوچک‌شده می‌سازد و آن را به‌عنوان اندازه‌ی «کامل» استفاده می‌کند؛ فایل اصلی دست‌نخورده می‌ماند. پردازش عکس‌های خیلی بزرگ حافظه‌ی زیادی می‌خواهد. بهترین عادت این است که عکس را پیش از آپلود به عرض مناسب (مثلاً ۱۶۰۰ تا ۲۰۰۰ پیکسل) برسانید و فشرده کنید؛ جزئیات را در راهنمای بهینه‌سازی تصاویر برای سئو و سرعت بخوانید.

۴. دسترسی پوشه‌ها، پوشه‌ی موقت و فضای دیسک

PHP برای هر آپلود، ابتدا فایل را در پوشه‌ی موقت می‌نویسد و بعد به wp-content/uploads منتقل می‌کند. اگر هر کدام از این‌ها مشکل داشته باشد، خطا می‌گیرید. طبق مستندات PHP کد خطای ۶ یعنی «پوشه‌ی موقت وجود ندارد» و کد ۷ یعنی «نوشتن فایل روی دیسک ناموفق بود». بررسی کنید:

  • پوشه‌ی wp-content/uploads وجود دارد و برای کاربر PHP قابل نوشتن است (معمولاً دسترسی ۷۵۵ برای پوشه‌ها و ۶۴۴ برای فایل‌ها).
  • مالک فایل‌ها همان کاربری است که PHP با آن اجرا می‌شود؛ اگر سایت را با کاربر دیگری منتقل کرده‌اید، مالکیت را اصلاح کنید.
  • فضای دیسک و سهمیه‌ی (quota) هاست پر نشده باشد.
  • پوشه‌ی موقت PHP (upload_tmp_dir) وجود دارد و قابل نوشتن است.

دسترسی ۷۷۷ را «برای امتحان» روی همه‌چیز نگذارید؛ این کار امنیت سایت را پایین می‌آورد.

۵. نوع فایل مجاز نیست

پیام «این نوع فایل مجاز نیست» یعنی وردپرس فرمت را نمی‌شناسد یا حساب شما اجازه‌ی آپلود آن را ندارد. فایل‌های SVG به‌طور پیش‌فرض مجاز نیستند، چون می‌توانند کد مخرب داشته باشند. فرمت‌های جدید مانند WebP در نسخه‌های به‌روز وردپرس پذیرفته می‌شوند؛ اگر وردپرس شما قدیمی است، اول به‌روزرسانی کنید.

۶. افزونه، قالب یا فایروال

گاهی مشکل از خود وردپرس نیست. افزونه‌های امنیتی، بهینه‌سازی تصویر یا فایروال هاست (مثل ModSecurity) ممکن است درخواست آپلود را قطع کنند. روش کار:

  1. همه‌ی افزونه‌ها را غیرفعال کنید و آپلود را امتحان کنید؛ اگر درست شد، افزونه‌ها را یکی‌یکی فعال کنید تا مقصر پیدا شود.
  2. موقتاً قالب پیش‌فرض وردپرس را فعال کنید.
  3. در فایل wp-config.php لاگ خطا را روشن کنید و پیام واقعی را از wp-content/debug.log بخوانید:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

پس از پایان عیب‌یابی، این سه خط را به حالت قبل برگردانید. در تب Network مرورگر هم می‌توانید ببینید درخواست آپلود با چه کد وضعیتی (۴۱۳، ۵۰۰، ۴۰۳) برگشته است.

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

سؤالات متداول

چرا فقط بعضی عکس‌ها آپلود می‌شوند؟

معمولاً به حجم یا ابعاد پیکسلی فایل برمی‌گردد. عکس‌های سبک آپلود می‌شوند و عکس‌های سنگین به سقف حجم یا حافظه‌ی PHP می‌خورند؛ حجم و ابعاد را کم کنید یا سقف‌ها را بالا ببرید.

حد آپلود را از کجای وردپرس عوض کنم؟

از خود وردپرس نمی‌شود. مقدار از تنظیمات PHP هاست (php.ini، .user.ini یا بخش تنظیمات PHP پنل هاست) تغییر می‌کند و مقدار فعلی در «سلامت سایت ← اطلاعات ← سرور» دیده می‌شود.

خطای HTTP error با افزایش حافظه حل نشد، چه کنم؟

ویرایشگر تصویر را به GD تغییر دهید و تصویر را کوچک‌تر کنید. اگر باز هم خطا ماند، لاگ خطای PHP را بخوانید یا از پشتیبانی هاست بخواهید Imagick را بررسی کند.

آیا باید دسترسی پوشه را ۷۷۷ کنم؟

خیر. ۷۵۵ برای پوشه‌ها و ۶۴۴ برای فایل‌ها کافی است؛ مشکل اصلی معمولاً مالکیت پوشه است نه عدد دسترسی.

منابع

نیاز به کمک دارید؟

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

رزرو مشاوره رایگانپشتیبانی و نگهداری سایت
LET'S TALK

سوالی درباره پروژه‌تان دارید؟

در یک جلسه مشاوره رایگان صحبت می‌کنیم.