SHET27

آپلود فایل حجیم در وردپرس با ۴ روش ساده

آپلود فایل حجیم در وردپرس با ۴ روش ساده

حتماً براتون پیش اومده که یه ویدیو، یه فایل PDF چندصدصفحه‌ای یا یه فایل فشرده رو توی رسانه وردپرس بکشید و به‌جای نوار پیشرفت، با این پیغام روبه‌رو بشید: «اندازه فایل از حداکثر اندازه مجاز بارگذاری برای این سایت بیشتر است.» اولین بار که این خطا رو می‌بینید، ممکنه فکر کنید مشکل از وردپرسه. ولی در بیشتر موارد، ماجرا به تنظیمات هاست برمی‌گرده.

خبر خوب اینه که برای این مشکل چند راه‌حل وجود داره و لازم نیست حتماً برنامه‌نویس باشید. توی این مقاله اول توضیح می‌دیم چرا این محدودیت وجود داره. بعد چهار روش رو با هم مرور می‌کنیم: افزایش محدودیت آپلود، آپلود با FTP و درون‌ریزی فایل به کتابخانه رسانه، استفاده از WP-CLI و در آخر روشی که شاید کمتر بهش فکر کرده باشید؛ اینکه اصلاً فایل رو روی هاست وردپرس نگذارید!

آنچه در این مقاله می‌خوانید

چرا وردپرس اجازه آپلود فایل‌های بزرگ رو نمی‌ده؟

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

upload_max_filesize و post_max_size چی هستن؟

دو تنظیم اصلی که باید بشناسید اینها هستن:

  • upload_max_filesize: حداکثر حجم هر فایلی که می‌شه آپلود کرد.
  • post_max_size: حداکثر حجم کل اطلاعاتی که در یک درخواست به سرور فرستاده می‌شه. این عدد باید برابر یا بزرگ‌تر از upload_max_filesize باشه؛ وگرنه عملاً همون عدد کوچک‌تر ملاک قرار می‌گیره.

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

چطور محدودیت فعلی آپلود سایت‌مون رو ببینیم؟

ساده‌ترین راه اینه که از پیشخوان وردپرس به مسیر رسانه › افزودن فایل رسانه‌ای برید. زیر کادر آپلود، عبارتی مثل «حداکثر اندازه پرونده برای بارگذاری: ۳۰۰ مگابایت» نوشته شده. یا هر عدد دیگه‌ای

حداکثر اندازه پرونده برای بارگذاری
حداکثر اندازه پرونده برای بارگذاری

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

بخش سرور
بخش سرور

روش اول: افزایش محدودیت آپلود

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

از طریق پنل هاست (cPanel یا DirectAdmin)

بیشتر هاست‌های امروزی این تنظیمات رو توی پنل گذاشتن و نیازی به ویرایش فایل نیست. در cPanel معمولاً یکی از این دو بخش رو پیدا می‌کنید:

  • Select PHP Version و بعد تب Options
  • MultiPHP INI Editor

در DirectAdmin هم دنبال گزینه‌ای با عنوان PHP Settings یا Select PHP Version بگردید. اسم دقیق بخش‌ها بسته به نسخه پنل و تنظیمات هاست ممکنه کمی فرق کنه. وقتی پیداش کردید، مقدار upload_max_filesize و post_max_size رو بیشتر کنید (مثلاً 256M) و تغییرات رو ذخیره کنید.

ویرایش فایل php.ini یا ‎.user.ini

اگه پنل‌تون چنین گزینه‌ای نداره، می‌تونید توی پوشه اصلی سایت (معمولاً public_html) یک فایل به اسم php.ini یا .user.ini بسازید، یا اگه از قبل وجود داره، ویرایشش کنید. این خط‌ها رو اضافه کنید:

upload_max_filesize = 256M
post_max_size = 256M
max_execution_time = 300
max_input_time = 300

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

ویرایش فایل ‎.htaccess

روی بعضی سرورهای آپاچی می‌تونید این خط‌ها رو به انتهای فایل .htaccess اضافه کنید:

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

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

وقتی هاست اجازه تغییر نمی‌ده چه کنیم؟

بعضی هاست‌های اشتراکی عمداً این مقادیر رو قفل می‌کنن. در این حالت دو راه دارید: یا به پشتیبانی هاست تیکت بزنید و بخواید سقف آپلود رو بیشتر کنن (خیلی وقت‌ها این کار رو انجام می‌دن)، یا سراغ روش دوم برید که اصلاً به این محدودیت وابسته نیست.

روش دوم: آپلود با FTP و درون‌ریزی فایل به کتابخانه رسانه

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

اتصال به هاست با FileZilla یا فایل منیجر هاست

برای اتصال FTP، برنامه رایگان FileZilla گزینه خوبیه. اطلاعات زیر رو از پنل هاست یا ایمیل خوش‌آمدگویی شرکت هاستینگ پیدا کنید:

  • Host: آدرس سرور یا دامنه سایت
  • Username و Password: نام کاربری و رمز حساب FTP
  • Port: معمولاً ۲۱ برای FTP و ۲۲ برای SFTP

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

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

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

پیشنهاد ما اینه که فایل‌ها رو داخل مسیر public_html/wp-content/uploads آپلود کنید. می‌تونید یک پوشه جدا هم داخلش بسازید (مثلاً ftp-files) تا فایل‌ها مرتب بمونن. دلیلش اینه که افزونه‌های درون‌ریزی به‌خاطر مسائل امنیتی، معمولاً فقط به مسیرهای مشخصی دسترسی می‌دن و پوشه uploads کم‌دردسرترین گزینه است.

معرفی افزونه‌های درون‌ریزی: Add From Server و Add From Server Reloaded

افزونه Add From Server سال‌هاست که برای همین کار استفاده می‌شه و هنوز هم کاربران زیادی داره. ولی باید بدونید که سازنده‌اش اعلام کرده پشتیبانی محدودی ازش انجام می‌ده و نباید انتظار قابلیت جدید یا به‌روزرسانی مرتب داشت. در نسخه‌های جدید هم بعضی تنظیمات قدیمی حذف شدن؛ مثلاً بخش‌های User Access Control و Root Directory که در آموزش‌های قدیمی می‌بینید، دیگه وجود ندارن و الان هر کاربری که اجازه آپلود فایل داشته باشه، می‌تونه از افزونه استفاده کنه.

یه نکته دیگه هم هست: سازنده این افزونه صراحتاً گفته که Add From Server برای آپلود گروهی فایل‌ها، انتقال سایت یا جایگزینی آپلودر وردپرس طراحی نشده. کاربرد اصلیش درون‌ریزی فایل‌هاییه که از سقف آپلود هاست بزرگ‌ترند یا با سرعت اینترنت شما، آپلودشون از مرورگر عملی نیست.

اگه دنبال گزینه‌ای به‌روزتر هستید، Add From Server Reloaded رو هم بررسی کنید. این افزونه امکان درون‌ریزی کل یک پوشه همراه با زیرپوشه‌هاش و تشخیص فایل‌های تکراری رو داره و به‌روزرسانی‌های فعال‌تری می‌گیره. قبل از نصب هر افزونه‌ای، تاریخ آخرین به‌روزرسانی و سازگاری‌اش با نسخه وردپرس‌تون رو در صفحه افزونه چک کنید.

آموزش قدم‌به‌قدم درون‌ریزی فایل‌ها

مراحل کلی برای هر دو افزونه تقریباً یکسانه. اینجا با Add From Server جلو می‌ریم:

  1. از پیشخوان وردپرس به افزونه‌ها › افزودن برید، نام افزونه رو جستجو کنید، نصبش کنید و بعد فعالش کنید.
  2. فایل‌هاتون رو با FTP داخل پوشه wp-content/uploads (یا زیرپوشه‌ای که ساختید) آپلود کنید.
  3. در پیشخوان، از منوی رسانه گزینه Add From Server رو انتخاب کنید.
  4. لیستی از پوشه‌ها و فایل‌های مجاز نمایش داده می‌شه. وارد پوشه‌ای بشید که فایل‌ها رو اونجا گذاشتید.
  5. تیک فایل‌های موردنظر رو بزنید و روی دکمه Import کلیک کنید.
  6. بعد از پایان کار، به رسانه › کتابخانه برید. فایل‌ها اونجا هستن و می‌تونید مثل بقیه رسانه‌ها توی نوشته‌ها و برگه‌ها ازشون استفاده کنید.

اگه پوشه‌ای که فایل‌ها رو توش گذاشتید در لیست نمایش داده نمی‌شه، احتمالاً خارج از مسیر مجاز افزونه است. در این حالت یا فایل‌ها رو به داخل uploads منتقل کنید، یا مسیر دلخواه‌تون رو با ثابت ADD_FROM_SERVER در فایل wp-config.php تعریف کنید:

define( 'ADD_FROM_SERVER', '/home/username/public_html/my-files/' );

مسیر بالا فقط یک مثاله و باید مسیر واقعی سرور خودتون رو جایگزینش کنید.

محدودیت‌ها و نکات این روش

قبل از استفاده، بهتره چند نکته رو بدونید. در نسخه‌های جدید Add From Server، تاریخ فایل‌های درون‌ریزی‌شده همیشه تاریخ امروز ثبت می‌شه؛ مگر اینکه فایل داخل یکی از پوشه‌های تاریخ‌دار وردپرس باشه که در این صورت، اولین روز همون ماه ثبت می‌شه. امکان انتخاب دستی تاریخ هم دیگه وجود نداره.

این افزونه دیگه داخل پنجره افزودن رسانه در ویرایشگر بلوک (گوتنبرگ) نمایش داده نمی‌شه و باید از منوی رسانه سراغش برید. در ضمن اگه فایل‌ها رو داخل چند پوشه مختلف آپلود کنید، این پوشه‌بندی در کتابخانه رسانه ساخته نمی‌شه؛ چون کتابخانه رسانه وردپرس به‌صورت پیش‌فرض پوشه نداره.

روش سوم: درون‌ریزی با WP-CLI (برای کاربران حرفه‌ای)

اگه سرور مجازی یا اختصاصی دارید، یا هاست‌تون دسترسی SSH می‌ده، WP-CLI احتمالاً تمیزترین روش برای این کاره. WP-CLI ابزار خط فرمان رسمی وردپرسه و حتی سازنده Add From Server هم برای درون‌ریزی رسانه، استفاده از اون رو پیشنهاد کرده.

بعد از آپلود فایل با SFTP، وارد پوشه وردپرس بشید و این دستور رو اجرا کنید:

wp media import /home/username/files/video.mp4 --title="Product intro"

برای درون‌ریزی چند فایل هم‌زمان، می‌تونید از علامت ستاره استفاده کنید:

wp media import /home/username/files/*.jpg

اگه فایل از قبل داخل پوشه uploads قرار داره و نمی‌خواید یک کپی دیگه ازش ساخته بشه، گزینه --skip-copy رو به دستور اضافه کنید. برای اتصال فایل به یک نوشته خاص هم گزینه --post_id به کارتون میاد.

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

روش چهارم: فایل رو اصلاً روی هاست وردپرس نگذارید

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

برای ویدیوها معمولاً بهتره فایل رو در سرویس‌های اشتراک ویدیو مثل آپارات یا یوتیوب منتشر کنید و کد جاسازی (embed) اون رو در نوشته بگذارید. برای فایل‌های دانلودی مثل دوره‌های آموزشی، نرم‌افزار یا فایل‌های فشرده هم استفاده از هاست دانلود انتخاب حرفه‌ای‌تریه. اگه با این سرویس آشنا نیستید، مقاله هاست دانلود چیست و چه کاربردی دارد رو بخونید.

کدوم روش برای شما مناسب‌تره؟

برای اینکه راحت‌تر تصمیم بگیرید، روش‌ها رو اینجا کنار هم گذاشتیم:

روشمیزان سختیدسترسی لازممناسب برای
افزایش محدودیت آپلودآسانپنل هاست یا ویرایش فایلفایل‌هایی که کمی از سقف مجاز بزرگ‌ترند
FTP و افزونه درون‌ریزیمتوسطحساب FTPهاست‌های اشتراکی با محدودیت قفل‌شده
WP-CLIنسبتاً سختSSHسرور مجازی و کاربران حرفه‌ای
هاست دانلود یا سرویس ویدیوآسانحساب در سرویس موردنظرویدیوها و فایل‌های دانلودی خیلی حجیم

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

نکات امنیتی و بهینه‌سازی

چند توصیه ساده که دردسرهای بعدی رو کمتر می‌کنه:

  • قبل از آپلود، تصاویر رو فشرده کنید. خیلی از عکس‌ها بدون افت کیفیت محسوس، چند برابر کم‌حجم‌تر می‌شن. فرمت WebP هم انتخاب خوبیه.
  • اسم فایل‌ها رو انگلیسی و بدون فاصله بنویسید. حروف فارسی و کاراکترهای خاص در نام فایل گاهی باعث خطا یا لینک خراب می‌شن. مثلاً product-intro.mp4 از «ویدیو معرفی (نهایی).mp4» خیلی بهتره.
  • بعد از کار، افزونه درون‌ریزی رو غیرفعال کنید. افزونه‌ای که پشتیبانی محدودی داره، بهتره فقط موقع نیاز فعال باشه.
  • از SFTP به‌جای FTP استفاده کنید تا رمز عبور و فایل‌ها به‌صورت رمزنگاری‌شده منتقل بشن.
  • قبل از ویرایش فایل‌هایی مثل .htaccess و wp-config.php بکاپ بگیرید. یک اشتباه کوچک در این فایل‌ها می‌تونه کل سایت رو از دسترس خارج کنه.
  • فایل‌های اضافه رو پاک کنید. اگه افزونه هنگام درون‌ریزی یک کپی از فایل ساخته، نسخه‌ای رو که با FTP آپلود کرده بودید حذف کنید تا فضای هاست بی‌دلیل پر نشه.

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

حداکثر حجم آپلود در وردپرس چقدره؟

وردپرس عدد ثابتی نداره و این مقدار به تنظیمات PHP هاست بستگی داره. برای دیدن عدد دقیق سایت خودتون، به صفحه «افزودن فایل رسانه‌ای» یا بخش «سلامت سایت» سر بزنید.

چرا فایلی که با FTP آپلود کردم در کتابخانه رسانه دیده نمی‌شه؟

چون وردپرس اطلاعات هر رسانه رو در پایگاه داده ثبت می‌کنه و فایلی که مستقیم روی هاست قرار گرفته، هنوز اونجا ثبت نشده. برای نمایش این فایل‌ها باید با افزونه‌ای مثل Add From Server یا با دستور WP-CLI اون‌ها رو درون‌ریزی کنید.

خطای HTTP هنگام آپلود فایل رو چطور برطرف کنیم؟

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

جمع‌بندی

محدودیت آپلود در وردپرس بیشتر از سمت هاسته تا خود وردپرس. اگه فایل‌تون فقط کمی از سقف مجاز بزرگ‌تره، با افزایش upload_max_filesize و post_max_size مشکل حل می‌شه. اگه هاست اجازه این کار رو نمی‌ده، آپلود با FTP و درون‌ریزی فایل با افزونه راه مطمئنیه. اگه به SSH دسترسی دارید، WP-CLI سریع‌ترین و تمیزترین انتخابه. برای فایل‌های خیلی حجیم هم قرار دادن‌شون در هاست دانلود یا سرویس‌های ویدیو، هم به نفع سرعت سایته و هم به نفع هاست‌تون.

شما از کدوم روش استفاده می‌کنید؟ اگه در هر کدوم از این مراحل به مشکلی برخوردید، توی بخش نظرات برامون بنویسید تا راهنمایی‌تون کنیم.

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

  1. U36621۱۱ اسفند ۱۳۹۹

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

    سوالم این بود که؛
    قالب اهورا رُ دانلود کردم لذا روی localhost نصب نمیشه یعنی این پیغام خطا رُ میده:

    “پرونده بارگذاری شده بزرگ‌تر از upload_max_filesize در php.ini است”
    اما روی سایت به صورت آنلاین آپلود میشه لذا خواستم بدونم که ایا بهتر است که نخست این عیب رُ بر طرف کنم یا اینکه خیر، به صورت آنلاین و مستقیم روی سایت نصبش کنم؟
    با تشکر از شما.
    خدا نگهدار

  2. U6469۱ مرداد ۱۳۹۹

    آیا راهی وجود داره که بتونیم فایلهایی که در هاست دانلود آپلود کردیم را به کتابخانه وردپرس اضاف کنیم؟
    این پلاگین فقط میتواند فایلهای درون هاست اصلی (هاستی که وردپرس روی آن نصب است) را به کتابخانه اضاف کند.

    • تیم پشتیبانیتیم پشتیبانی۱ مرداد ۱۳۹۹

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

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

    الان با این روش filezilla یا winscp لازم نیست؟

    • تیم پشتیبانیتیم پشتیبانی۶ آبان ۱۳۹۷

      سلام
      از هر دو میشه استفاده کرد.

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

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

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