الحل النهائي لمشكلة رفع الملفات لمدونة ووردبريس 3.3

آخر تحديث 19 ديسمبر 2016بواسطة - wait... مشاهدة/ 31 تعليق
الحل النهائي لمشكلة رفع الملفات لمدونة ووردبريس 3.3

السلام عليكم ورحمة الله وبركاته

شرح حل مشكل رفع الملفات بالنسبة لووردبريس 3.3 والنسخة السابقة لمن يعاني من هذا الامر وقد تحدث عنه مؤخرا في تدوينة بعنوان حل مشكلة رفع الصور في ووردبريس 3.3 والتي ابديت فيها حيرتي بسبب المشكل والتي كانت بخصوص دوال PHP التي تم تعطيلها وقد كان بالفعل هذا  هو السبب الرئيسي لهذه المشكلة التي كلما افتكرتها كلما حاولت مرار وتكرار ايجاد حل لها وايضا ما دفعني لهذا هو ان بعض الاخوة اصبحوا يفضلون الرجوع الى النسخة القديمة لعدم وجود حل لهذه المشكلة.  وحتى المواقع الاجنبية لم تكن بها حلول ايجابية. ما عدا حل واحد في منتدى ووردبريس الرسمي طرحة العضو robhough لم انتبه له بتاتا حتى مررت به اليوم والذي جعلني اتذكره هو حديث عن تفعيل الوضع الامن في الاستضافت العربية ومشاكله الكتيرة. المهم الحل سيطرح مباشرة لاننا عرفنا سبب المشكل مسبقا

اخوان المرجوا الانتباه الى امر مهم هذا الحل يخص فقط الاشخاص الذين يعانون المشكل المشار اليه في الصور اسفله يعني لما يرفعون الصورة تطلع بحجم 0x0 او لا ترفع اصلا
broken upload wordpress 3.3 - مجلة ووردبريس

حل مشكل رفع الملفات

بطبيعة الحال هو تعطيل الوضع الامن (Safe Mode) والطريقة سهلة وبسيطة وستكون باستعمال php.ini و htaccess. كل ما عليك هو اتباع الخطوات التالية :

الخطوة الاولى

قم بانشاء ملف باسم php.ini في المجلد الرئيسي للمدونة مع مراعات مسار مجلد ووردبريس كل واحد واين يركب ووردبريس فهناك من يستعمل مجلد فرعي وهناك من يستعمل نطاق فرعي المهم بعد انشاء الملف نقم بنسخ الكود التالي داخله :

safe_mode = Off
upload_tmp_directory = /home/User/public_html/wp-content/tmp

المهم السطر الاول قمنا بتعطيل السيف مود. بالنسبة لسطر الثاني قمنا بتحديد مجلد tmp الذي سيوضع فيه الملفات المؤقت التي تحدثنا عنها في حل مشكلة عرض اتصال FTP هنا يجب عليك انشاء هذا المجلد واعطائه التصريح 775 او 777 ولا تنسى تغيير اليوزر (User) حسب مسار موقعك

المهم في هذه الحال السيف مود سيتم تعطيله فقط في المجلد الرئيسي لهذا سنحتاج لطريقة سريعة لتطبيق هذا الامرعلى جميع المجلدات الفرعية والحل هو التالي

الخطوة التانية

هنا سنقوم بحماية ملف php.ini لمنع الوصول اليه وتطبيق الملف php.ini على جميع المجلدات الفرعية باستعمال htaccess كل ما عليك هو انشاء ملف باسم htaccess لا تنسى ان تتاكد من وجود ملف مسبقا وبعدها قم باضافة الكود التالي :

<Files php.ini>
order allow,deny
deny from all
satisfy all
</Files>

suPHP_ConfigPath /home/user/public_html

قمنا اولا بحماية الملف بمنع الوصول اليه سواء من داخل السيرفر او خارجه ثانيا قمنا باستعمال موديل suPHP الخاص بال Apache لتطبيق ملف php.ini على جميع الملفات والمجلدات الفرعية وللمزيد حول هذا الموديل يرجى مراجعة صفحة الاعدادات للموقع الرسمي suPHP Apache module هذا كل شيء ومبروك عليكم حل المشكل

