Avatar ·

كيفية التحقق من وجود مجلد في PHP: is_dir، file_exists أم كلاهما؟

مرحباً بالجميع! أنا مبتدئ في PHP وأكتب سكريبتاً لرفع الملفات إلى الخادم. أحتاج إلى التحقق مما إذا كان المجلد الذي سأحفظ فيه الملفات موجوداً. إذا لم يكن موجوداً - أقوم بإنشائه.

صادفت دالتين: is_dir() و file_exists(). والآن لا أفهم أيهما يجب استخدامه. إليك الكود الخاص بي:

$path = '/uploads/images/';

// الخيار 1
if (is_dir($path)) {
    echo "المجلد موجود";
} else {
    mkdir($path, 0777, true);
}

// الخيار 2
if (file_exists($path)) {
    echo "المجلد موجود";
} else {
    mkdir($path, 0777, true);
}

كلا الخيارين يبدو أنهما يعملان، لكني لاحظت سلوكاً غريباً. إذا قمت بتحديد مسار ملف وليس مجلداً، فإن file_exists() ترجع true، بينما is_dir() ترجع false. هذا يعني أنه إذا كان المسار يشير إلى ملف موجود، فإن file_exists() ستعامل الملف كدليل موجود وتتخطى إنشاء المجلد. وهذا خطأ منطقي.

لذا، السؤال هو: ما هي أفضل الممارسات؟ هل يجب استخدام is_dir() فقط أم الجمع بينهما؟