ایجاد، نوشتن، خواندن و حذف فایل‌ها در PHP

آفلاین
user-avatar
عرفان حشمتی
26 آبان 1400, خواندن در 9 دقیقه

در این مقاله قصد داریم نحوه مدیریت فایلها در PHP را آموزش دهیم. بنابراین Create، Read، Write و Delete را با استفاده از توابع داخلی مدیریت فایل بررسی خواهیم کرد.

مدیریت فایل کاری است که اغلب به عنوان یک توسعه‌دهنده PHP باید انجام دهید.

بدین منظور می‌توانید از توابع مدیریت فایل PHP برای دستکاری فایل‌ها به روش‌های مختلف استفاده کنید. این توابع را می‌توان برای ساخت ویژگی‌هایی در برنامه استفاده کرد که از ثبت خطاهای سفارشی گرفته تا ذخیره فایل‌های کش شده را شامل می‌شود. نمونه‌هایی از ابزارهای کاربردی که می‌توانید با این توابع بسازید عبارتند از:

  • ابزارهای سفارشی گزارش‌گیری و دیباگینگ
  • ذخیره‌سازی پیکربندی برنامه
  • فرانت-اند و حافظه کش برنامه
  • پشتیبانی بومی‌سازی
  • و خیلی موارد دیگر

PHP چندین توابع مدیریت فایل را در اختیارتان می‌گذارد که به شما امکان می‌دهد عملیات مختلفی را انجام دهید، مانند:

  • یک فایل ایجاد و باز کنید
  • در فایل بنویسید
  • از روی فایل بخوانید
  • فایل را حذف کنید
  • فایل را ببندید

در ادامه هر کدام از عملیات فایل را همراه با نمونه‌هایی از نحوه استفاده آنها با هم مرور می‌کنیم. به علاوه شما را تشویق می‌کنم که نمونه‌های موجود در این آموزش را همانطور که دنبال می‌کنید خودتان امتحان کرده تا بتوانید عملا آن‌ها یاد بگیرید و بفهمید که چگونه کار می‌کنند. اگر هم موردی همانطور که انتظار می‌رود برای شما کار نکرد، در انتهای این آموزش سوالات خود را مطرح نمایید.

نحوه ایجاد و باز کردن یک فایل

در این بخش نحوه ایجاد و باز کردن یک فایل را مشاهده خواهیم کرد.

وقتی نوبت به ایجاد یک فایل می‌رسد، تابع fopen است که بیشتر اوقات از آن استفاده خواهید کرد. ممکن است استفاده از تابع fopen برای ایجاد یک فایل کمی گیج کننده به نظر برسد. اما در واقع این تابع دو کار انجام می‌دهد: اگر فایلی وجود نداشته باشد، آن را ایجاد کرده و همچنین آن را برای عملیات خواندن یا نوشتن باز می‌کند.

بیایید مثال زیر را مرور کنیم تا بفهمیم روند کار به چه صورت است.

<?php
$file_handle = fopen('/home/tutsplus/files/tmp.txt', 'w');
?>

در مثال بالا، تابع fopen بررسی می‌کند که آیا فایل /home/tutsplus/files/tmp.txt وجود دارد یا خیر، اگر وجود داشته باشد آن را برای نوشتن باز می‌کند. با وارد کردن 'w' در آرگومان دوم، مشخص می‌کنیم که در حال نوشتن روی فایل هستیم. اگر فایل وجود نداشته باشد، بلافاصله ایجاد می‌شود. در اینجا ذکر این نکته مهم است که دایرکتوری /home/tutsplus/files/ در مثال بالا باید توسط کاربر وب سرور قابل نوشتن باشد تا تابع fopen بتواند یک فایل ایجاد کند.

اولین آرگومان تابع fopen نام فایلی است که می‌خواهید باز کنید. در مثال بالا، ما نام فایل /home/tutsplus/files/tmp.txt را در آرگومان اول ارائه کرده‌ایم. باز هم مهم است که توجه داشته باشید ما یک مسیر دقیق را ذکر کرده‌ایم.

آرگومان دوم حالتی است که نوع دسترسی شما به فایل باز شده را مشخص می‌کند. تابع fopen حالت‌های مختلفی را ارائه می‌دهد که می‌توانید از بین آن‌ها انتخاب کنید. مثلا:

  • حالت r به منظور باز کردن فایل برای خواندن
  • حالت +r هم برای خواندن و هم برای نوشتن
  • حالت a برای خواندن و اضافه کردن

