شرح صفوف ومحتوى الفقرة
تُضبط صلاحيات الملفات عبر الدالة chmod() باستخدام رقم ثماني (Octal)، وتُفحص عبر fileperms() مع تحديث ذاكرة الحالة بـ clearstatcache().
- مرّر دائماً رقماً ثمانياً يبدأ بصفر على اليسار (مثل
0644أو0600)، ولا تمرّره كنص"0644"أو رقم عشري644. - نسّق القيمة الناتجة من
fileperms($path)عبرsubstr(sprintf("%o", fileperms($path)), -4)لاستخراج الأرقام الثمانية الأربعة. - نظراً لأن PHP يخزن بيانات حالة الملفات مؤقتاً لتسريع الأداء، استدعِ
clearstatcache(true, $path)بعد تعديل الصلاحيات أو الحجم.
تضبط chmod($tmp, 0644) صلاحيات القراءة والكتابة، وتنعش clearstatcache(true, $tmp) الذاكرة المؤقتة، وتنسق sprintf("%o", ...) الصلاحيات الثمانية.
PHP
<?php
$tmp = sys_get_temp_dir() . '/ct_perm.txt';
file_put_contents($tmp, "secret");
chmod($tmp, 0644);
clearstatcache(true, $tmp);
$octal = substr(sprintf('%o', fileperms($tmp)), -4);
echo "Octal length: " . strlen($octal) . " | Readable: " . (is_readable($tmp) ? 'yes' : 'no') . "\n";
unlink($tmp);