المشكلة : عرض اتصال FTP عند تركيب اضافات او قوالب
هذه المشكلة قمت بحلها مؤخرا في سيرفر خاص بتركيب مكتبة mod_suphp ربما تنفعك ايضا هذه الطريقة
حسب ما قرات في هذه المقالة Why WordPress Asks for Connection Info أن المشكلة تكمن في عدم قدرة إنشاء ملف مؤقت من قبل المستخدم وهذا راجع لصلاحيات المالك المحدودة (owner) أي أن السكريب او الشخص الذي قام بانشاء هذا الملف ليست له صلاحيات بانشاء هذا الملف المؤقت والله اعلم (لا تلومني اخوكم لم ادرس انجليزي ولا يهم يحزنون المهم اني افهم شوية في المجال) وفي هذه الحالة ملفات ووردبريس المسؤولة عن انشاء الملفات المؤقة حسب طبيعة التركيب والترقية هي :
wp-admin/theme-install.php wp-admin/plugin-install.php wp-admin/upgrade.php اما بالنسبة للملف المسؤول عن هذه المشكلة هو wp-admin/includes/file.php و بالضبط في الكود التالي :
if( function_exists("getmyuid") && function_exists("fileowner") ){ $temp_file = wp_tempnam(); if ( getmyuid() == fileowner($temp_file) ) $method = "direct"; unlink($temp_file); } الشيء الذي جنني هو لماذا الاستضافات العربية مع احترامي لها تمنع مثل هذه الدالة getmyuid والله شيء يجنن صراحة السيف مود هو سبب اغلب المشاكل في ووردبريس وقد تم انتقاده في الاصدارات الاخيرة من php5 وان شاء الله سيتم التخلص منه عن قريب في الاستضافات العربية
من وجهت نظري انه يتم تعطيل بعض الدوالة الخطرة مثل dl و exec وغيرها من الدوال الخطرة التي تمكن المخترق من تنفيد اوامر مباشرة لنظام. ولا أخفي عليكم السيف مود يمكن تخطيه حتى لو تم تعطيل جميع الدوال يكيف ان تسمح الاستضافة برفع htaccess وسيتم تخطي السيف مود بكل بساطة
المهم الكود اعلاه يستعمل اربعة انواع لنقل الملفات الى المكان المخصصة لها من مجلد tmp بدون مشاكل الصلاحيات. على فكرة ووردبريس في هذه الحالة يستعمل wp-content كمجلد tmp والانواع كالتالي :
Direct, SSH2, FTP PHP Extension, FTP Socketsما يهمنا هنا بالنسبة للاستضافات المشتركة الطريقتين Direct و FTP التي يمكن استعمالها. المهم الان ننتقل الى الحلول كي لا اطيل عليكم
حل : مشكلة عرض اتصال FTP
هنا سنستعمل احدى الطرق التي ذكرنا لنقل الملفات بدون مشاكل التصريحات
بالنسبة لطريقة Direct تستعمل فقط اذا عرض عليك اتصال FTP وقمت بادخال المعلومات ولم يحدث شيء ولا تستعملها اذا كنت تدخل معلومات ال FTP ويتم التركيب والترقية بشكل سليم
كل ما عليك هو فتح ملف wp-config.php واضافة السطر التالي :
define("FS_METHOD", "direct");اذا لم تنجح قم بانشاء مجلد باسم tmp داخل مجلد wp-content وقم باعطائه التصريح 777 او 775 واضف السطر التالي الى ملف wp-config.php
define("WP_TEMP_DIR", ABSPATH . "wp-content/tmp");مع انه فقط ستحاتاج الى اضافة الكود الاول فقط عن تجربة بالنسبة للاصدار الاخير
بالنسبة لطريقة FTP نستعملها فقط اذا كان بالامكان اتمام عملة الترقية بعد اضافة كلمة المرور والباسورد عند عرض صفحة الاتصال اذا كنت لا ترغب بعرض هذه الصفحة
اولا يجب عليك حماية ملف wp-config.php لانك ستضع به معلومات ftp وهذا نوعا ما فيه شيء من الخطورة لكن يمكن حماية الملف باضافة الكود التالي الى htaccess
<Files wp-config.php> order allow,deny deny from all </Files> بعد ذالك قم باضافة الكود التالي الى ملف wp-config.php :
define("FS_METHOD", "ftpsockets"); define("FTP_USER", "username"); define("FTP_PASS", "password"); define("FTP_HOST", "ftp.example.org"); وستختفي تلك الصفحة ان شاء الله عند تركيب او ترقية اي اضافة او قالب وايضا ترقية المدونة
المهم بالنسبة للحل الاول تم طرحه في هذه التدوينة Direct plugin auto-update on WordPress 2.8
حل 2 : مشكلة عرض اتصال FTP
في هذا الحل استعملت اضافة FTP Upgrade Fix لانه لم استطع تعطيل الوضع الامن وعلى ما اظن ان حساب الاخصاحب موقع ابداع فون لم يتم تفعيل php.ini في حسابه فقمت بتجريب الطريقة الاولى لم تنفع كانت تظهر الرسالة التالية :
You are running WordPress 3.2.1 which doesn’t need the FTP Upgrade Fix plugin. You can deactivate and delete the plugin.
لا تهتم لرسالة لاننا حقا نحتاج هذه الاضافة مع استضافاتنا العربية مع احترامي لهم وقم بتحرير ملف wp-config.php واضف الكود التالي فقط :
define("FTP_USER", "username"); define("FTP_PASS", "password"); define("FTP_HOST", "ftp.example.org"); // يمكنك استعمال localhost وغير المعلومات الى حساب FTP الخاص بك وستحل المشكلة ان شاء الله
هذه المشكلة قمت بحلها مؤخرا في سيرفر خاص بتركيب مكتبة mod_suphp ربما تنفعك ايضا هذه الطريقة
حسب ما قرات في هذه المقالة Why WordPress Asks for Connection Info أن المشكلة تكمن في عدم قدرة إنشاء ملف مؤقت من قبل المستخدم وهذا راجع لصلاحيات المالك المحدودة (owner) أي أن السكريب او الشخص الذي قام بانشاء هذا الملف ليست له صلاحيات بانشاء هذا الملف المؤقت والله اعلم (لا تلومني اخوكم لم ادرس انجليزي ولا يهم يحزنون المهم اني افهم شوية في المجال) وفي هذه الحالة ملفات ووردبريس المسؤولة عن انشاء الملفات المؤقة حسب طبيعة التركيب والترقية هي :
wp-admin/theme-install.php wp-admin/plugin-install.php wp-admin/upgrade.php اما بالنسبة للملف المسؤول عن هذه المشكلة هو wp-admin/includes/file.php و بالضبط في الكود التالي :
if( function_exists("getmyuid") && function_exists("fileowner") ){ $temp_file = wp_tempnam(); if ( getmyuid() == fileowner($temp_file) ) $method = "direct"; unlink($temp_file); } الشيء الذي جنني هو لماذا الاستضافات العربية مع احترامي لها تمنع مثل هذه الدالة getmyuid والله شيء يجنن صراحة السيف مود هو سبب اغلب المشاكل في ووردبريس وقد تم انتقاده في الاصدارات الاخيرة من php5 وان شاء الله سيتم التخلص منه عن قريب في الاستضافات العربية
من وجهت نظري انه يتم تعطيل بعض الدوالة الخطرة مثل dl و exec وغيرها من الدوال الخطرة التي تمكن المخترق من تنفيد اوامر مباشرة لنظام. ولا أخفي عليكم السيف مود يمكن تخطيه حتى لو تم تعطيل جميع الدوال يكيف ان تسمح الاستضافة برفع htaccess وسيتم تخطي السيف مود بكل بساطة
المهم الكود اعلاه يستعمل اربعة انواع لنقل الملفات الى المكان المخصصة لها من مجلد tmp بدون مشاكل الصلاحيات. على فكرة ووردبريس في هذه الحالة يستعمل wp-content كمجلد tmp والانواع كالتالي :
Direct, SSH2, FTP PHP Extension, FTP Socketsما يهمنا هنا بالنسبة للاستضافات المشتركة الطريقتين Direct و FTP التي يمكن استعمالها. المهم الان ننتقل الى الحلول كي لا اطيل عليكم
حل : مشكلة عرض اتصال FTP
هنا سنستعمل احدى الطرق التي ذكرنا لنقل الملفات بدون مشاكل التصريحات
بالنسبة لطريقة Direct تستعمل فقط اذا عرض عليك اتصال FTP وقمت بادخال المعلومات ولم يحدث شيء ولا تستعملها اذا كنت تدخل معلومات ال FTP ويتم التركيب والترقية بشكل سليم
كل ما عليك هو فتح ملف wp-config.php واضافة السطر التالي :
define("FS_METHOD", "direct");اذا لم تنجح قم بانشاء مجلد باسم tmp داخل مجلد wp-content وقم باعطائه التصريح 777 او 775 واضف السطر التالي الى ملف wp-config.php
define("WP_TEMP_DIR", ABSPATH . "wp-content/tmp");مع انه فقط ستحاتاج الى اضافة الكود الاول فقط عن تجربة بالنسبة للاصدار الاخير
بالنسبة لطريقة FTP نستعملها فقط اذا كان بالامكان اتمام عملة الترقية بعد اضافة كلمة المرور والباسورد عند عرض صفحة الاتصال اذا كنت لا ترغب بعرض هذه الصفحة
اولا يجب عليك حماية ملف wp-config.php لانك ستضع به معلومات ftp وهذا نوعا ما فيه شيء من الخطورة لكن يمكن حماية الملف باضافة الكود التالي الى htaccess
<Files wp-config.php> order allow,deny deny from all </Files> بعد ذالك قم باضافة الكود التالي الى ملف wp-config.php :
define("FS_METHOD", "ftpsockets"); define("FTP_USER", "username"); define("FTP_PASS", "password"); define("FTP_HOST", "ftp.example.org"); وستختفي تلك الصفحة ان شاء الله عند تركيب او ترقية اي اضافة او قالب وايضا ترقية المدونة
المهم بالنسبة للحل الاول تم طرحه في هذه التدوينة Direct plugin auto-update on WordPress 2.8
حل 2 : مشكلة عرض اتصال FTP
في هذا الحل استعملت اضافة FTP Upgrade Fix لانه لم استطع تعطيل الوضع الامن وعلى ما اظن ان حساب الاخصاحب موقع ابداع فون لم يتم تفعيل php.ini في حسابه فقمت بتجريب الطريقة الاولى لم تنفع كانت تظهر الرسالة التالية :
جاري تحميل حزمة التنصيب من http://downloads.wordpress.org/plugin/reliable-twitter.2.2.zip…
جاري فك ضغط الحزمة …
لم أتمكن من إنشاء الدليل. /home/user/public_html/wp-content/upgrade/reliable-twitter.tmp
بالنسبة لطريقة الثانية عن طريق ftp كانت تاخد وقت طويل وفي الاخر تعرض رسالة بفشل التنصيب بالشكل التالي :جاري فك ضغط الحزمة …
لم أتمكن من إنشاء الدليل. /home/user/public_html/wp-content/upgrade/reliable-twitter.tmp
جاري تحميل حزمة التنصيب من http://downloads.wordpress.org/plugin/gd-simple-widgets.zip…
جاري فك ضغط الحزمة …
جاري تنصيب الإضافة …
أرشيف غير متوافق.
فشلت محاولة تنصيب الإضافة.
المهم في هذه الحالة نقوم بتركب الاضافة FTP Upgrade Fix بالطريقة العادية عن طريق Cpanel او FTP بعد تركيبها و تفعيلها ستعرض عليك رسالة بالشكل التالي :جاري فك ضغط الحزمة …
جاري تنصيب الإضافة …
أرشيف غير متوافق.
فشلت محاولة تنصيب الإضافة.
You are running WordPress 3.2.1 which doesn’t need the FTP Upgrade Fix plugin. You can deactivate and delete the plugin.
لا تهتم لرسالة لاننا حقا نحتاج هذه الاضافة مع استضافاتنا العربية مع احترامي لهم وقم بتحرير ملف wp-config.php واضف الكود التالي فقط :
define("FTP_USER", "username"); define("FTP_PASS", "password"); define("FTP_HOST", "ftp.example.org"); // يمكنك استعمال localhost وغير المعلومات الى حساب FTP الخاص بك وستحل المشكلة ان شاء الله