FA-TOOLS — Header Component

چرا آپلود عکس در وردپرس با خطا مواجه می‌شود

خطای آپلود عکس در وردپرس معمولاً به دلیل محدودیت حافظه PHP، نادرست بودن سطح دسترسی پوشه‌ها (Permissions) یا تداخل کتابخانه‌های پردازش تصویر سرور رخ می‌دهد. با شناسایی دقیق کد خطا یا نشانه آن، می‌توانید بدون نیاز به تغییر هاست و در کمتر از چند دقیقه این مشکل را به‌صورت ریشه‌ای برطرف کنید.

خلاصه کاربردی:

بیش از ۸۰ درصد خطاهای آپلود تصویر با افزایش حافظه PHP به 256M یا 512M و تنظیم سطح دسترسی پوشه wp-content/uploads روی 755 حل می‌شوند. اگر خطای قرمز رنگ «HTTP Error» را می‌بینید، احتمال زیاد کتابخانه ImageMagick هاست با ابعاد عکس شما دچار مشکل شده است.

۱. خطای مبهم HTTP در زمان آپلود عکس

چرا آپلود عکس در وردپرس با خطا مواجه می‌شود — تصویر 1
پاسخ سریع: خطای HTTP هنگام آپلود عکس معمولاً به دلیل پایان یافتن مهلت زمان اجرا (Timeout) یا کمبود حافظه اختصاص‌یافته به پردازش پیکسل‌های تصویر رخ می‌دهد. برای حل سریع، مقدار memory_limit را در فایل wp-config.php افزایش دهید.

وقتی فایلی را آپلود می‌کنید، وردپرس فقط آن را روی هارد هاست ذخیره نمی‌کند؛ بلکه سیستم پردازش تصویر (Image Processor) وردپرس وارد عمل شده و چندین نسخه با ابعاد مختلف (بزرگ، متوسط، بندانگشتی) از روی فایل اصلی می‌سازد. اگر حجم فیزیکی فایل کم باشد اما رزولوشن آن (مثلاً 4K یا 8K) بسیار بالا باشد، رم مورد نیاز برای باز کردن ابعاد تصویر در حافظه، چندین برابر حجم خود فایل خواهد بود.

برای رفع این مشکل، تکه‌کد زیر را به فایل wp-config.php قبل از خط /* That's all, stop editing! */ اضافه کنید:

define(‘WP_MEMORY_LIMIT’, ‘256M’);

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

۲. خطای سطح دسترسی (Permissions) و مالکیت فایل‌ها

چرا آپلود عکس در وردپرس با خطا مواجه می‌شود — تصویر 2
پاسخ سریع: اگر وردپرس پیام «Unable to create directory» را نشان می‌دهد، سطح دسترسی پوشه wp-content/uploads اشتباه است. مجوز تمام پوشه‌ها باید روی 755 و تمام فایل‌ها روی 644 تنظیم شده باشد.

این مشکل معمولاً بعد از انتقال سایت به هاست جدید یا تغییرات مستقیم توسط مدیر سرور رخ می‌دهد. وب‌سرور (مثل Nginx یا Apache) باید اجازه ساخت پوشه‌های جدید بر اساس سال و ماه میلادی را داشته باشد.

نحوه تصحیح سطح دسترسی از طریق FTP یا کنترل‌پنل هاست (cPanel / DirectAdmin):

  1. وارد مدیریت فایل (File Manager) شوید و به مسیر wp-content بروید.
  2. روی پوشه uploads راست‌کلیک کرده و گزینه Change Permissions را بزنید.
  3. عدد را روی 755 قرار دهید و تیک گزینه اعمال به تمام زیرپوشه‌ها (Recurse into subdirectories) را فعال کنید.
  4. در صورت نیاز، مجوز فایل‌های داخل آن را به‌صورت جداگانه روی 644 بگذارید.

۳. کمبود حافظه PHP Memory Limit در پردازش تصاویر

