الدالة readfile()
في PHP
(PHP 4, PHP 5, PHP 7)
تقرأ الدالة readfile()
من ملف معيَّن وتُظهر محتواه.
الوصف
int readfile ( string $filename [, bool $use_include_path = FALSE [, resource $context ]] )
تقرأ هذه الدالة كامل محتوى الملف ثمَّ تكتب محتواه على مخزن الخرج (مجرى الخرج القياسي).
المعاملات
filename
اسم الملف المراد قراءته.
use_include_path
يمكنك استعمال هذا المعامل الاختياري بتمرير القيمة TRUE
إن أردت البحث عن الملف في المسار المُضمَّن include_path
أيضًا.
context
مورد مجرى المحتوى.
القيم المعادة
يُعاد عدد البايتات التي قُرأت من الملف. إن حصل أي خطأ، فستُعاد القيمة FALSE
إلا إذا استُدعيت الدالة بالشكل @readfile()
، فستُطبع رسالة الخطأ حينئذٍ.
أمثلة
المثال 1: إجبار عمليَّة التنزيل باستعمال الدالة readfile()
<?php
$file = 'monkey.gif';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
?>
سيُظهر المثال السابق نتيجة مشابهة لما موضح في الصورة:
ملاحظات
- لن تُظهر الدالة
readfile()
أيَّ مشكلات تتعلق بالذاكرة، حتى عندما تقرأ ملفات كبيرة الحجم. إن كنت تواجه خطأ يتعلق بنفاد الذاكرة، فتأكَّد من إيقاف ذاكرة تخزين الخرج باستعمال الدالةob_get_level()
.
فائدة: يمكن استعمال عنوان URL مع المعامل filename
، أي عوضًا عن اسم الملف، شرط أن يُفعَّل الضبط "fopen wrapper". راجع صفحة الدالة fopen()
للمزيد من التفاصيل حول كيفيَّة تحديد الملف.
- أُضيف دعم المحتوى منذ إصدار PHP 5.0.0. راجع قسم المجرى (stream) للمزيد من الشرح عن المحتوى (context).
انظر أيضًا
- الدالة
file()
: تقرأ الملف بأكمله ثمَّ تضع محتوياته في مصفوفة. - الدالة
fopen()
: تفتح ملفًا أو عنوان URL. - الدالة
file_get_contents()
: تقرأ الملف ثمَّ تضع كلَّ محتوياته في سلسلة نصيَّة. - الدالة
fpassthru()
: تُظهر ما تبقَّى من محتويات الملف. - الدالة
virtual()
: تنفِّذ طلبًا فرعيًّا للخادم Apache. - العبارة
include
: تعمل على تضمين ومعالجة ملف محدَّد. - العبارة
require
: تطابق العبارةinclude
باستثناء أنّها تطلق خطأ من نوعE_COMPLE_ERROR
في حال فشلها في جلب الملف. - البروتوكولات المدعومة.