ฟังก์ชัน fopen() ของ PHP

คำนิยามและวิธีใช้

ฟังก์ชัน fopen() ทำงานในการเปิดแฟ้มหรือ URL

ถ้าเปิดไม่สำเร็จ ฟังก์ชันนี้จะกลับค่า FALSE

รูปแบบ

fopen(filename,mode,include_path,context)
ประกาศ คำอธิบาย
filename จำเป็น กำหนดแฟ้มหรือ URL ที่ต้องการเปิด
mode จำเป็น กำหนดชนิดการเข้าถึงแฟ้ม/กระแส ค่าที่อาจมีดูในตารางด้านล่าง
include_path ตัวเลือกได้ ถ้าต้องการที่จะค้นหาแฟ้มใน include_path แล้ว จะสามารถตั้งค่าประกาศนี้เป็น 1 หรือ TRUE
context ตัวเลือกได้ กำหนดสภาพแวดล้อมของโหมดแฟ้ม โดย Context คือชุดตัวเลือกที่สามารถเปลี่ยนพฤติกรรมของกระแส

ค่าที่อาจมีของประกาศ mode

mode แสดง
"r" เปิดแฟ้มด้วยโหมดอ่านเท่านั้น ให้ตัวชนะแฟ้มไปที่หัวแฟ้ม
"r+" เปิดแฟ้มด้วยโหมดการเขียนและอ่าน ให้ตัวชนะแฟ้มไปที่หัวแฟ้ม
"w" เปิดแฟ้มด้วยโหมดเขียน ให้ตัวชนะแฟ้มไปที่หัวแฟ้มและตัดขนาดแฟ้มเป็น 0 ถ้าแฟ้มไม่มีอยู่ จะพยายามสร้างแฟ้ม
"w+" เปิดแฟ้มด้วยโหมดการเขียนและอ่าน ให้ตัวชนะแฟ้มไปที่หัวแฟ้มและตัดขนาดแฟ้มเป็น 0 ถ้าแฟ้มไม่มีอยู่ จะพยายามสร้างแฟ้ม
"a" เปิดแฟ้มด้วยโหมดเขียน ให้ตัวชนะแฟ้มไปที่ท้ายแฟ้ม ถ้าแฟ้มไม่มีอยู่ จะพยายามสร้างแฟ้ม
"a+" เปิดแฟ้มด้วยโหมดการเขียนและอ่าน ให้ตัวชนะแฟ้มไปที่ท้ายแฟ้ม ถ้าแฟ้มไม่มีอยู่ จะพยายามสร้างแฟ้ม
"x"

สร้างและเปิดแฟ้มด้วยโหมดเขียน ให้ตัวชนะแฟ้มไปที่หัวแฟ้ม ถ้าแฟ้มมีอยู่แล้ว fopen() จะผิดพลาดและกลับค่า FALSE และสร้างข้อความข้อเตือนระดับ E_WARNING ถ้าแฟ้มไม่มีอยู่ จะพยายามสร้างแฟ้ม

นี้เท่ากับกำหนดท่าทางหลังที่ระบบปฏิบัติการ open(2) ว่า O_EXCL|O_CREAT

ตัวปรับเปลี่ยนนี้ได้รับการสนับสนุนโดย PHP 4.3.2 และเวอร์ชันต่อมา และสามารถใช้เมื่อเป็นไฟล์ท้องถิ่นเท่านั้น

"x+"

สร้างและเปิดไฟล์ด้วยโมด์การเขียน/อ่าน และใช้ตำแหน่งบิตเดียวกับหัวไฟล์ ถ้าไฟล์มีอยู่แล้ว การเรียก fopen() จะล้มเหลวและกลับคืน FALSE และสร้างข้อความความผิดพลาดระดับ E_WARNING ถ้าไฟล์ไม่มีอยู่จะพยายามสร้างไฟล์

นี้เท่ากับกำหนดท่าทางหลังที่ระบบปฏิบัติการ open(2) ว่า O_EXCL|O_CREAT

ตัวปรับเปลี่ยนนี้ได้รับการสนับสนุนโดย PHP 4.3.2 และเวอร์ชันต่อมา และสามารถใช้เมื่อเป็นไฟล์ท้องถิ่นเท่านั้น

แสดง

fopen() จะ filename ที่กำหนดเป็นชื่อทรัพยากรที่จะมอบไว้ให้เป็นต้นกระแส ถ้า filename คือ "scheme://...ถ้ามีรูปแบบ "" จะถือว่าเป็น URL และ PHP จะค้นหาโปรแกรมประมวลผลโปรโตคอล (หรือเรียกว่าโปรโตคอลแฉลบ) ที่จะประมวลผลโมด์นี้ ถ้าโปรโตคอลนี้ยังไม่ได้ลงทะเบียนเป็นโปรโตคอลแฉลบ ตัวประกาศจะออกมาช่วยตรวจสอบปัญหาที่อาจซ่อนตัวในสคริปต์ filename จะทำต่อไปตามที่กำหนดให้เป็นไฟล์ชื่อปกติ

ถ้า PHP คิดว่า filename ที่กำหนดเป็นไฟล์ท้องถิ่น จะพยายามเปิดกระแสบนั้นบนไฟล์ ซึ่งไฟล์จะต้องเป็นสิ่งที่ PHP สามารถเข้าถึงได้ ดังนั้นจะต้องยืนยันว่าสิทธิ์การเข้าถึงไฟล์ที่อนุญาตให้เข้าถึงเช่นนั้น หากเปิดใช้งานโมด์ความปลอดภัยหรือ open_basedir จะมีการจำกัดเพิ่มเติม

ถ้า PHP คิดว่า filename ที่กำหนดเป็นโปรโตคอลที่ลงทะเบียนแล้ว และโปรโตคอลนี้ถูกลงทะเบียนเป็น URL ระบบเครือข่าย และ PHP จะตรวจสอบและยืนยันว่า allow_url_fopen ได้ถูกเปิดใช้งาน ถ้าถูกปิดออก PHP จะออกประกาศเตือน และการเรียกใช้ fopen จะล้มเหลว

เกี่ยวข้องกับ context เพิ่มการสนับสนุนเข้ามาใน 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");
?>