اذا طلع الخطاء 500 Internal Server Error فاعلم ان الموديل suPHP Apache module غير مفعل في السيرفر قم بازالة السطر الاخير من php.ini ولكن في هذه الحالة لن تنجح الطريقة الا اذا قمت بنسخ ملف php.ini في جميع المجلدات والله يعينك
ملاحظة مهمة الذي لم تنفع معه الطريقة لازم يراسل الاستضافة لكي يقوم له بهذه العملية لانه لابد ان يكون مفعل php.ini في حسابك

نهاية الارسال

كان شكي في مكانه بالنسبة للوضع الامن (Safe Mode) والحمد لله اني وجدت حل لان المشكل ارهقني وحيرني في نفس الوقت لكن مع بعض التجارب اشتغلت الطريقة. الى هنا انتهينا من مشكلة رفع الملفات اتمنى ان يكون الحل مفيدا لكم والى اللقاء في تدوينة اخرى ان شاء الله

والسلام عليكم ورحمة الله وبركاته

الحل النهائي لمشكلة رفع الملفات لمدونة ووردبريس 3.3 بواسطة مجلة ووردبريس, يمكنك نقل ومشاركة التدوينة مع ذكر المصدر الأصلي للموضوع ، مع رابطه, التدوينة مرخصة بموجب المشاع الابداعي Creative Commons A-NC-SA 3.0.
2011-12-26T19:15:46+00:00
2016-12-19T14:57:14+00:00

