وظيفة fopen() في PHP
التعريف والاستخدام
تفتح وظيفة fopen() ملفًا أو URL.
إذا فشل في الفتح، فإن هذه الوظيفة تعود FALSE.
النحو
fopen(اسم الملف,mode,include_path,سياق)
المعامل | الوصف |
---|---|
اسم الملف | مطلوب. يحدد الملف أو URL الذي يتم فتحه. |
mode | مطلوب. يحدد نوع الوصول المطلوب إلى الملف أو التدفق. القيم المحتملة معروضة في الجدول التالي. |
include_path | اختياري. إذا كنت بحاجة أيضًا إلى البحث عن الملف في include_path، يمكنك تعيين هذا المعامل إلى 1 أو TRUE. |
سياق | اختياري. يحدد بيئة ملف اليد. البيئة هي مجموعة من الخيارات التي يمكنها تعديل سلوك التدفق. |
القيم المحتملة لمعامل mode
mode | يوضح |
---|---|
"r" | تُفتح بالطريقة القراءة فقط، ويُؤخذ مؤشر الملف إلى بداية الملف. |
"r+" | تُفتح بالطريقة القراءة والكتابة، ويُؤخذ مؤشر الملف إلى بداية الملف. |
"w" | تُفتح بالطريقة الكتابة، ويُؤخذ مؤشر الملف إلى بداية الملف ويُقطع حجم الملف إلى صفر. إذا لم يكن الملف موجودًا، يتم محاولة إنشائه. |
"w+" | تُفتح بالطريقة القراءة والكتابة، ويُؤخذ مؤشر الملف إلى بداية الملف ويُقطع حجم الملف إلى صفر. إذا لم يكن الملف موجودًا، يتم محاولة إنشائه. |
"a" | تُفتح بالطريقة الكتابة، ويُؤخذ مؤشر الملف إلى نهاية الملف. إذا لم يكن الملف موجودًا، يتم محاولة إنشائه. |
"a+" | تُفتح بالطريقة القراءة والكتابة، ويُؤخذ مؤشر الملف إلى نهاية الملف. إذا لم يكن الملف موجودًا، يتم محاولة إنشائه. |
"x" |
تُشغّل وتُفتح بالطريقة الكتابة، ويُؤخذ مؤشر الملف إلى بداية الملف. إذا كان الملف موجودًا، فإن استدعاء fopen() يفشل ويُرجع FALSE، ويُحدث خطأ من مستوى E_WARNING. إذا لم يكن الملف موجودًا، يتم محاولة إنشائه. هذا يساوي تحديد علامات O_EXCL|O_CREAT في استدعاء نظام التشغيل الأساسي open(2). يتم دعم هذا الخيار في إصدارات PHP 4.3.2 وما بعدها، ويستخدم فقط للملفات المحلية. |
"x+" |
إنشاء وتشغيل بقراءة وكتابة، وإقامة مؤشر الملف في بداية الملف. إذا كان الملف موجودًا، سيتم فشل استدعاء fopen() وسيتم إرجاع FALSE، وإصدار رسالة خطأ مستوى E_WARNING. إذا لم يكن الملف موجودًا، سيتم محاولة إنشائه. هذا يساوي تحديد علامات O_EXCL|O_CREAT في استدعاء نظام التشغيل الأساسي open(2). يتم دعم هذا الخيار في إصدارات PHP 4.3.2 وما بعدها، ويستخدم فقط للملفات المحلية. |
يوضح
fopen() سي اسم الملف الاسم المحدد يتم ترقيته إلى دفق. اسم الملف هو "النمط://...إذا كان صيغة ""، فإنه يتم اعتباره URL، وسيقوم PHP بالبحث عن معالج بروتوكول (يسمى أيضًا بروتوكول التغليف) لمعالجة هذا النمط. إذا لم يتم تسجيل البروتوكول كبروتوكول التغليف، سيقوم PHP بإصدار رسالة لمساعدة على التحقق من مشاكل محتملة في السكربت. اسم الملف لتنفيذ اسم الملف بشكل عادي.
إذا كان PHP يعتقد اسم الملف ما يتم تحديده هو ملف محلي، سيتم محاولة فتح تدفق على هذا الملف. يجب أن يكون الملف قابلاً للوصول من قبل PHP، لذا يجب التأكد من أن حقوق الوصول إلى الملف تسمح بهذا الوصول. سيتم تطبيق قيود إضافية إذا تم تمكين الوضع الأمني أو open_basedir.
إذا كان PHP يعتقد اسم الملف ما يتم تحديده هو بروتوكول مسجل، ويتم تسجيل البروتوكول كـ URL شبكة، وسيقوم PHP بالتحقق من وتأكيد أن allow_url_fopen تم تفعيله. إذا تم إيقافه، سيقوم PHP بإصدار تحذير، وسيتم فشل استدعاء fopen().
على سياق تم إضافة دعمها في PHP 5.0.0.
الإشعارات والتعليقات
التعليقات:لدي كل عائلة نظام تشغيل عادات إنهاء سطر مختلفة. عند كتابة ملف نصي وتريد إدراج سطر جديد، يجب استخدام رمز إنهاء السطر الذي يتوافق مع نظام التشغيل. تستخدم الأنظمة القائمة على Unix \n كرمز إنهاء السطر، وتستخدم الأنظمة القائمة على Windows \r\n كرمز إنهاء السطر، وتستخدم أنظمة Macintosh \r كرمز إنهاء السطر. إذا تم استخدام رمز إنهاء السطر غير الصحيح أثناء كتابة الملف، قد يظهر الملفات التي تفتحها تطبيقات أخرى بشكل غريب.
في Windows يقدم علامة تحويل نص ("t") يمكنها تحويل \n بشكل شفاف إلى \r\n. ويمكن استخدام "b" أيضًا لتشجيع استخدام النمط الثنائي، حيث لا يتم تحويل البيانات. لتشغيل هذه العلامات، يجب استخدام "b" أو "t" كآخر حرف في معامل mode.
يُعتمد نمط التحويل الافتراضي على SAPI ونسخة PHP المستخدمة، لذا من أجل التطبيق المتعدد، يُشجع دائمًا على تحديد العلامة المناسبة. إذا كنت تعمل على ملف نصي نظيف وتستخدم \n كعلامة النهاية في النصوص، ولكن تريد أن تقرأ هذه الملفات من قبل تطبيقات أخرى مثل Notepad، استخدم "t" في mode. في جميع الحالات الأخرى استخدم "b".
قد تواجه بعض المشاكل الغريبة عند العمل على ملفات ثنائية بدون تحديد علامة "b"، بما في ذلك ملفات الصور التالفة ومشاكل غريبة حول الأحرف \r\n.
التعليقات:من أجل التطبيق المتعدد، يُنصح بشدة دائمًا باستخدام علامة "b" عند فتح الملفات باستخدام fopen().
التعليقات:مرة أخرى، من أجل التطبيق المتعدد، يُنصح بشدة بإعادة كتابة الرموز التي تعتمد على نمط "t" لاستخدام علامات النهاية الصحيحة وتغييرها إلى نمط "b".
实例
<?php $file = fopen("test.txt","r"); $file = fopen("/home/test/test.txt","r"); $file = fopen("/home/test/test.gif","wb"); $file = fopen("http://www.example.com/","r"); $file = fopen("ftp://user:password@example.com/test.txt","w"); ?>