شرح صفوف ومحتوى الفقرة
يحذف 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";