التعليقات31 تعليق

  • عبد الحفيظ

    سؤال مهم للغاية
    قبل مدة طلبت من مستضيفي تعطيل الوضع الآن لموقعي فقط فواقك لكنه نصحني بشدة بعدم القيام بتلك الحطوة لان فيها خطرا على موقعي فحيبه سيكون مفتوحا و معرضا لهجمات الإختراق بسهولة ، السؤال : هل هناك خطر في تعطيل الوضع الآمن ؟

    • معاذ

      اخي العزيز عبد الحفيظ
      الخطر الذي يتحدث عنه صاحب الاستضافة سيكون داخلي 100% وهذا راجع للمواقع الموجودة معك في الاستضافة والسكريبتات المركبة عليها
      بالنسبة لك ووردبريس دائما ما توجد ترقية جديدة وتغراته قليلة يعني ان كنت ترقي مدونتك بشكل مستمر فلا داعي لتفعيل السيف مود
      المهم حتى اذا اصر صاحب الاستضافة فقله ان يرقي اصدار ال php بشكل مستمر ويجري بحث في هذا المجال لانه اذا جلس يعطل كل دالة فهذا يعني ان php تم توقيف تطويره وحمايته من زمان
      وهذا مشكل مديري الاستضافات العربية وبعض الاستضافات الاجنبية لا يقومون بالبحث عن حلول اصلية للمشاكل وانما يبحثون فقط عن الحلول الامنية والتي غالبا ما تكون تعطيل خدمة ما وليس ترقيعها
      المهم اخي العزيز عبد الحفيظ الامر مشبك ومعقد نوعا في حماية السيرفرات لهذا الاغلب تجده ينصح بتعطيل safe mode

  • نشوان دعقان

    شكراً جزيلاً لك صديقي معاذ على الجهود المبذولة واتمنى ان تفيد كل من يعني من هذه المشكلة ، الي بحمد لله لم تحصل لي 🙂

    عادة انا لا ألوم الإستضافات العربية على تفعيل الوضع الآمن خصوصاً ان أغلب المستخدمين العرب لا يهتمون بمدى مصداقية السكربتات التي يقومون بتنصيبها على مواقعهم .

    ولكن ما أستغرب منه هو التعارض بين الووردبريس و الوضع الآمن و المفترض أن لا تحصل مثل هذه المشاكل بحسب كلام موقع الووردبريس .

    http://codex.wordpress.org/Answers-Installation#Safe_Mode

    دمت بود

    • معاذ

      العفو ويا مرحبا بك اخي العزيز نشوان ان شاء الله تكون بخير
      بالنسبة الاستضافت العربية عيبها انهم يقومون بتعطيل دوال تم ترقيعها من زمان وايضا يتم تعطيل دوال ما لها اي خطورة بدون مبرر
      بالنسبة للوضع الامن الذي يتحدث عنه الموقع الرسمي للوردبريس اذا تم تعطيل الدوال التي تكون افتراضية في الوضع الامن مثلا الدوال الموجودة هنا
      http://www.php.net/manual/en/features.safe-mode.functions.php
      ستجد ملاحظات على كل دالة وستلاحظ ان بعض الدوال ان كان الوضع الامن مفعل فليس لها اي تاتير يعني لو كان بعض الاضافت في ووردبريس تستعملها فلن تقوم هذه الاضافات بالدور اللازم.
      اما اذا قمت بتعطيل مثلا هذا الكم من الدوال كما يفعل اصحاب الاستضافات العربية بدون ادنى فكرة عنها وعن عملها فهذا ما يسمى “اللامبالاة”

      symlink,shell_exec,exec,proc_close,proc_open,popen,system,dl,passthru,escapeshellarg,escapeshellcmd,posix_getgid,posix_getgrgid,dl,exec,pclose,proc_nice,proc_terminate,proc_get_status,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,hypot,pg_host,pos,posix_access,posix_getcwd,posix_getservbyname,myshellexec,getpid,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mknod,posix_setgid,posix_setsid,posix_setuid,posix_times,posix_uname,ps_fill,posix_getpwuid,global,ini_restore,zip_open,zip_read,rar_open,bzopen,bzread,bzwrite,apache_get_modules,apache_get_version,phpversionphpinfo,php_ini_scanned_files,get_current_user,error_log,disk_total_space,diskfreespace,leak,imap_list,hypo,filedump,gethostbyname,safe_mode,ob_clean,getmygid,php_uname,apache_getenv,apache_setenv,bzread,bzwrite,posix_access,bzopen,phpini,highlight_file,show_source,sscanf,dos_conv,get_current_user,get_cwd,error_log,dir,cmd,e_name,vdir,get_dir,only_read,ini_set
      

      اخي نشوان هذا الموضوع يحتاج بحث معمق ومفصل اذا كان الواحد يهتم لعملائه وجودة الاستضافة
      اعطيك مثال الشركات الكبرى مثل hostgator تعمل فريق خاص فقط php وحمايته يطلع على كل صغيرة وكبيرة في هذا المجال يعني كل ما كان هناك تغرات او تحديثات يتخدون اجرائات بخصوصها . ولهذا تجدهم لا يعطلون الا بضع دوال مثل dl على ما اذكر وقليلا ما تجد احد يشتكي بخصوص مشاكل ووردبريس

      واتمنى صراحة يجي يوم ويصير فقط عندي سيرفر خاص بي وليس لاحد لكي اقوم بتجارب الحماية عليه لان التجارب في الاول دائما ما تنتهي بالفشل ومع مواصلة التجارب سنجد حلول ان شاء الله
      بالتوفيق اخي نشوان في هذا المجال وفي حياتك

  • محمد ضو

    هل ينفع ارجع للأصدار الاقدم للوردبريس !!! .. ولو ينفع ياريت الطريقة وشكراً

    • معاذ

      ممكن اخي العزيز بس لا انصحك بهذا والامر يرجع لك في الاخير
      اذا تبي ترجع النسخة القديمة خذ نسخة من المدونة والقاعدة الحالية وبعدها قم بتحميل النسخة 3.2.1
      وقم بترقية يدوية لمدونة القي نظرة على الشرح التالي طرق ترقية ووردبريس علشان تفهم لا تنسى ترقية القاعدة كمان بهذه الطريقة راح ترجع الملفات القديمة

  • منارة سورية

    مرحبا ما المقصود بال User
    حتى اقوم بتعديله
    شكرا سلفا

    • معاذ

      العفو اخي العزيز
      المقصود بال USER اسم العضوية في cpanel اي اسم الدخول الى لوحة التحكم

  • عالم الويب العربي

    شكرا لك اخي معاذ و هذي المشكلة عندي لكن لحد الان لم اجد لها حل
    راح اجرب هذي الطريقة الان + قبل ذالك يا ريت تقرا رسالة التي ارسلتها لك قبل شويا
    تحياتي

    • معاذ

      العفو اخي العزيز خالد ان شاء الله تنفع معك الطريقة
      قراتها اخي

  • نديم عاشور

    كلها حلول صعبة ليش ما تنزل حل بسيط و نجح عندي
    غير صلاحية ملف uploads الى 777
    بس
    و اذا ما نجح غير صلاحية الملفات اللي بداخله
    و بس
    جرب هذا الحل و ردلي خبر
    سلاام

    • معاذ

      يا اخي كل استضافة ولها اعداداتها الخاصة بال php
      ولو كان الحل فقط في اعطاء تصريح 777 الى uploads ما كتبت هذه التدوينة
      وعلى فكرة كيف راح اغير التصريح والملفات اصلا لا ترفع
      احمد ربك انك ما وجدت هذه المشكلة في استضافتك
      وعليكم السلام

  • نديم عاشور

    ههههههه صديقي يبدو انك فهمتني غلط
    انا لم اقول اني لازم اغير تصريح الملفات المرفوعة
    لبقد قلت قم بتغيير تصريح ملف uploads الى 777
    و قد وجدت المشكله لدي قمت بعمل جميع الحلول و لم تنجح في النهاية قررت تغير التصريح فنجحت الطريقة

    • معاذ

      لكن شو معنى “اذا ما نجح غير صلاحية الملفات اللي بداخله”
      يوجد معنى واحد اخي لهذه الجملة حسب سياق التعليق الذي كتبت
      لاحظ في تعليقي وراح تجد اني جاوبتك بحسب معنى الجملة
      كيف راح اغير التصريح والملفات اصلا لا ترفع
      المهم اخي شكرا لطرحك هذا الحل 🙂

  • نديم عاشور

    بصراحة اخي انا ندمت اني قمت بالتعليق على الموضوع يبدو انك تريد فقط اثبات طريقتك اما طريقتي فانها خاطئة
    انا بقلك ادخل على ملف
    wp-content
    ستجد فيها ملف
    uploads
    غير تصريحه الى 777
    لا اقصد بان تغير تصريح كل ملف تقوم برفعه لانك لن تجده
    تحياتي

    • معاذ

      اخي اندم او لا تندم الامر يرجع اليك ولا تعلق على شيء لم تفهم عن ماذا يتحدث اصلا
      وانصحك باعادة قرائة التدوينة لتفهم لب المشكل مو فقط انك سامع عن حل اعطاء تصريح 777 لمجلد uploads وتجي تقولي طريقتي وانت اصلا لا تميز بين المجلد والملف
      سلام ولا توجع لي راسي

  • نديم عاشور

    لم اسمع عن هذا الحل ادبا و انا اميز بين المجلد و الملف
    شكرا لك

  • منارة سورية

    مرحبا اشكرك على تعبك بأيجاد الحل المناسب لكن قمت بعمل المقاله بالحرف لكن لم تنفع هل هناك حل اخر لو في حل ارجو ان تساعدني قبل العودة للاصدارالاقدم

    • معاذ

      عذرا اخي العزيز نسيت ارد عليك
      المهم اخي قم باستبدال فقط الملف file.php الموجود في المسار wp-admin/includes بملف من النسخة 3.2.1 وراح تنحل المشكلة

  • Dawn birth

    السلام عليكم ورحمة الله وبركاته
    ===================
    أولا جزاكم الله خيرا أخي على هذا المجهود في البحث عن حل المشكلة
    بالنسبة لي المستضيف مفعل الوضع الآمن ولا يمكنني تعطيله بهذه الطريقة لانه غير مفعل php.ini عندي ولكن المشكلة تم حلها بالطريقة الموجودة في تعليقك هذا في التدوينة السابقة بالتعديل على ملف wp-config.php :
    https://www.mwordpress.net/2011/12/solve-the-problem-of-uploading-images-in-wordpress-3-3/#comment-1093
    أحببت ان اضيف ايضا اني قبل ان احلها بهذه الطريقة قمت حلها عن طريق التعديل في ملف file.php الموجود في المسار التالي:
    wp-admin/includes/file.php
    فقط قمت بتغيير دالة wp_handle_upload وارجاعها – هذه الدالة فقط – الى النسخة السابقة من وورد بريس 3.2 وهذه الدالة هي السبب الرئيسية في المشكلة بسبب تغيير بسيط في طريقة نقل الملف الى مجلد uploads ويمكنكم الاطلاع على التغيير في هذه الدالة في هذا الرابط :
    http://core.trac.wordpress.org/changeset?old_path=%2Ftags%2F3.2%2Fwp-admin%2Fincludes%2Ffile.php&old=19721&new_path=%2Ftags%2F3.3.1%2Fwp-admin%2Fincludes%2Ffile.php&new=19721

    • معاذ

      وعليكم السلام ورحمة الله وبركاته
      اللهم امين اخي العزيز
      بالنسبة اخي العزيز لمشكلة php.ini انا ايضا وقعت في هذه المشكلة امس عندما كنت احاول حل المشكلة احد الاصدقاء فقمت بتغيير مجلد tmp وايضا ملف file.php لان المشكلة كانت في الدالة touch المعطلة والتي يستعملها الملف فقلت اجرب انسخة القديمة لملف file.php المتواجدة في اصدار 3.2 فنجحت الطريقة
      على فكرة اخي العزيز انا قمت بتغير الملف بالكامل وليس فقط الدالة wp_handle_upload لان الخطاء الذي كان يطلع بسبب الدالة touch
      ومشكور على مرورك العطر وتنبيهك للحل

  • منارة سورية

    السلام عليكم
    اخي الكريم قمت بأسبدال الملف file.php
    من نسخة 3.2 وهو يعمل بشكل ممتاز
    هل هناك تعديلات اخرى تحياتي لكم

    • معاذ

      وعليكم السلام ورحمة الله وبركاته
      اذا كانت ترفع الملفات بدون مشاكل فلا تحتاج لاي اعدادات اخرى

  • Ramez

    أخي العزيز … يوجد حل ثاني بالنسبة للصور فقط ….
    بكل بساطة غير تصريح مجلد Uploads الى 777

    ——–

    عالعموم اظن سبب هذه المشكلة هو تعطيل دالة اسمها glob
    وتعطل من معظم الإستضافات لأسباب أمنية … وأظن تفعيلها يحل المشكلة ككل والله أعلم …..

    ——

    ربي يبارك بك على هذا الحل الجميل

    • معاذ

      يا اخي رامز لو كان الحل في اعطاء تصريح 777 ما كتبت هذه التدوينة المشكلة ان الاستضافت تختلف في اعدادتها ل php

      عالعموم مشكور اخي العزيز على مرورك العطر والله يبارك فيك

  • الاسم مدرك بيدوسي

    شكرا على الاقتراح للحل.
    لكن لم يكن لدي مشاكل في ووردبرس 3.0 او 3.2 او 3.3

    • معاذ

      العفو اخي العزيز ربما الاستضافة عندك لم تقم بتفعيل السيف مود

  • سعيد الغامدي

    السلام عليكم ورحمة الله وبركاته

    الله يجزاك الجنة قول آمين

    اخي الكريم قمت بأسبدال الملف file.php
    من نسخة 3.2 وهو يعمل بشكل ممتاز

    ماقصرت الله يعطيك العافية ويجزاك الجنة على ماتقوم به فعل الخير ويكثر من امثالك .

    • معاذ

      وعليكم السلام ورحمة الله وبركاته
      العفو اخي العزيز
      اللهم امين والله يجازيك انت ايضا الجنة

  • ناصر

    كلمات الشكر لا توفيك حقك أخي الكريم ، لقد قضيت أكثر من أسبوعين في المواقع الأجنبية أبحث عن حل ، و لم أتوقع أبداً أن اجد الحل بأيادي عربية. أشكرك جزيل الشكر و وفقك الله دائما و زادك علماً

    • معاذ

      العفو اخي العزيز ناصر
      اللهم امين اخي وانت ايضا وفقك الله وزادك علما ورزقا

أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *


شروط التعليق :

1 - المرجوا الابتعاد عن كتابة تعليقات بنمط (يعطيك العافية)، (روعة)، (ممتاز)، (مشكوووور)، (ابداع).

2 - زاوية التعليقات هي جزء مكمّل للموضوع الذي قرأته للتو. حاول أن تحصر تعليقك في صلب الموضوع حتى نستثمر هذا التعليق لكسب المزيد من الفائدة سواءً عن طريق مناقشة الموضوع أو عن طريق إضافة معلومات مكمّلة أو إبداء ملاحظات أخرى في نفس السياق.

معاذ أشملي مشرف موقع (212) 689-383-644 المغرب webmaster@mwordpress.net