در مثال ما از حالت w استفاده کرده‌ایم که فایل /home/tutsplus/files/tmp.txt را فقط برای نوشتن باز می‌کند. هر چند به راحتی می‌توانید مستندات رسمی را مرور کنید تا حالت‌های مختلف پشتیبانی شده توسط تابع fopen را یاد بگیرید.

fopen همچنین یک اشاره‌گر سیستم فایل را برمی‌گرداند که برای سایر عملکردهای فایل مانند خواندن و نوشتن استفاده می‌شود.

چگونه می‌توان فایل‌ها را به صورت از راه دور باز کرد؟

تابع fopen فقط برای فایل‌های محلی نیست. این از پروتکل‌های دیگر نیز پشتیبانی می‌کند و می‌تواند فایل‌ها را از جای دیگری در شبکه یا وب به صورت ریموت (از راه دور) باز کند. اگر دستور allow_url_fopen را در PHP فعال کرده باشید، می‌توانید فایل‌ها را از راه دور نیز باز کنید.

<?php
$file_handle = fopen('https://your-website-url/tmp.txt', 'r');
?>

توجه به این نکته بسیار مهم است که وقتی دستور allow_url_fopen را فعال می‌کنید، برخی از خطرات امنیتی ممکن است ایجاد شوند؛ زیرا درها را برای اجرای فایل از راه دور و سایر حملات باز می‌کنید. بنابراین اگر می‌خواهید چنین دستوراتی را فعال نمایید، مطمئن شوید که اقدامات امنیتی بیشتری را در برنامه خود انجام دهید.

نحوه نوشتن بر روی یک فایل

چند روش مختلف وجود دارد که می‌توانید با بهره‌گیری از آن‌ها در یک فایل به وسیله PHP بنویسید.

تابع fwrite

اولین و مهمترین تابع fwrite است که به شما امکان می‌دهد محتویات رشته را در جریان فایلی که توسط مدیریت فایل ارجاع داده شده است بنویسید. بیایید به مثال زیر نگاهی بیاندازیم تا ببینیم چگونه کار می‌کند.

<?php
$file_handle = fopen('/home/tutsplus/files/tmp.txt', 'a+');
fwrite($file_handle, 'Tuts+ is a great online resource to learn skills you want!');
fwrite($file_handle, "\n");
fwrite($file_handle, 'Visit tutsplus.com to know more!');
fclose($file_handle);
?>

ابتدا فایل /home/tutsplus/files/tmp.txt را با حالت +a باز کرده‌ایم که آن را برای خواندن و نوشتن آماده می‌کند و نشانگر فایل در انتهای آن قرار می‌گیرد. بنابراین محتوای ما پس از هر محتوای دیگری به انتهای فایل اضافه می‌شود. در مرحله بعد، از تابع fwrite برای نوشتن یک رشته استفاده کرده‌ایم.

اولین آرگومان تابع fwrite، نشانگر سیستم فایل است که توسط fopen بازگردانده می‌شود، به این ترتیب fwrite می‌داند در کجا بنویسد. آرگومان دوم رشته‌ای است که می‌خواهیم در فایل بنویسیم. همانطور که در مثال بالا مشاهده می‌کنید، می‌توانید قبل از بستن فایل از تابع fwrite چندین بار برای نوشتن یک سری رشته استفاده نمایید.

در نهایت از تابع fclose برای بستن فایل استفاده کرده‌ایم. این فقط یک آرگومان لازم دارد و آن هم نشانگر فایلی است که می‌خواهید بسته شود. بستن فایل‌ها با استفاده از تابع fclose پس از اتمام عملیات فایل، همیشه تمرین خوبی است.

تابع file_put_contents: میانبری برای نوشتن در فایل‌ها

در بخش قبل تابع fwrite را که برای نوشتن در یک فایل استفاده می‌شود، مورد بحث قرار دادیم. حتما متوجه شده‌اید که اگر می‌خواهید در یک فایل بنویسید، ابتدا باید آن را با تابع fopen باز کنید. پس از آن باید از تابع fwrite برای نوشتن اطلاعات خود در یک فایل استفاده نمایید و در نهایت باید از تابع fclose برای بستن فایل کمک بگیرید.

اگر این فرایند به نظر شما خیلی طولانی است، پس می‌توانید از میانبر file_put_contents استفاده کنید. این تابع به شما امکان می‌دهد داده‌ها را تنها با یک بار فراخوانی در فایل بنویسید.