چرا آپلود عکس در وردپرس با خطا مواجه می‌شود — تصویر 3

بسیاری از کاربران تصور می‌کنند تنها فایل‌های چند مگابایتی باعث فشار به سرور می‌شوند؛ اما حقیقت چیز دیگری است. یک تصویر با فرمت JPG و حجم فقط ۵۰۰ کیلوبایت که رزولوشن 6000×4000 دارد، هنگام پیکسل‌گشایی (Uncompressed Bitmap) در حافظه RAM سرور به بیش از ۱۰۰ مگابایت حافظه آنی نیاز دارد.

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

php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value memory_limit 256M
php_value max_execution_time 300
php_value max_input_time 300

۴. قانون Big Image Threshold و تصاویر بزرگ‌تر از ۲۵۶۰ پیکسل

چرا آپلود عکس در وردپرس با خطا مواجه می‌شود — تصویر 4

از وردپرس نسخه ۵.۳ به بعد، قابلیتی به نام Big Image Threshold معرفی شد. اگر عرض یا ارتفاع تصاویری که آپلود می‌کنید بیشتر از ۲۵۶۰ پیکسل باشد، وردپرس خودکار تصویر را مقیاس‌بندی کرده و نام آن را با پسوند -scaled ذخیره می‌کند.

در برخی هاست‌ها، این فرآیند مقیاس‌بندی سنگین در پس‌زمینه شکست می‌خورد و آپلود نیمه‌کاره می‌ماند. اگر می‌خواهید این محدودیت را کلاً غیرفعال کنید، می‌توانید فیلتر زیر را در فایل functions.php پوسته خود بگذارید:

add_filter( ‘big_image_size_threshold’, ‘__return_false’ );

۵. اختلال در کتابخانه ImageMagick و سوئیچ به GD Library

چرا آپلود عکس در وردپرس با خطا مواجه می‌شود — تصویر 5

وردپرس به‌صورت پیش‌فرض برای تغییر اندازه عکس‌ها ابتدا از کتابخانه ImageMagick استفاده می‌کند و اگر در دسترس نباشد به سراغ GD Library می‌رود. در بسیاری از سرورهای لینوکسی، ImageMagick به دلیل مدیریت نادرست نخ‌ها (Threads) هنگام آپلود هم‌زمان یا فایل‌های با متادیتای پیچیده EXIF دچار هنگ می‌شود.

با اجبار وردپرس به استفاده از کتابخانه GD Library می‌توانید خطای HTTP را به کلی ناپدید کنید. این کد را در فایل functions.php قرار دهید:

function force_use_gd_editor( $editors ) {
    $gd_editor = ‘WP_Image_Editor_GD’;
    $editors = array_diff( $editors, array( $gd_editor ) );
    array_unshift( $editors, $gd_editor );
    return $editors;
}
add_filter( ‘wp_image_editors’, ‘force_use_gd_editor’ );

جدول عیب‌یابی سریع نشانه‌ها و دلایل خطا

نشانه یا پیام خطا دلیل اصلی و راه‌حل استاندارد
HTTP Error (بدون هیچ توضیحی) کمبود حافظه PHP یا باگ کتابخانه ImageMagick. افزایش رم به 256M یا تغییر کتابخانه به GD.
Unable to create directory… مجوزهای نادرست فایل‌سیستم. اصلاح سطح دسترسی پوشه uploads به 755.
Exceeds the maximum upload size… محدودیت حجم در php.ini. افزایش مقادیر upload_max_filesize و post_max_size.
File type is not permitted… عدم پشتیبانی از پسوند فایل (مانند SVG یا WebP در پوسته‌های قدیمی). تنظیم MIME Type در وردپرس.
413 Request Entity Too Large محدودیت در وب‌سرور Nginx. تنظیم عبارت client_max_body_size در کانفیگ سرور.

چنانچه قصد دارید ظاهر کتابخانه رسانه یا نمایش تصاویر سایت خود را سفارشی‌سازی کنید، می‌توانید بخش‌های مربوط به استایل‌دهی سفارشی CSS را نیز مشاهده کنید.

