English

حل خطای امکان ایجاد شاخه uploads نیست در وردپرس

حل خطای امکان ایجاد شاخه uploads نیست در وردپرس

تا حالا شده بخواید یه فایل ساده آپلود کنید، یه عکس یا یه PDF، کاری که شاید صدها بار انجامش دادید؛ ولی این دفعه به‌جای اینکه فایل بالا بره، یه پیغام قرمز جلوی چشمتون سبز می‌شه: «امکان ایجاد شاخه uploads نیست. آیا شاخه مادر اون با سرور قابل نوشتن هست؟» (تو نسخهٔ انگلیسی هم می‌نویسه: Unable to create directory uploads. Is its parent directory writable by the server?).

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

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

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

جعبهٔ پاسخ سریع: اگه عجله دارید

اگه وقت ندارید کل مقاله رو بخونید و فقط می‌خواید سریع درستش کنید، این سه مرحله رو امتحان کنید؛ برای حدود ۹۰ درصد مواقع انجام همین مراحل کافیه:

۱. با FTP (مثل FileZilla) یا File Manager هاست، برید به مسیر public_html/wp-content/.

مسیر public_html/wp-content/
مسیر public_html/wp-content/

۲. روی پوشهٔ uploads راست‌کلیک کنید و مجوزش (Permissions / Chmod) رو روی ۷۵۵ بذارید. اگه اصلاً پوشهٔ uploads رو ندارید، خودتون بسازیدش و بعد ۷۵۵ رو روش اعمال کنید.

گزینه «File Permissions»
گزینه «File Permissions»

۳. برگردید به وردپرس و دوباره آپلود کنید.

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

خطا امکان ایجاد شاخه uploads نیست یعنی چی و کجا نمایش داده می‌شه؟

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

ماجرا از این قراره که وردپرس همهٔ فایل‌هایی که آپلود می‌کنید، از عکس و ویدیو گرفته تا PDF، رو توی یه پوشه به اسم uploads نگه می‌داره؛ پوشه‌ای که خودش داخل wp-content قرار داره و معمولاً برای هر ماه هم یه زیرپوشهٔ جداگانه می‌سازه. حالا وقتی شما فایلی رو آپلود می‌کنید و این پوشه یا زیرپوشه‌اش وجود نداشته باشه، وردپرس آستین بالا می‌زنه که خودش بسازتش. اما درست همین‌جاست که به دیوار می‌خوره؛ سرور بهش می‌گه «تو اجازهٔ ساختن پوشه اینجا رو نداری» و نتیجه‌اش می‌شه همون پیغام خطایی که دیدید.

حالا بیاید به خود متن خطا یه نگاه دقیق‌تر بندازیم، چون یه سرنخ مهم توش پنهونه. اون قسمتی که می‌گه «آیا شاخه مادر اون با سرور قابل نوشتن هست؟» (همون parent directory تو نسخهٔ انگلیسی) داره به یه نکتهٔ کلیدی اشاره می‌کنه: مشکل لزوماً از خود پوشهٔ uploads نیست، بلکه ممکنه از پوشهٔ بالادستی یعنی wp-content باشه. این یعنی موقع عیب‌یابی نباید فقط روی uploads تمرکز کنید؛ بعداً که برسیم به راه‌حل‌ها، می‌بینید که گاهی باید سراغ مجوزِ همین پوشهٔ مادر هم برید.

این خطا معمولاً دو سه جای مشخص خودش رو نشون می‌ده: وقتی توی کتابخانهٔ رسانه می‌خواید فایل جدیدی بالا ببرید، موقع گذاشتن تصویر شاخص (Featured Image) برای یه نوشته، یا حتی گاهی وقتی یه افزونه یا قالب می‌خواد فایلی روی سرور ذخیره کنه. جای نمایشش هرجا که باشه، ریشهٔ مشکل یکیه و راه‌حلش هم همون‌هاییه که در ادامه می‌گیم.

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

چرا خطای ایجاد شاخه uploads رخ می‌ده؟ (۵ علت اصلی)

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

مجوزهای دسترسی اشتباه روی پوشه

این رایج‌ترین علتیه که با فاصله بیشتر از بقیه پیش می‌آد. روی هاست، هر پوشه و فایلی یه سری عدد به اسم «مجوز دسترسی» (Permission) داره که مشخص می‌کنه چه کسی حق خوندن، نوشتن یا اجرا کردنش رو داره. اگه این عدد برای پوشهٔ uploads یا wp-content اشتباه تنظیم شده باشه، وردپرس عملاً دستش بسته‌ست و نمی‌تونه چیزی توش بنویسه. خبر خوب اینکه همین علتِ پرتکرار، ساده‌ترین راه‌حل رو هم داره که جلوتر کامل توضیحش می‌دیم.

اشتباه بودن مالکیت پوشه روی سرورهای شخصی

این یکی بیشتر گریبان کسایی رو می‌گیره که سایتشون روی سرور مجازی (VPS) یا سرور اختصاصیه. ماجرا اینه که روی این سرورها، وب‌سرور (مثل آپاچی یا Nginx) با یه کاربر مشخص، معمولاً به اسم www-data، کار می‌کنه. حالا اگه پوشهٔ uploads متعلق به یه کاربر دیگه باشه (مثلاً همون کاربری که باهاش با FTP وصل می‌شید)، وب‌سرور با اینکه فنی‌ترین تنظیمات هم درست باشه، باز هم اجازهٔ نوشتن نداره. اینجا دیگه مشکل از عدد مجوز نیست، از «مالکیت» پوشه‌ست.

گم شدن مسیر آپلود بعد از انتقال سایت

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

پر شدن فضای دیسک هاست

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

محدودیت‌های سرور: open_basedir و SELinux

این آخری کمی فنی‌تره و بیشتر روی سرورهای خاص یا هاست‌های با تنظیمات سخت‌گیرانه دیده می‌شه. بعضی سرورها با ابزارهایی مثل open_basedir یا SELinux دسترسی PHP رو محدود می‌کنن؛ یعنی حتی اگه مجوز و مالکیت هم درست باشه، خود سرور از بالا جلوی نوشتن رو می‌گیره. این علت نادرتره، ولی اگه همهٔ راه‌حل‌های دیگه رو امتحان کردید و باز هم نتیجه نگرفتید، احتمالاً پای همین محدودیت‌ها وسطه که در بخش مربوط به پشتیبانی هاست بهش می‌پردازیم.

چطور خطای «امکان ایجاد شاخه uploads نیست» را برطرف کنیم؟

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

روش اول: تنظیم مجوز پوشه uploads روی ۷۵۵ (سریع‌ترین راه)

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

اون عدد جادویی برای پوشهٔ uploads، عدد ۷۵۵ هست؛ دقیقاً همون حد وسطِ طلایی که هم به وردپرس اجازهٔ نوشتن می‌ده و هم در رو روی هر کسی باز نمی‌ذاره. برای تنظیمش این مراحل رو دنبال کنید:

۱. اتصال به هاست: با FTP (مثل نرم‌افزار FileZilla) یا از طریق File Manager توی کنترل‌پنل هاست، خودتون رو به مسیر public_html/wp-content/ برسونید.

مسیر public_html/wp-content/
مسیر public_html/wp-content/

۲. پیدا کردن یا ساختن پوشه: اگه پوشهٔ uploads رو دیدید که چه بهتر. اگه نبود، خودتون یه پوشهٔ جدید با همین اسم دقیق uploads (با حروف کوچیک) بسازید.

ساخت پوشه
ساخت پوشه

۳. باز کردن تنظیمات مجوز: روی پوشهٔ uploads راست‌کلیک کنید و گزینهٔ «File Permissions» یا «Chmod» رو انتخاب کنید.

گزینه «File Permissions»
گزینه «File Permissions»

۴. وارد کردن عدد ۷۵۵: توی پنجرهٔ باز شده، عدد ۷۵۵ رو وارد کنید. حتماً تیک گزینهٔ «Recurse into subdirectories» رو بزنید تا این مجوز روی تمام زیرپوشه‌ها هم اعمال بشه، و بعد «Apply to directories only» رو انتخاب کنید تا این عدد فقط برای پوشه‌ها اعمال بشه (فایل‌ها عدد جداگانهٔ خودشون یعنی ۶۴۴ رو دارن).

مجوز پوشه ها
مجوز پوشه ها

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

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

نکتهٔ مهم: پوشهٔ مادر (wp-content) را هم بررسی کنید. یادتونه اول مقاله گفتیم متن خطا به «شاخهٔ مادر» اشاره داره؟ همین‌جا به کارمون می‌آد. اگه مجوز پوشهٔ uploads رو روی ۷۵۵ تنظیم کردید ولی باز هم خطا رو دیدید، یا اصلاً پوشهٔ uploads وجود نداشت و وردپرس نمی‌تونست بسازتش، احتمالاً مشکل از خود پوشهٔ wp-content هست.

منطقش ساده‌ست: وقتی وردپرس می‌خواد پوشهٔ uploads رو بسازه، باید بتونه توی wp-content بنویسه. اگه wp-content خودش قابل نوشتن نباشه، طبیعتاً ساختن هیچ زیرپوشه‌ای هم ممکن نیست. پس کافیه دقیقاً همون کاری که برای uploads کردید رو برای پوشهٔ wp-content هم انجام بدید: مجوزش رو روی ۷۵۵ تنظیم کنید و دوباره امتحان کنید.

تفاوت هاست اشتراکی و سرور VPS در این مرحله

اینجا یه نکته هست که خوبه بدونید، چون اگه ۷۵۵ براتون جواب نداد، گیج نمی‌شید. روی هاست‌های اشتراکی (همون هاست‌هایی که اکثر سایت‌ها روشون هستن)، معمولاً PHP با همون کاربری اجرا می‌شه که فایل‌ها بهش تعلق دارن؛ برای همین تنظیم مجوز ۷۵۵ تقریباً همیشه کافیه و مشکل حل می‌شه.

اما اگه سایتتون روی یه سرور مجازی (VPS) یا سرور اختصاصیه، ماجرا کمی فرق می‌کنه. اونجا ممکنه وب‌سرور با یه کاربر (مثل www-data) اجرا بشه و فایل‌ها متعلق به یه کاربر دیگه باشن. تو این حالت، عدد ۷۵۵ به‌تنهایی گره رو باز نمی‌کنه، چون اصل مشکل از «مالکیت» پوشه‌ست نه از عددِ مجوز. اگه جزو این دسته‌اید و این روش جواب نداد، اصلاً نگران نباشید؛ راه‌حل دقیقتون رو در روش سوم (تغییر مالکیت با SSH) کامل توضیح می‌دیم.

روش دوم: تعریف دستی مسیر در فایل wp-config.php

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

نگران کد زدن نباشید؛ کاری که می‌کنیم فقط اضافه کردن یه خط به یه فایله، نه بیشتر. مراحلش رو با هم بریم:

۱. پیدا کردن فایل: وارد File Manager هاست یا نرم‌افزار FTP بشید و دنبال فایلی به اسم wp-config.php بگردید. این فایل توی ریشهٔ اصلی سایتتونه، یعنی همون‌جایی که پوشه‌های wp-admin، wp-content و wp-includes رو کنار هم می‌بینید.

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

۳. باز کردن و ویرایش فایل: فایل رو با یه ویرایشگر متنی ساده (مثل Notepad++) باز کنید. حالا به انتهای فایل برید و درست قبل از این خط:

php

require_once(ABSPATH . 'wp-settings.php');

این خط کد رو اضافه کنید:

php

define( 'UPLOADS', 'wp-content/uploads' );
اضافه کردن کد به WP_config
اضافه کردن کد به WP_config

۴. ذخیره و تست: فایل رو ذخیره کنید (و اگه با FTP کار می‌کنید، نسخهٔ ویرایش‌شده رو دوباره روی هاست آپلود کنید) و بعد برگردید به وردپرس و آپلود رو امتحان کنید.

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

روش سوم: تغییر مالکیت پوشه از طریق SSH (مخصوص VPS و سرور اختصاصی)

این روش رو فقط در صورتی لازم دارید که سایتتون روی یه سرور مجازی (VPS) یا سرور اختصاصی باشه و روش‌های قبلی هم جواب نداده باشن. همون‌طور که اشاره کردیم، اینجا مشکل معمولاً از عددِ مجوز نیست، از «مالکیت» پوشه‌ست؛ یعنی پوشهٔ uploads متعلق به یه کاربره، ولی وب‌سرور با یه کاربر دیگه (معمولاً www-data) کار می‌کنه و برای همین اجازهٔ نوشتن نداره. کاری که می‌خوایم بکنیم اینه که مالکیت پوشه رو به همون کاربر وب‌سرور بدیم.

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

۱. اتصال با SSH: اول با استفاده از SSH به سرورتون متصل بشید (مثلاً با نرم‌افزار PuTTY یا ترمینال).

۲. رفتن به مسیر سایت: وارد پوشهٔ wp-content سایتتون بشید. مسیر استاندارد معمولاً یکی از این دو تاست:

bash

cd /var/www/html/wp-content

یا اگه ساختار هاستتون فرق داره:

bash

cd /home/username/public_html/wp-content

۳. تغییر مالکیت پوشه: حالا با این دستور، مالکیت کل پوشهٔ uploads (و همهٔ محتوای داخلش) رو به کاربر www-data بدید:

bash

sudo chown -R www-data:www-data uploads

۴. تنظیم دوبارهٔ مجوز: و در آخر، برای اطمینان، مجوزها رو هم روی ۷۵۵ تنظیم کنید:

bash

sudo chmod -R 755 uploads

بعد از این کار، آپلود رو امتحان کنید؛ این بار باید بدون مشکل انجام بشه.

چطور بفهمیم وب‌سرور با چه کاربری اجرا می‌شود؟

یه نکتهٔ مهم: همیشه کاربر وب‌سرور www-data نیست. این اسم بسته به نوع سرور و نحوهٔ تنظیمش می‌تونه فرق کنه؛ مثلاً اگه از Nginx استفاده می‌کنید، ممکنه کاربرتون nginx باشه، یا روی بعضی سرورها چیز دیگه‌ای. اگه دستور بالا رو با کاربر اشتباه اجرا کنید، نه‌تنها مشکل حل نمی‌شه، بلکه ممکنه گره رو کورتر هم بکنه.

برای همین بهتره اول مطمئن بشید وب‌سرورتون دقیقاً با چه کاربری کار می‌کنه. کافیه این دستور رو اجرا کنید:

bash

ps aux | grep -E 'apache|nginx'

توی خروجی این دستور، ستون اول اسم کاربری رو نشونتون می‌ده که وب‌سرور باهاش در حال اجراست. حالا که اسم درست رو پیدا کردید، تو دستور chown همون رو جایگزین www-data کنید و خیالتون راحت باشه که دارید مالکیت رو به کاربر درست می‌دید.

روش چهارم: استفاده از افزونه برای تنظیم خودکار مجوزها

شاید شما هم جزو اون دسته از کاربرایی باشید که دل‌ودماغ کار با FTP و دستکاری فایل‌های سیستمی رو ندارید، یا می‌ترسید یه جای کار رو اشتباه بزنید. هیچ اشکالی نداره؛ خوشبختانه برای همین کار افزونه‌های رایگانی ساخته شدن که کل ماجرای تنظیم مجوزها رو به‌صورت خودکار و فقط با چند کلیک انجام می‌دن. یکی از معروف‌ترین و قابل‌اعتمادترین‌هاشون افزونهٔ «Reset file and folder permissions» هست.

افزونهٔ «Reset file and folder permissions»
افزونهٔ «Reset file and folder permissions»

نحوهٔ کار باهاش هم خیلی ساده‌ست:

۱. نصب و فعال‌سازی: از پیشخوان وردپرس، به مسیر افزونه‌ها > افزودن برید، عبارت «Reset file and folder permissions» رو جستجو کنید، بعد افزونه رو نصب و فعال کنید.

۲. رفتن به تنظیمات افزونه: حالا از منوی «ابزارها» (Tools)، گزینهٔ «Reset Permissions» رو پیدا و روش کلیک کنید.

۳. انتخاب پوشه و اجرا: اینجا می‌تونید انتخاب کنید که فقط پوشهٔ uploads پردازش بشه یا کل پوشه‌های وردپرس به حالت استاندارد برگرده. بعد از انتخاب، روی دکمهٔ «Process Folders» بزنید.

افزونه در عرض چند ثانیه همهٔ مجوزها رو روی مقادیر امن و استاندارد تنظیم می‌کنه؛ یعنی ۷۵۵ برای پوشه‌ها و ۶۴۴ برای فایل‌ها. این یعنی دیگه لازم نیست نگران باشید عددی رو اشتباه وارد کرده باشید.

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

روش پنجم: بررسی تنظیمات رسانه و مسیر آپلود در پیشخوان

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

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

حالت اول: اگه فیلد مسیر آپلود توی پیشخوان نمایش داده می‌شه

۱. وارد پیشخوان وردپرس بشید و به مسیر تنظیمات > رسانه (Settings > Media) برید.

۲. اگه فیلدی به اسم «Store uploads in this folder» یا چیزی شبیه به این دیدید، محتواش رو نگاه کنید.

۳. اگه این فیلد یه مسیر اشتباه یا قدیمی توش نوشته شده، یا کاملاً خالیش کنید (تا وردپرس به مسیر پیش‌فرض خودش برگرده) یا مسیر درست یعنی wp-content/uploads رو توش بذارید. بعد تغییرات رو ذخیره کنید.

حالت دوم: اگه این فیلد توی پیشخوان نیست

تو نسخه‌های جدید، این مقدار توی دیتابیس و در گزینه‌ای به اسم upload_path ذخیره می‌شه. برای بررسی و اصلاحش:

۱. از کنترل‌پنل هاست، وارد phpMyAdmin بشید و دیتابیس سایتتون رو انتخاب کنید.

۲. سراغ جدول wp_options برید (ممکنه پیشوند wp_ توی سایت شما چیز دیگه‌ای باشه).

۳. توی این جدول دنبال ردیفی بگردید که توی ستون option_name نوشته upload_path.

۴. مقدار ستون option_value رو نگاه کنید. اگه یه مسیر اشتباه توش بود، یا خالیش کنید یا روی wp-content/uploads تنظیمش کنید و ذخیره کنید.

یادآوری: قبل از هر دستکاری توی دیتابیس، حتماً ازش یه نسخهٔ پشتیبان (Export) بگیرید. دیتابیس قلب سایت شماست و بهتره با احتیاط کامل باهاش کار کنید.

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

روش ششم: تماس با پشتیبانی هاست و بررسی لاگ‌های خطا

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

اول، نگاهی به لاگ خطا بندازید

سرور هر خطایی که پیش می‌آد رو معمولاً توی یه فایل به اسم error_log ثبت می‌کنه و همین فایل می‌تونه دقیقاً بهتون بگه مشکل از کجاست. این فایل معمولاً توی پوشهٔ اصلی هاست یا داخل public_html پیدا می‌شه. بازش کنید و دنبال خطاهایی بگردید که توشون عبارت‌هایی مثل open_basedir یا Permission denied اومده. دیدن این عبارت‌ها بهتون نشون می‌ده که با یه محدودیت سطح سرور طرفید، نه یه مشکل ساده.

بعد، با پشتیبانی هاست تماس بگیرید

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

ولی به‌جای اینکه فقط بگید «سایتم کار نمی‌کنه»، دقیق و فنی توضیح بدید تا سریع‌تر کمکتون کنن. مثلاً می‌تونید این پیام رو براشون بفرستید:

«سلام، هنگام آپلود فایل در وردپرس با خطای “Is its parent directory writable by the server” روبه‌رو می‌شم. لطفاً بررسی کنید آیا محدودیتی روی open_basedir، SELinux یا ساخت پوشه و نوشتن فایل توسط PHP وجود داره؟ همچنین لطفاً مالکیت پوشهٔ wp-content/uploads رو هم بررسی و در صورت نیاز اصلاح کنید.»

این پیام دقیقاً به پشتیبانی می‌گه که شما کاربر واردی هستید و مشکل رو می‌شناسید؛ همین باعث می‌شه به‌جای راهنمایی‌های کلی، مستقیم برن سراغ اصل ماجرا.

یه راه ساده که گاهی معجزه می‌کنه

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

جدول خلاصه: مقایسهٔ سریع همهٔ راه‌حل‌ها

اگه بخواید یه نگاه کلی به همهٔ روش‌ها داشته باشید و سریع تصمیم بگیرید کدوم به دردتون می‌خوره، این جدول کارتون رو راه می‌ندازه:

روشسختی اجراشانس موفقیتزمان لازممناسب برای
تنظیم مجوز روی ۷۵۵آسونخیلی بالاحدود ۱ دقیقههمه، مخصوصاً هاست اشتراکی
تعریف مسیر در wp-config.phpآسونمتوسطحدود ۲ دقیقهبعد از انتقال سایت
تغییر مالکیت با SSHحرفه‌ایبالاحدود ۳ دقیقهکاربران VPS و سرور اختصاصی
استفاده از افزونهخیلی آسونمتوسطحدود ۲ دقیقهکسانی که با فایل‌ها کار نمی‌کنن
بررسی تنظیمات رسانهآسونمتوسطحدود ۲ دقیقهبعد از انتقال یا تغییر دستی
تماس با پشتیبانی هاستخیلی آسونبالابستگی به پاسخگویی پشتیبانیوقتی بقیهٔ راه‌ها جواب نداده

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

۶ نکتهٔ طلایی برای اینکه دیگه با این خطا روبه‌رو نشید

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

۱. دور عدد ۷۷۷ را خط بکشید. این رو دیگه می‌دونید، ولی آن‌قدر مهمه که ارزش تکرار داره. هیچ‌وقت برای حل سریع مشکل، مجوز پوشه‌ها رو روی ۷۷۷ نذارید. همیشه ۷۵۵ برای پوشه‌ها و ۶۴۴ برای فایل‌ها، استانداردِ امن و درستیه که باید بهش پایبند بمونید.

۲. یک سیستم پشتیبان‌گیری منظم داشته باشید. با یه افزونهٔ خوب مثل UpdraftPlus به‌صورت خودکار از سایتتون نسخهٔ پشتیبان بگیرید. این‌طوری اگه روزی هر خطایی پیش اومد، به‌جای استرس، فقط کافیه سایت رو به آخرین نسخهٔ سالمش برگردونید.

۳. موقع انتقال سایت، از ابزارهای حرفه‌ای استفاده کنید. خیلی از این خطاها بعد از یه مهاجرت ناشیانه پیش می‌آن. افزونه‌هایی مثل All-in-One WP Migration یا Duplicator خودشون مسیرها و مجوزها رو درست تنظیم می‌کنن و جلوی همین دردسرها رو می‌گیرن.

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

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

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

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

آیا تنظیم مجوز روی ۷۷۷ خطرناک است؟

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

اگر پوشهٔ uploads را اصلاً ندارم، چه کنم؟

خیلی ساده، خودتون بسازیدش. توی FTP یا File Manager هاست، داخل پوشهٔ wp-content یه پوشهٔ جدید با همین اسم دقیق uploads (با حروف کوچیک) درست کنید و بعد مجوزش رو روی ۷۵۵ تنظیم کنید. از این به بعد وردپرس خودش فایل‌ها رو داخلش می‌ذاره.

آیا این خطا به خاطر حجم بالای فایل است؟

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

چرا بعد از مدتی دوباره خطا برمی‌گردد؟

اگه خطا رو حل کردید ولی دوباره برگشت، به احتمال زیاد یه افزونهٔ امنیتی یا یه کرون‌جاب خودکار داره مجوزها رو به حالت قبلی برمی‌گردونه. تنظیمات افزونه‌های امنیتیتون (مثل Wordfence) رو بررسی کنید، یا از پشتیبانی هاست بخواید مالکیت فایل‌ها رو به‌صورت ریشه‌ای اصلاح کنه تا مشکل تکرار نشه.

آیا با تغییر نسخهٔ PHP مشکل حل می‌شود؟

در موارد نادر بله. بعضی وقت‌ها نسخه‌های خیلی قدیمی PHP (مثل ۵.۶) با سرورهای جدید سازگاری خوبی ندارن و باعث چنین خطاهایی می‌شن. اگه روی نسخهٔ قدیمی هستید، امتحان کردن یه نسخهٔ به‌روزتر مثل ۸.۰ یا ۸.۱ از کنترل‌پنل هاست ضرری نداره.

اگر دسترسی SSH ندارم، چطور مالکیت را تغییر دهم؟

اصلاً نگران نباشید. کافیه از پشتیبانی هاستتون بخواید این کار رو براتون انجام بده. فقط دقیق بهشون بگید: «لطفاً مالکیت پوشهٔ wp-content/uploads رو به کاربر www-data (یا کاربر وب‌سرور) تغییر بدید.» این کار برای اونا فقط چند ثانیه طول می‌کشه.

جمع‌بندی

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

بهترین نقطهٔ شروع، تنظیم مجوز ۷۵۵ روی پوشهٔ uploads (و در صورت نیاز، پوشهٔ wp-content) هست؛ ساده‌ترین، امن‌ترین و پرطرفدارترین راه‌حل که برای بیشتر کاربرها همون اول کار رو تموم می‌کنه. اگه جواب نداد و تازه سایتتون رو منتقل کرده بودید، سراغ تعریف دستی مسیر توی wp-config.php یا بررسی تنظیمات رسانه برید. و اگه روی سرور VPS یا اختصاصی هستید، احتمالاً ماجرا به مالکیت پوشه برمی‌گرده که با چند دستور سادهٔ SSH حل می‌شه. در نهایت هم اگه هیچ‌کدوم جواب نداد، پشتیبانی هاست همیشه پشتتونه.

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

امیدوارم این مقاله کمکتون کرده باشه که خطا رو برای همیشه از سرِ راهتون بردارید. حالا نوبت شماست: کدوم روش براتون جواب داد؟ یا شاید راه‌حل دیگه‌ای دارید که اینجا بهش اشاره نکردیم؟ خوشحال می‌شیم تجربه‌تون رو توی بخش نظرات با ما و بقیهٔ کاربرا در میون بذارید. موفق و پیروز باشید! 🙂

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

گفتگو با تیم فروش سلام! دنبال پاسخ برای سوالات خود هستید؟ ما اینجا آماده کمک به شما هستیم...

در حال بارگذاری مقالات...

پشتیبان گفتگو با تیم فروش
پشتیبان گفتگو با تیم فروش در حال حاضر آفلاین هستیم. لطفاً پیام بگذارید تا در اولین فرصت پاسخ دهیم. آفلاین

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

سوالی درباره محصولات سایت دارید؟ از ما بپرسید.