حل مشكلة “Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName” على خادم أباتشي

اذا ظهرت لك رسالة الخطاء التالية عند اعادة تشغيل خادم Apache2
root@server1:~# service apache2 restart
* Reloading web server config apache2
apache2: Could not reliably determine the server's fully qualified domain name, using arabiasolutions.com for ServerName

فكل ما عليك فعلة هو اتباع الخطوات التالية:

1. قم بفتح ملف httpd.conf المتواجد في الغالب في المسار /etc/apache2/httpd.conf
pico /etc/apache2/httpd.conf
2. الآن قم باضافة السطر التالي إلى الملف
ServerName localhost
3. أحفظ التغييرات ثم أعد تشغيل خادم apache2 و ستجد ان رسالة الخطاء قد أختفت
service apache2 restart

أمر passwd و تفعيل حساب الرووت او تغيير كلمة المرور في أوبونتو أو غيرة

بشكل أفتراضي يأتي نظام التشغيل Ubuntu وبعد الانظمة الآخرى المبنية على يونكس بدون تفعيل حساب الجذر (root) وذلك لأسباب أمنية ولكن اذا أردت تفعيل حساب الرووت فسيكون ذلك على مسؤليتك لانه بحصولك على حساب الرووت فسيكون بامكانك تعديل او حذف اي ملف من ملفات النظام والتي قد تؤدي إلى أنهيار نظام التشغيل.

أمر passwd هو أحد الأوامر التي يتم ادخالها في الطرفية (Terminal) وهو مسؤال عن تغيير أو وضع كلمة مرور لمستخدم ما وفي نفس الوقت هو المسؤال عن تفعيل الحسابات المعطلة بسبب عدم وجود كلمة مرور ولتفعيل حساب الرووت او اي حساب اخر او تغيير كلمة المرور لأي حساب على النظام قم بأدخال الأمر التالي في الطرفية.
sudo passwd
أو
sudo passwd root
ملحوظة #1: في الأمر السابق يمكنك استبدال root باسم المستخدم الذي تريد تفعيلة او تغيير كلمة المرور الخاصة به.
ملحوظة #2: قد يتطلب أستخدام أمر sudo أدخال كلمة المرور لحسابك الحالي قبل أدخال كلمة المرور للحساب الآخر.

أطار عمل كود إجنيتور وحل مشكلة WHERE و OR LIKE في قاعدة البيانات

أمس كنت اعمل على مشروع ومن ضمن هذا المشروع جزء خاص بعملية البحث في قاعدة البيانات وعند الشروع في كتابة الكود واجهتني مشكلة أراها انها نقص في أطار العمل كود إجنيتور، المشكلة كالتالي:

عند كتابة الأوامر التالية
$this->db->where('article_status', 'published');
$this->db->like('article_title', $search_query);
$this->db->like('article_content', $search_query);
$this->db->get('articles');

فستكون نتيجة أستعلام الـ MySQL هي
SELECT * FROM (`articles`) WHERE `article_status` = 'published' AND `article_title` LIKE '%كلمة البحث%' AND `article_content` LIKE '%كلمة البحث%'

المشكلة هنا اذا كانت كلمة البحث موجودة في عنوان المقال وغير موجودة في المحتوى فسوف نفقد احد نتائج البحث واذا استبدلنا أمر الـ LIKE الثاني بـ OR LIKE للحصول على هذه النتيجة فسوف يتم تجاهز أمر الـ WHERE الأول وسوف تظهر لنا من ضمن البحث المقالات الغير منشورة.

عندها قلت لنفسي يجب ان يكون هناك امر لكي يجعل أمر الـ WHERE أو الـ LIKE في مجموعة مع بعضهم لكي تكون النتيجة كالتالي

SELECT * FROM (`articles`) WHERE `article_status` = 'published' AND (`article_title` LIKE '%كلمة البحث%' OR `article_content` LIKE '%كلمة البحث%')

ولكن للأسف كود إجنيتور خذلني هذه المرة، ولكن الحمد لله وجدت حل لهذه المشكلة بخدعة بسيطة وهي كالتالي
$this->db->where('article_status', 'published');
$this->db->where(sprintf( '(`article_title` LIKE %1$s OR `article_content` LIKE %1$s)', $this->db->escape('%' . $search_query . '%') ));
$this->db->get('articles');

[php] دالة array_filter لتنقيح وحذف العناصر الفارغة من المصفوفة

أذا بحثت في جوجل عن removing empty elements from an array فستجد الكثير من الحلول لحذف العناصر الفارغة من المصفوفة (array) ولكن دائماً ما يتم السهو عن دالة array_filter الموجودة بشكل أفتراضي في البي أتش بي او ما يطلق عليهم Native functions.

الدالة array_filter تعمل على تنقيح و حذف العناصر بداخل المصفوفة بالإضافة  إلى تمرير العناصر إلى دوال أخرى ليتم من خلالهم التحقق من العناصر الممررة إليهم.

مثال رقم 1 – حذف العناصر الفارغة:
$array = array( 'foo', FALSE, -1, NULL, '');
print_r(array_filter($array));

 

مثال رقم 2 – تمرير العناصر إلى دالة لحذف العناصر التي قيمتها أصغر من 5:
function my_filter($value)
{
if( $value < 5 )
{
return FALSE;
}
return TRUE;
}
$array = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ,13 ,14, 15);
print_r(array_filter($array, 'my_filter'));