پرسش‌های متداول

آیا نام‌گذاری فارسی فایل‌ها می‌تواند باعث بروز خطای آپلود شود؟

بله، در برخی سرورها که از کاراکترهای UTF-8 در لایه فایل‌سیستم به‌درستی پشتیبانی نمی‌کنند، نام‌های فارسی یا دارای فاصله‌های غیرمجاز باعث شکست در ساخت نسخه مینیاتوری یا نمایش آدرس عکس می‌شوند. همیشه نام فایل‌ها را انگلیسی و بدون فاصله انتخاب کنید.

تفاوت upload_max_filesize و post_max_size چیست؟

پارامتر upload_max_filesize حداکثر حجم یک فایل تک را تعیین می‌کند، درحالی‌که post_max_size کل حجم داده‌های ارسالی در یک فرم را مشخص می‌سازد. مقدار post_max_size همیشه باید بزرگ‌تر یا مساوی upload_max_filesize باشد.

چرا با وجود افزایش رم در wp-config همچنان خطای حافظه می‌گیرم؟

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

آیا افزونه‌های بهینه‌سازی عکس می‌توانند منشا خطای آپلود باشند؟

بله، افزونه‌های فشرده‌سازی خودکار در صورتی که زمان پاسخ‌دهی API آن‌ها طولانی شود یا محدودیت زمان اجرای اسکریپت (Timeout) رخ دهد، فرآیند آپلود وردپرس را با خطا مواجه می‌کنند.

عیب‌یابی سریع

مشکل: خطای ۴۱۳ روی سرورهای Nginx

راه‌حل فوری: وارد فایل کانفیگ Nginx (nginx.conf) شوید و عبارت client_max_body_size 64M; را داخل بلوک http یا server اضافه کنید، سپس وب‌سرور را ری‌بارگذاری نمائید.
مشکل: عدم آپلود تصاویر WebP یا AVIF

راه‌حل فوری: اطمینان حاصل کنید که نسخه PHP هاست شما بالای ۸.۱ بوده و کتابخانه GD با پشتیبانی از WebP کامپایل شده باشد. برای سایر نیازمندی‌های توسعه، مطالعه آرشیو تکه‌کدهای کاربردی می‌تواند ساختار فنی سایت را بهبود بخشد.
مشکل: پر شدن فضای دیسک هاست (Disk Quota Exceeded)

راه‌حل فوری: کنترل‌پنل هاست خود را چک کنید. حتی اگر ۱ مگابایت فضا خالی باشد، وردپرس هنگام ساخت فایل‌های موقت (Temp) با شکست مواجه می‌شود. حتماً فایل‌های اضافه و بکاپ‌های قدیمی را پاک کنید.

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

دلیل اصلی خطای HTTP هنگام آپلود عکس در وردپرس چیست؟

این خطا معمولاً به دلیل کمبود حافظه PHP Memory Limit یا اختلال در عملکرد کتابخانه پردازش تصویر ImageMagick سرور رخ می‌دهد.

سطح دسترسی استاندارد پوشه uploads باید روی چه عددی باشد؟

سطح دسترسی (Permissions) برای تمام پوشه‌ها از جمله uploads باید روی 755 و برای فایل‌های داخل آن روی 644 تنظیم شده باشد.

چگونه حافظه PHP را در فایل wp-config.php افزایش دهیم؟

کافی است تکه‌کد define(‘WP_MEMORY_LIMIT’, ‘256M’); را به فایل wp-config.php قبل از خط تنظیمات پایانی اضافه کنید.

قانون Big Image Threshold در وردپرس چیست؟

وردپرس تصاویری با ابعاد بزرگ‌تر از ۲۵۶۰ پیکسل را خودکار مقیاس‌بندی می‌کند که در صورت ضعف سرور، باعث بروز خطا در آپلود می‌شود.

Table of Contents

آخرین نوشته‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *