PHP যেহেতু সার্ভারে চলে, এটি সেই একই সার্ভারে থাকা ফাইল পড়তে আর লিখতে পারে — লগ, ক্যাশ করা ডেটা, একটি সম্পূর্ণ ডেটাবেস ছাড়াই সহজ টেক্সট-ভিত্তিক স্টোরেজ।
<?php
$content = file_get_contents("notes.txt");
echo $content;
?><?php
file_put_contents("notes.txt", "Hello, file!"); // overwrites
file_put_contents("notes.txt", "\nAnother line.", FILE_APPEND); // appends instead
?>একটি বড় ফাইলের জন্য, file_get_contents() দিয়ে একবারে পুরোটা মেমরিতে পড়া অপচয়মূলক — এটাকে একটি handle হিসেবে খুলে একবারে একটি লাইন পড়া বেশি কার্যকর:
<?php
$handle = fopen("notes.txt", "r");
while (($line = fgets($handle)) !== false) {
echo $line;
}
fclose($handle);
?>যা fopen() করেছেন তা সবসময় বন্ধ করুন
fopen() দিয়ে খোলা একটি ফাইল handle-এর কাজ শেষ হলে সবসময় fclose() কল করুন — অপ্রয়োজনীয়ভাবে ফাইল খোলা রাখলে অন্য প্রসেস থেকে সেগুলো লক হয়ে যেতে পারে আর একটি দীর্ঘ-চলমান সার্ভারে রিসোর্স leak করতে পারে।
<?php
if (file_exists("notes.txt")) {
echo "File exists.";
}
if (is_writable("notes.txt")) {
echo "File can be written to.";
}
?>user-সরবরাহকৃত ফাইল path কখনো বিশ্বাস করবেন না
এই ফাংশনগুলোর সাথে ব্যবহৃত যেকোনো path কখনো সতর্ক ভ্যালিডেশন ছাড়া সরাসরি user input থেকে আসা উচিত নয় — একটি visitor-নিয়ন্ত্রিত ফাইল path একটি গুরুতর সিকিউরিটি ঝুঁকি (একজন আক্রমণকারী সম্ভবত আপনার উদ্দেশ্যের বাইরের ফাইল পড়তে বা ওভাররাইট করতে পারে)। ফাইল আপলোড জড়িত হলে এটি বিশেষভাবে প্রাসঙ্গিক হয়ে ওঠে।