انتقل إلى محتوى الدرس

Deleting Files Safely with unlink حذف الملفات بأمان بعد التحقق من قابليتها للكتابة بـ unlink

افحص مساحة القرص وأحجام الملفات وتواريخ تعديلها، وأدر الصلاحيات بـ chmod وfileperms، وانسخ وانقل واحذف الملفات بأمان في PHP 8.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

يحذف PHP الملفات من نظام التشغيل عبر الدالة unlink()، وهي مستمدة من استدعاء النظام POSIX الذي يفك ارتباط اسم الملف ببياناته على القرص.

  • تحقق من أن المسار يمثل ملفاً عادياً عبر is_file($path) وأنه قابل للتعديل عبر is_writable($path) قبل استدعاء unlink($path).
  • لا تستخدم unlink() لحذف المجلدات؛ فالمجلدات تُحذف عبر الدالة المخصصة rmdir().
  • لا تمرّر مدخلات المستخدم الخام مباشرة إلى unlink() دون التحقق من المسار، وإلا قد يتمكن المهاجم من حذف ملفات النظام الحساسة.

فحص is_file($tmp) وis_writable($tmp) يتجنب التحذيرات على المسارات المفقودة قبل أن تحذف unlink($tmp) الملف نهائياً.

PHP
<?php
$tmp = sys_get_temp_dir() . '/ct_temp_cache.tmp';
file_put_contents($tmp, "expired-cache");
$deleted = false;
if (is_file($tmp) && is_writable($tmp)) {
    $deleted = unlink($tmp);
}
echo "Deleted: " . ($deleted ? 'yes' : 'no') . " | Exists: " . (file_exists($tmp) ? 'yes' : 'no') . "\n";