PHP fopen() ການຈັດການ

ການສະເພາະນິຍົມ

fopen() ການເປີດເອກະສານຫລື URL.

ຖ້າບໍ່ສຳເລັດ, ຫົວຫລັກການຈະກັບຄືນ FALSE.

ວິທີການ

fopen(filename,mode,include_path,context)
ປະເພດ ການອະທິບາຍ
filename ສະເພາະ. ກຳນົດບັນຊີ/URL ທີ່ຕ້ອງເປີດ.
mode ສະເພາະ. ກຳນົດການເຂົ້າຫາບັນຊີ/ສາຍທີ່ຕ້ອງການ. ອັດຕາທີ່ສາມາດເຫັນໃນຕາມການລະບຸ.
include_path ທາງເລືອກ. ຖ້າຕ້ອງການຊອກຫາເອກະສານໃນ include_path ກໍ່ຈະກວດສອບມັນ.
context ທາງເລືອກ. ປະກອບດ້ວຍການກຳນົດບັນຊີໃນການເປີດບັນຊີ. Context ແມ່ນການແກ້ໄຂການດຳເນີນງານຂອງສາຍ.

ອັດຕາທີ່ສາມາດກວດສອບຂອງ mode

mode 说明
"r" ເປີດໃນລະຫວ່າງການອ່ານພຽງ, ການຂັບເພີ່ມຫາຫົວໜ້າເອກະສານ.
"r+" ເປີດໃນລະຫວ່າງການຂຽນແລະອ່ານ, ການຂັບເພີ່ມຫາຫົວໜ້າເອກະສານ.
"w" ເປີດໃນລະຫວ່າງການຂຽນ, ການຂັບເພີ່ມຫາຫົວໜ້າເອກະສານແລະການຕັດຂະໜາດເອກະສານເປັນຫົວໜ້າ. ຖ້າເອກະສານບໍ່ມີຢູ່ຈະພະຍາຍາມສ້າງມັນ.
"w+" ເປີດໃນລະຫວ່າງການຂຽນແລະອ່ານ, ການຂັບເພີ່ມຫາຫົວໜ້າເອກະສານແລະການຕັດຂະໜາດເອກະສານເປັນຫົວໜ້າ. ຖ້າເອກະສານບໍ່ມີຢູ່ຈະພະຍາຍາມສ້າງມັນ.
"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://...ທີ່ມີຮູບແບບ "" ຈະຖືກພິຈາລະນາວ່າເປັນສາຍລາຍ, PHP ຈະຊອກຫາຄວາມຂັ້ນການຂັດໂຕ (ທີ່ເອີ້ນວ່າ ຂັ້ນການປ່ຽນຂັ້ນການ) ເພື່ອຈັດການການຂັ້ນການຂັ້ນການນີ້. ຖ້າຂັ້ນການຂັ້ນການບໍ່ໄດ້ຖືກນຳໃຊ້ຂັ້ນການປ່ຽນຂັ້ນການ, PHP ຈະອອກມາຂໍ້ຄວາມຊ່ວຍເຫຼືອເພື່ອກວດກາຄວາມຜິດຫວັງທີ່ມີໃນບົດສະຫລອງ. filename ທີ່ຈະສືບຕໍ່ເປັນບັນຊີທີ່ປົກກະຕິ.

ຖ້າ PHP ຄິດວ່າ filename ທີ່ກໍານົດເປັນບັນຊີທີ່ພາຍໃນ, PHP ຈະພະຍາຍາມເປີດແບບການຫາງ. ບັນຊີນີ້ຕ້ອງເປັນບັນຊີທີ່ PHP ສາມາດເຂົ້າເຖິງ, ແລະຕ້ອງຢືນຢັນວ່າສະຖານະການການເຂົ້າເຖິງບັນຊີຈະອະນຸຍາດ. ຖ້າມີການເປີດທາງຄວາມປອດໄພຫຼື open_basedir, ຈະມີການກວດກາອີກຂັ້ນວັດທະນະທຳ.

ຖ້າ PHP ຄິດວ່າ filename ທີ່ກໍານົດເປັນຂັ້ນການຫມາຍຄວາມທີ່ລະບຸກັບຂັ້ນການຫມາຍສາຍລາຍ, PHP ຈະກວດກາແລະຢືນຢັນວ່າ allow_url_fopen ໄດ້ຖືກເປີດ. ຖ້າປິດ, PHP ຈະອອກມາການອອກມາຄວາມເຕືອນ, ແລະການເອິ້ນ fopen() ຈະລົ້ມ.

ຕໍ່ context ຂອງພາສາ support ໄດ້ຖືກເພີ່ມໃຫ້ໂດຍ 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");
?>