คำนำ:
PHP รองรับการทำงานของฐานข้อมูลต่าง ๆ และยังมีวิธีดำเนินการมากมายสำหรับการทำงานของไฟล์ การดำเนินการปัจจุบันของเพื่อน ๆ หลายคนยังคงขึ้นอยู่กับการทำงานของไฟล์ แต่บางครั้งก็ยังมีความสับสนและข้อสงสัยมากมายเมื่อใช้งานไฟล์ ดังต่อไปนี้ คือชุดของปัญหาบางอย่างเกี่ยวกับการทำงานของไฟล์ที่ฉันพบในกระบวนการเขียนรายวันและที่เพื่อนของฉันในฟอรัมพบ
ถาม: จะสร้างไฟล์ใหม่ได้อย่างไร?
คำตอบ:
1. ใช้ fopen (ชื่อไฟล์ที่จะสร้าง, พารามิเตอร์), พารามิเตอร์สามารถเป็น w, w+, a, a+
2. ใช้ exec (echo '' > ชื่อไฟล์ที่จะสร้าง); วิธีการของระบบในการสร้างไฟล์ คุณยังสามารถใช้คำสั่ง touch Linux เพื่อสร้าง
ไฟล์ได้Q: ทำไมฉันไม่สามารถสร้างไฟล์ได้?
คำตอบ:
1. หากคุณใช้ fopen เพื่อสร้างไฟล์ คุณใช้พารามิเตอร์อย่างถูกต้องหรือไม่
2. สำหรับปัญหาการอนุญาตของระบบ โปรดสอบถาม WEBMASTER ของคุณว่าไดเร็กทอรี FTP ของคุณมีสิทธิ์ในการเขียนหรือไม่
3. สำหรับปัญหาการอนุญาต FTP คุณต้องยืนยัน PHP ของคุณ ไดเร็กทอรีที่จะเขียนไฟล์จะต้องมีสิทธิ์ในการเขียน นั่นคือหลังจากเข้าสู่ระบบซอฟต์แวร์ FTP ของคุณแล้ว กลุ่มอื่นจะต้องมีสิทธิ์ในการเขียน
ถ้าไม่ โปรดแก้ไขการอนุญาตแล้วลอง
ถาม: จะอ่านไฟล์ลงในอาร์เรย์ได้อย่างไร
คำตอบ: ใช้ฟังก์ชันไฟล์
คำถาม: จะอ่านไฟล์ทั้งหมดได้อย่างไร?
คำตอบ:
1. ใช้ fread($fp);
2. หากเวอร์ชัน PHP ของคุณ >= 4.3.0 คุณสามารถใช้ file_get_contents();
ถาม: จะทราบได้อย่างไรว่ามีไฟล์อยู่หรือไม่?
คำตอบ: ใช้ file_exists();
ถามอีกครั้ง: ทำไมไม่ใช้ fopen() เพื่อตัดสิน?
คำตอบ: เหตุผลก็คือบางครั้งข้อมูลที่ส่งกลับโดย fopen ทำให้เราตัดสินผิดเนื่องจากปัญหาการอนุญาต
คำถาม: เหตุใดจึงเกิดข้อผิดพลาดเมื่อฉันอ่านหน้าเว็บ
คำตอบ:
1. อาจเป็นไปได้ว่าพารามิเตอร์ที่ส่งผ่านของคุณไม่ถูกต้อง เมื่ออ่านหน้าเว็บ คุณสามารถใช้โหมด r เพื่ออ่านหน้าเว็บเท่านั้น
2. ตรวจสอบให้แน่ใจว่าหน้าเว็บที่คุณต้องการอ่านสามารถเข้าถึงได้
อย่างไร ฉันได้รับคุณสมบัติที่เกี่ยวข้องของไฟล์หรือไม่
คำตอบ: PHP มีชุดวิธีการในการรับคุณสมบัติของไฟล์ เช่น filemtime(), fileowner(), filegroup(), filectime(), fileatime()... โปรดดูคู่มือการใช้งานโดยละเอียด
คำถาม: หลังจากเปิดไฟล์ใน PHP แล้ว ฉันสามารถวางตำแหน่งไฟล์ "เคอร์เซอร์" เช่น C ได้หรือไม่
คำตอบ: ใช่ ใช้ fseek();
คำถาม: ฉันต้องการป้องกันไม่ให้ผู้อื่นเข้าถึงไฟล์เมื่อเข้าถึงไฟล์นั้น ฉันควรทำอย่างไร?
คำตอบ:
1. คุณสามารถใช้โปรแกรมอื่นเพื่อจำกัดไม่ให้ผู้ใช้เข้าถึงเพจสำหรับการทำงานของไฟล์ได้
2.
ใช้ flock(); สำหรับพารามิเตอร์โดยละเอียดและวิธีการใช้งาน โปรดดูที่คู่มือ
ไฟล์หรือระบุบรรทัดข้อมูล?
คำตอบ:
PHP ไม่มีวิธีดำเนินการดังกล่าว แต่เราสามารถใช้ร่วมกันได้ โค้ดต่อไปนี้แสดงให้เห็นว่าเราจะลบข้อมูลบรรทัดที่สามในไฟล์ test.dat (ข้อมูลในไฟล์ test.dat มีมากกว่า สามบรรทัด)
<?php
$filename=test.dat; //กำหนดไฟล์การดำเนินการ $delline=3; //จำนวนบรรทัดที่จะลบ if(!file_exsits($filename)){
die (ไม่พบไฟล์ที่ระบุ! การดำเนินการถูกขัดจังหวะ!);
-
$farray=file($filename);//อ่านข้อมูลไฟล์ลงในอาร์เรย์สำหรับ($tmpa=0;$Tmpa<count($farray);$Tmpa++){
ถ้า(strcmp($Tmpa+1,$delline)==0){
//ผู้พิพากษาลบแถวดำเนินการต่อ;
-
//จัดเรียงข้อมูลใหม่ $newfp.=$farray[$Tmpa].\r\n;
-
$fp=@fopen($filename,a ) or die(ไม่สามารถเปิดไฟล์ $filename ในโหมดการเขียน);//เราเปิดไฟล์ในโหมดการเขียน @fputs($fp,$newfp) or die(ไม่สามารถเขียนไฟล์ได้ );
@fclose($fp);
?>
โค้ดข้างต้นแสดงให้เห็นถึงการลบบรรทัดของไฟล์ แต่ถ้าคุณดูดีๆ จริงๆ แล้วมันจะแจ้งเตือนคุณเกี่ยวกับการดำเนินการกับไฟล์อื่นๆ จริงๆ~
คำถาม: เมื่อฉันพยายามเปิดไฟล์ที่ไม่มีอยู่ ฉันจะไม่ยอมให้ไฟล์นั้นหายไปได้อย่างไร เกิดข้อผิดพลาดเพื่อหลีกเลี่ยงไม่ให้เส้นทางของฉันรั่วไหล! -
คำตอบ: เพิ่มสัญลักษณ์ @ หน้าวิธีที่คุณต้องการเปิดไฟล์เพื่อบล็อกข้อผิดพลาด @ เป็นสัญลักษณ์พิเศษที่ PHP เตรียมไว้ให้เพื่อบล็อกข้อความแสดงข้อผิดพลาด หรือคุณสามารถเพิ่ม (โดยปกติจะอยู่ที่ด้านบนของหน้า) error_reporting(0) ไว้ข้างหน้า ขั้นตอนที่คุณต้องการดำเนินการ ) ใช้เพื่อบล็อกการแสดงข้อความแสดงข้อผิดพลาดทั้งหมดบนเพจ วิธีที่ไม่แนะนำคือการแก้ไข php.ini (ยกเว้น ISP)
ถาม: ฉันใช้โฮสต์เสมือน ฉันจะป้องกันไม่ให้ผู้ใช้รายอื่นขโมยข้อมูลของฉันได้อย่างไร
คำตอบ: ขอแนะนำให้ ISP แก้ไข open_basedir ใน php.ini เพื่อดูข้อจำกัด การตั้งค่า ISP ที่ไม่แนะนำคือเพิ่มการทำงานของไฟล์ เช่น fopen และ file เพื่อปิดการใช้งาน_function
คำถาม: เหตุใดฉันจึงไม่สามารถลบไฟล์เหล่านี้ได้หลังจากที่ฉันใช้ PHP เพื่อลบมันเมื่อฉันเข้าสู่ระบบผ่าน FTP -
คำตอบ: ส่วนใหญ่เป็นเพราะไฟล์ที่สร้างโดย PHP เป็นของกลุ่มผู้ใช้ WEB นั่นคือไฟล์ที่สร้างขึ้นไม่ได้เป็นของผู้ใช้ FTP ของคุณ! - - วิธีแก้ไขปัญหานี้คือการใช้วิธี chmod, unlink ฯลฯ ของโปรแกรม PHP ขอแนะนำให้ผู้ใช้จำสิทธิ์ของไฟล์ chmod เมื่อใช้ PHP เพื่อสร้างไฟล์ คำถาม
: วิธีใช้ไฟล์ข้อความ เป็นคลังข้อมูล? สมุดเยี่ยมชม กระดานสนทนา ฯลฯ ทั้งหมดใช้สิ่งนี้!
คำตอบ: อันที่จริง สิ่งนี้ใช้ไฟล์เป็นหลัก และเป็นตัวอย่างทั่วไปของการอ่านข้อมูลและการแบ่งส่วนรวมกับการระเบิด
ถาม: ฉันจะเปลี่ยนชื่อไฟล์ได้อย่างไร?
คำตอบ: เปลี่ยนชื่อ();
ถาม: จะลบไฟล์ได้อย่างไร?
คำตอบ: unlink(); exec(del(rm -vf) filename);
หมายเหตุ: rm -vf ถูกใช้ภายใต้ Linux.
คำถาม: จะล้างไฟล์ได้อย่างไร?
คำตอบ: ใช้ fopen(filename,w); หรือ exec(echo '' > filename);
ถาม: จะแก้ไขเนื้อหาไฟล์ได้อย่างไร?
คำตอบ: ฉันจำได้ว่าครั้งหนึ่งฉันเคยตอบคำถามเกี่ยวกับการลบเนื้อหาไฟล์ ที่จริงแล้ว การแก้ไขเนื้อหาจำเป็นต้องมีการทดแทนตัวแปรตามการลบเนื้อหาเท่านั้น ฉันหวังว่าคุณจะสามารถค้นหาและเปลี่ยนแปลงการดำเนินการต่อด้านบนเพื่อแทนที่ข้อมูลตัวแปรได้