1. ✅ مقدمة عن التعامل مع المجلدات في PHP
في PHP يمكننا إنشاء، حذف، تعديل، قراءة، وتصفية المجلدات باستخدام دوال مدمجة. هذا مفيد جدًا في تطبيقات مثل:
- أنظمة إدارة الملفات.
- تحميل الملفات وتخزينها.
- قراءة ملفات المشاريع تلقائيًا.
2. 📂 إنشاء مجلد جديد باستخدام mkdir()
الصيغة:
mkdir("اسم_المجلد", الصلاحيات, $recursive);PHPمثال 1:
mkdir("uploads");PHPمثال 2:
mkdir("data/files", 0777, true); // ينشئ مجلدات متداخلةPHP✅ نصائح:
- استخدم
0777فقط إذا كنت بحاجة لصلاحيات كاملة (اختبر ذلك محليًا، لا في السيرفر). - تأكد من أن المجلد لا يوجد مسبقًا.
⚠️ محاذير:
mkdir()يعطي تحذيرًا إذا كان المجلد موجودًا.- تحقق من وجود المجلد باستخدام
file_exists().
3. 🗑️ حذف مجلد باستخدام rmdir()
rmdir("uploads");PHPلا يحذف إلا المجلدات الفارغة.
مثال 1:
if (is_dir("test") && count(scandir("test")) <= 2) {
rmdir("test");
}PHPمثال 2:
$dir = "backup";
if (is_dir($dir)) {
rmdir($dir);
}PHP⚠️ محاذير:
- لا يعمل إذا كان المجلد يحتوي ملفات.
- لحذف مجلد غير فارغ، استخدم وظيفة مخصصة (سنشرحها لاحقًا).
4. 📃 قراءة محتويات مجلد باستخدام opendir() و readdir()
$dir = opendir("uploads");
while (($file = readdir($dir)) !== false) {
echo "File: $file <br>";
}
closedir($dir);PHP✅ فوائد:
- يعطيك تحكم كامل على المجلد.
- يمكنك فلترة الملفات يدويًا.
⚠️ ملاحظات:
.و..تمثل المجلد الحالي والأبوي، تجاهلها.
5. 🔄 التحقق من وجود مجلد: is_dir() و file_exists()
مثال 1:
if (is_dir("uploads")) {
echo "المجلد موجود";
}PHPمثال 2:
if (!file_exists("uploads")) {
mkdir("uploads");
}PHP6. 🔐 صلاحيات المجلدات (chmod)
مثال:
chmod("uploads", 0755); // قراءة وتنفيذ للمستخدمينPHP❗ محاذير:
- لا تستخدم
0777إلا عند الضرورة. - في بعض الخوادم، لن يتم تنفيذ الأمر بدون صلاحيات root.
7. 📁 التعامل مع المسارات (Relative vs Absolute)
// Relative
$path = "uploads/file.txt";
// Absolute
$path = $_SERVER['DOCUMENT_ROOT'] . "/uploads/file.txt";PHP✅ استخدم __DIR__ أو realpath() لتفادي المشاكل.
8. 📑 قراءة مجلد باستخدام scandir()
$files = scandir("uploads");
print_r($files);PHP❗ ملاحظة:
- يحتوي على
.و... - أسهل من
opendir()في معظم الحالات.
9. 🔍 استخدام glob() للبحث عن ملفات
$images = glob("images/*.jpg");PHPأمثلة:
$phpFiles = glob("*.php");
$allFiles = glob("folder/*");PHP✅ مفيدة للفلترة مثل *.txt.
10. 🧹 حذف مجلد غير فارغ (كود مخصص)
function deleteFolder($folder) {
$files = array_diff(scandir($folder), ['.', '..']);
foreach ($files as $file) {
$path = "$folder/$file";
is_dir($path) ? deleteFolder($path) : unlink($path);
}
return rmdir($folder);
}PHP✅ استخدام:
deleteFolder("old_backup");PHP11. 🔧 تغيير اسم مجلد باستخدام rename()
rename("old_name", "new_name");PHP12. 🧭 getcwd() – معرفة المجلد الحالي
echo getcwd(); // current working directoryPHP13. 🔁 chdir() – تغيير المجلد الحالي
chdir("uploads");
echo getcwd(); // داخل مجلد uploads الآنPHP14. 💡 sys_get_temp_dir()
echo sys_get_temp_dir(); // مجلد الملفات المؤقتة في النظامPHP15. ⚠️ التعامل مع الأخطاء
مثال باستخدام try/catch:
try {
if (!is_dir("my_dir")) {
mkdir("my_dir");
}
} catch (Exception $e) {
echo "حدث خطأ: " . $e->getMessage();
}PHP✅ الأفضل استخدام @ أو التحقق يدويًا لتفادي ظهور أخطاء على المستخدم.