بیایید ببینیم چگونه کار می‌کند.

<?php
file_put_contents('/home/tutsplus/files/tmp.txt', "Tuts+ is a great online resource to learn skills you want! \n Visit tutsplus.com to know more!");
?>

آرگومان اول تابع file_put_contents نام فایل است و آرگومان دوم رشته‌ای است که می‌خواهید در فایل بنویسید. اگر فایل وجود نداشته باشد، ایجاد می‌گردد.

همانطور که می‌بینید، تابع file_put_contents یک میانبر زمانی است که شما فقط می‌خواهید بخشی از داده را در یک فایل بنویسید.

نحوه خواندن از روی یک فایل

تا اینجا می‌دانید که چگونه یک فایل را ایجاد کرده و در آن بنویسید. در این بخش نحوه خواندن از روی یک فایل را به شما نشان خواهیم داد.

تابع fread

تابع fread به شما امکان می‌دهد از یک فایل بخوانید. این تابع شبیه fwrite است، اما باید طول فایل را در بایت‌هایی که می‌خواهید بخوانید مشخص کنید.

بیایید مثال زیر را بررسی کنیم تا بفهمیم چگونه کار می‌کند.

<?php
$file_handle = fopen('/home/tutsplus/files/tmp.txt', 'r');
$contents = fread($file_handle, filesize('/home/tutsplus/files/tmp.txt'));
fclose($file_handle);
?>

چون که می‌خواهیم از فایل /home/tutsplus/files/tmp.txt بخوانیم، آن را با حالت r باز کرده و در مرحله بعد از تابع fread برای خواندن تمام محتویات فایل در متغیر $content استفاده کرده‌ایم.

اولین آرگومان تابع fread نشانگر فایل سیستم است تا بداند از کجا باید بخواند. آرگومان دوم طول بر حسب بایت است که می‌خواهید از یک فایل بخوانید. در این مثال ما می‌خواهیم تمام محتویات فایل /home/tutsplus/files/tmp.txt را بخوانیم، بنابراین از تابع filesize برای اندازه فایل استفاده کرده‌ایم.

تابع file_get_contents: میانبری برای خواندن از فایل‌ها

در قسمت قبل در مورد تابع fread صحبت کردیم که به شما امکان می‌داد با مشخص کردن طول بایت‌هایی که می‌خواستید بخوانید، یک فایل را بخواند. اما اگر می‌خواهید یک فایل کامل را یکجا بخوانید، تابعی به نام file_get_contents وجود دارد که به شما اجازه می‌دهد این کار را انجام دهید.

بیایید نحوه کار آن را در عمل ببینیم.

<?php
$contents = file_get_contents('/home/tutsplus/files/tmp.txt');
?>

همانطور که مشاهده می‌کنید، استفاده از تابع file_get_contents بسیار ساده است. فقط کافی است نام فایل را در آرگومان اول قرار دهید.

نحوه حذف یک فایل

در بخش آخر خواهیم دید که چگونه می‌توانید فایل‌ها را حذف کنید. برای حذف یک فایل در PHP از تابع unlink استفاده می‌شود. بیایید یک مثال را مرور کنیم تا ببینیم چگونه کار می‌کند.

<?php
If (unlink('/home/tutsplus/files/tmp.txt')) {
  // file was successfully deleted

} else {

  // there was a problem deleting the file
}
?>

اولین آرگومان تابع unlink نام فایلی است که می‌خواهید آن را حذف نمایید. این تابع بسته به موفقیت آمیز بودن عملیات حذف، TRUE یا FALSE را برمی‌گرداند.

جمع‌بندی

در این آموزش به اصول مدیریت فایل در PHP پرداختیم. همچنین عملیات مختلفی را که می‌توانید با استفاده از توابع فایل در PHP انجام دهید، مورد بحث قرار دادیم. امیدوارم این توضیحات برایتان مفید واقع شود. اگر هرگونه سوال یا نظری دارید، می‌توانید آن را در بخش زیر با ما در میان بگذارید.

منبع

چه امتیازی به این مقاله می دید؟
خیلی بد
بد
متوسط
خوب
عالی

دیدگاه‌ها و پرسش‌ها

برای ارسال دیدگاه لازم است، ابتدا وارد سایت شوید.

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

آفلاین
user-avatar
عرفان حشمتی @heshmati74
مهندس معماری سیستم های کامپیوتری، طراح و توسعه دهنده وب سایت
دنبال کردن

گفتگو‌ برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن وارد شو