مجلد أنشئ بـ fs.mkdirSync يمتلك root كمالك للمجموعة
تعتبر إدارة الملفات والمجلدات جزءًا أساسيًا من تطوير البرمجيات، وخاصة عند استخدام بيئات مثل Node.js وPHP. ومع ذلك، قد تواجه بعض التحديات، كما هو الحال عند إنشاء مجلدات باستخدام Node.js. في هذا المقال، سنستعرض المشكلة الشائعة التي تنشأ عند استخدام دالة fs.mkdirSync()
لإنشاء مجلد جديد، حيث يظهر المجلد كأنه مملوك للمجموعة الجذرية، مما يسبب صعوبات في حذفه عبر واجهة Plesk.
كيفية إنشاء مجلد باستخدام Node.js
إن إنشاء مجلد باستخدام Node.js يتم عن طريق مكتبة fs
المدمجة. يمكنك استخدام الكود التالي لإنشاء مجلد:
const fs = require('fs');
const path = require('path');
const folderPath = path.join(__dirname, 'hello_nodejs');
if (!fs.existsSync(folderPath)) {
fs.mkdirSync(folderPath);
console.log("تم إنشاء المجلد بنجاح.");
} else {
console.log('المجلد موجود بالفعل.');
}
عند تنفيذ هذا الكود، يتم إنشاء مجلد باسم "hello_nodejs" في الدليل الحالي. لكن بعد الاختبار، سيظهر أن حقل "المجموعة" لهذا المجلد تمتلكه مجموعة الجذر، مما يجعله غير قابل للحذف من خلال أدوات مثل Plesk.
لماذا يظهر المجلد كمملوك لمجموعة الجذر؟
عند تشغيل الكود، يتم إنشاء المجلد وفقًا لبيئة التشغيل. إذا كان Node.js يعمل كعملية مملوكة للجذر (root)، فسيتم تعيين المجلد الجديد بشكل تلقائي ليكون مملوكًا للمجموعة الجذرية. في حين أن استخدام PHP لإنشاء مجلدات في نفس البيئة قد لا يسبب هذه المشكلة لأن خادم الويب الذي يقوم بتشغيل PHP غالبًا ما يعمل بامتيازات مخصصة أو كمسؤول المستخدم.
كيف يمكن حل هذه المشكلة؟
لحل مشكلة تعيين ملكية المجلدات بشكل صحيح عند استخدام Node.js، يمكنك اتباع عدد من الخطوات البسيطة:
-
تغيير مستخدم التشغيل: تأكد من أن Node.js يعمل تحت مستخدم يمتلك الأذونات المطلوبة. يمكنك استخدام الأدوات مثل
pm2
أوforever
لتشغيل تطبيقات Node.js كأشخاص آخرين، وليس كمستخدم الجذر. -
ضبط الأذونات: بعد إنشاء المجلد، يمكنك استخدام دالة
fs.chownSync()
لتغيير مالك المجلد إلى المستخدم المطلوب. على سبيل المثال:const uid = // معرف المستخدم؛ const gid = // معرف المجموعة؛ fs.chownSync(folderPath, uid, gid);
بهذه الطريقة، يمكنك تغيير مالكية المجلد وجعله قابلًا للحذف عبر Plesk.
- التحقق من الأذونات العامة: تأكد أيضًا من أن المجلد يحتوي على الأذونات المناسبة للمستخدمين الآخرين عن طريق استخدام
fs.chmodSync()
.
تجربة مقارنة مع PHP
عندما يتم إنشاء مجلد باستخدام PHP، يعمل خادم الويب عادةً تحت مستخدم يحمل أذونات أقل، مما يسمح بحذف المجلدات بسهولة عبر أدوات مثل Plesk. توفر PHP مجموعة من الدوال لإدارة الملفات، وتسمح بالتحكم في الأذونات والملكيات بطريقة أكثر مرونة. وبالتالي، إذا كنت تواجه مشاكل مع Node.js، يمكنك دائمًا اللجوء إلى PHP كحل بديل.
استنتاج
إن إنشاء مجلدات باستخدام Node.js يمكن أن يترافق مع تحديات معينة، خاصةً عند التعامل مع الأذونات والملكيات. من خلال فهم الأساسيات المتعلقة بكيفية معالجة Node.js للمجلدات والأذونات، يمكنك تجاوز هذه العقبات بسهولة. تأكد من اختبار الكود في بيئة التشغيل المناسبة وضبط الأذونات عند الحاجة، مما يعزز تكامل التطبيق الخاص بك بدون أي مشكلات.
في الختام، إذا كنت تبحث عن حلول لمشاكل إنشاء المجلدات باستخدام Node.js، أو واجهت تحديات في إدارة هذه المجلدات عبر Plesk، يمكنك الاعتماد على النصائح المذكورة في هذا المقال لمساعدتك في تجاوز هذه المشكلات بشكل فعال.