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 directory
PHP13. 🔁 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✅ الأفضل استخدام @
أو التحقق يدويًا لتفادي ظهور أخطاء على المستخدم.