حل لمشكل عدم تمرير سوى Parameter واحد لدى استخدام Curl في Drupal

لدى استخدام Curl لمناداة Web Service ما، تحميل صفحة معينة، أو لأي هدف آخر، فإننا عادة ما نستخدم شيفرة مماثلة للشيفرة التالية (لدى البرمجة باستخدام PHP):

$params = array(
‘param1’    => “some String”,
‘param1’      => “Another string”,
‘param3’      => 25
);

$cmd = curl_init();
$url=”SomeURL”.http_build_query($params)
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($cmd);

لكن لدى استخدام نفس الكود على Drupal فإن الوضع…سيدفعك إلى الجنون، لأنه مهما حاولت فإنه لم يتم تمرير سوى الـ Parameter الأول.

بعد بحث طويل، وبعد محاولة أكثر من طريقة، الحل يكمن في طريقة بناء الاستعلام، حيث بدل بنائه باستخدام

http_build_query($params)

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

http_build_query($params), ”, ‘&’);

وسيتم بإذن الله حل المشكل

ملاحظة: قد لا تكون هذه الطريقة الأمثل لاستخدام Curl على Drupal، حيث يوفر النظام دوال خاصة به يمكن استخدامها مثل دالة drupal_http_request

والسلام عليكم

حل لمشكل ظهور رسالة الخطأ MySQL server has gone away لدى محاولة استرجاع قاعدة بيانات على PHPMyAdmin

سبق وأن واجهت هذا المشكل أكثر من مرة، لدى محاولة استرجاع قاعدة بيانات لموقع يستخدم Drupal، حيث تظهر رسالة الخطأ التالية:

#2006 – MySQL server has gone away

على PHPMyAdmin والتي عادة ما يكون سببها أحد البيانات المسجلة في أحد جداول Cache.

هناك عدة طرق لتجنب الوقوع في هذا المشكل، وذلك بتفريغ Cache مثلا قبل حفظ قاعدة البيانات (لا تنجح دائما)، أو استخدام وحدات خاصة بحفظ نسخ من البيانات كوحدة Backup and Migrate، لكن ماذا لو لم تكن تملك في وضع يسمح لك بذلك، مثلا محاولة استرجاع بيانات من نسخة قديمة، تم حفظها بشكل سيء؟، أو ربما لم يكن المشكل يتعلق بـ Cache (أو بنظام Drupal) من أساسه.

الحل يكمن في تغيير إعدادات Mysql، حيث يكفي إعطاء الإعداد max_allowed_packet قيمة أكبر.

إن كنت تستخدم Wamp مثلا، فإنه يكفي النقر على زر التطبيق (الذي يظهر بجانب الساعة في Notification Bar) ثم فتح ملف my.ini من تفرع MySQL ثم ابحث عن max_allowed_packet واعطها قيمة أكبر.

أعد تشغيل Wamp، ثم قم بإعادة محاولة استرجاع قاعدة البيانات من جديد.

 

[Drupal] [ imagecache]:حل لمشكل عدم التمكن من إضافة الصور بعد رفع الموقع على الإنترنت

إذا كنت تستعمل Drupal مع إضافة imagecache  و كنت قادرا على رفع الصور و استعمالها على الخادم المحلي، و أصبح الأمر غير ممكنا بعد رفعك للموقع على الإنترنت، حيث أنها تظهر الصور على صفحات موقعك و كأنها لم تعد موجودة قم بالتالي:

اذهب إلى:

Administer

file system

ستجد مسار الملفات المؤقتة عبارة عن مسار على جهازك المحلي من الشكل

F:\wamp\tmp

قم بتغييره إلى:

sites/default/files/temp

احفظ التغييرات، و أعد تجربة رفع صورك من جديد، فمن المفترض أن يكون المشكل قد حل

و السلام عليكم

استرجاع قواعد البيانات السابقة بعد إعادة تنصيب Wamp

يعاني بعض مستعملي الخوادم المحلية كـ Wamp و أخواتها من ضياع قواعد البيانات التي كانوا يعملون عليها بعد إعادة تنصيب الخادم المحلي (عادة بعد إعادة تنصيب النظام)، أو لدى إعادة تنصيب الخادم المحلي في غير المجلد الذي تم التنصيب فيه من قبل.

صادفني هذا المشكل مرات عديدة، لكن في كل مرة كنت قادرا على استرجاع قواعد البيانات التي كنت أعمل عليها من ملفات الـ BackUp التي أعملها دوريا، لكن حدث معي أني أعدت تنصيب Wamp بعد إعادة تنصيب النظام و لم أكن أملك BackUp لقواعد البيانات جاري العمل عليها مما دفعي للبحث عن حلول أخرى.

الحل بسيط و سهل (لكن وجب البحث عنه، شكرا Google 🙂  )، حيث أن Wamp يحتفظ بقواعد البيانات في المجلد التالي:

x:/wamp/bin/mysql/mysql5.1.3x/data/

في هذه الحالة لدينا حلان: إما أن تقوم بنقل محتويات مجلد Data الخاص بالتنصيب القديم لـ Wamp إلى المجلد Data الخاص بالتنصيب الأحدث.

أو يكفي تغيير قيمة المتغير datadir الموجود في الملف my.ini و جعلها مساوية لمسار المجلد Data في التنصيب القديم.

للدخول إلى ملف my.ini ، انقر مرة واحدة على أيقونة Wamp في الـ sysTray (بجانب الساعة في نظام Windows)<  MySQL < my.ini

المتغير datadir تجده في السطر 40 (إن لم تدخل أية تعديلات على هذا الملف من قبل).

و السلام عليكم

[wordpress]: حل لمشكل تداخل الـ Widget على القائمة الجانبية لدى استعمال WP125

صادفني مشكل لدى استعمال الإضافة WP125 و التي تسمح بإضافة الإعلانات على مدونات WordPress

المشكل هو تداخل الإعلانات مع باقي الـ Widgets في حال ما إذا اخترت نمط Two Columns في خصائص إضافة WP125

حيث يصبح الـ Widget الموالي لـ WP125 متوضعا فوقه مباشرة.

من بين أنصاف الحلول المقترحة هي جعل WP125 آخر Widget على القائمة الجانبية، لكن هذا يقلل من أهمية عرض الإعلانات لأنه يفضل أن تكون هي الأولى لزيادة إمكانية النقر عليها.

المشكل يكمن في ملف الـ CSS الخاص بالإضافة حيث نجد الاختلاف الوحيد الموجود بين نمط One Column و Two Columns يكمن في إضافة float:right; إلى الثاني

لدى بحثي على النت لحل هذا المشكل وجدت نقاشا يدور حول هذا المشكل على موقع WordPress و  الحل المقترح (الذي جربته و آتى أًكُله) هو بعمل التالي:

افتح ملف:

\wp-content\plugins\wp125\wp125.php

و اذهب إلى السطر 165. ستجد التالي:

else { echo ‘<div ><a href=”‘.$setting_buyad_url.'” rel=”nofollow”‘.ADLINK_EXTRA.’><img src=”‘.$setting_defaultad.'” alt=”” /></a></div>’.”\n”; }

}

echo “</div>\n”;

قم بإضافة السطر التالي له

echo ‘<br style=”clear:both” />’;

بحيث يصبح

else { echo ‘<div ><a href=”‘.$setting_buyad_url.'” rel=”nofollow”‘.ADLINK_EXTRA.’><img src=”‘.$setting_defaultad.'” alt=”” /></a></div>’.”\n”; }

}

echo ‘<br style=”clear:both” />’;

echo “</div>\n”;

و هذا كفيل بحل المشكل

و السلام عليكم