الدالة realpath()‎ في PHP

من موسوعة حسوب
< PHP

(PHP 4, PHP 5, PHP 7)

تعيد الدالة realpath()‎ المسار المجرَّد الأساسي للمسار المُمرَّر إليها.

الوصف

string realpath ( string $path )

توسِّع هذه الدالة جميع الوصلات الرمزيَّة وتستبين المراجع التي تشير إلى /./ وإلى /../ وتزيل المحارف / (الخط المائل) الزائدة الموجودة في المسار path المعطى ثمَّ تعيد بعدئذٍ المسار المجرَّد الأساسي.

المعاملات

path

المسار المراد فحصه.

ملاحظة: لمَّا كان من الواجب تمرير المسار path، يمكن في هذه الحالة أن تكون قيمته فارغة أو القيمة NULL إذ ستُفسَّر تلك القيمة على أنَّها المجلَّد الحالي.

القيم المعادة

يُعاد المسار المجرَّد الأساسي عند نجاح العمليَّة، وهذا المسار لن يكون له وصلة رمزيَّة ولن يحتوي على العنصر /./ أو /../ وغيرها، وستُحذف أيضًا محدِّدات المسار الزائدة مثل \ (الخط المائل) أو / (الخط المائل العكسي).

ستُعاد القيمة FALSE عند فشل العمليَّة مثل عدم وجود الملف.

ملاحظة: يجب أن يملك السكربت الذي سينفذ هذه الدالة إذن التنفيذ على جميع المجلَّدات مهما كان تسلسلها الهرمي في المسار وإلا ستعيد الدالة القيمة FALSE.

ملاحظة: في حال كان نظام الملفات غير حساس لحالة الأحرف، ربما لا تَعدُّ الدالة realpath()‎ ذلك أمرًا طبيعيًّا وستأخذ حالة الحرف بالحسبان.

ملاحظة: لن تعمل الدالة realpath()‎ مع الملف الذي بداخل الأرشيف Phar إذ سيكون مسار ذلك الملف حينئذٍ افتراضيًّا وليس حقيقيًّا.

ملاحظة: لمَّا كان نوع الأعداد الصحيحة في PHP هو ذات إشارة (signed) وأغلب المنصات تستعمل الأعداد الصحيحة بطول 32 بت، فقد تعيد بعض دوال نظام الملفات نتائج مخالفة للتوقعات عند استعمالها مع ملفات ذات حجم أكبر من 2 غيغابايت.

سجل التغييرات

الإصدار الوصف
5.3.0 كانت الدالة realpath()‎ قبيل هذا الإصدار تفشل على أنظمة BSD إن لم يكن آخر عنصر من المسار path موجودًا فقط. أمَّا الآن فهي تفشل في هذه الحالة.
5.2.1 كانت الدالة realpath()‎ قبيل هذا الإصدار تعيد القيمة FALSE إن كان المسار path سلسلة نصيَّة فارغة أو قيمة عدميَّة (NULL).

أمثلة

المثال 1: استعمال الدالة realpath()‎

<?php
chdir('/var/www/');
echo realpath('./../../etc/passwd') . PHP_EOL;

echo realpath('/tmp/') . PHP_EOL;
?>

سيُظهر المثال السابق نتيجة مشابهة للتالي:

/etc/passwd
/tmp

المثال 2: استعمال الدالة realpath()‎ على ويندوز

<?php
echo realpath('/windows/system32'), PHP_EOL;

echo realpath('C:\Program Files\\'), PHP_EOL;
?>

سيُظهر المثال السابق النتيجة التالية:

C:\WINDOWS\System32
C:\Program Files

انظر أيضًا

  • الدالة basename()‎: اسم الملف أو المجلَّد الأساسي بعد تمرير مساره إليها.
  • الدالة dirname()‎: تعيد مسار المجلد الأب.
  • الدالة pathinfo()‎: تعيد معلومات حول مسار ما.

مصادر