توابع fopen() PHP
تعریف و استفاده
توابع fopen() فایل یا URL را باز میکند.
اگر باز کردن شکست بخورد، این تابع FALSE برمیگرداند.
نحوه استفاده
fopen(نام فایل,mode,include_path,مستند)
پارامترها | توضیح |
---|---|
نام فایل | ضروری. فایل یا URL مورد نظر برای باز کردن را تعیین میکند. |
mode | ضروری. نوع دسترسی مورد نیاز به این فایل/جریان را تعیین میکند. مقادیر ممکن در جدول زیر مشاهده میشود. |
include_path | اختیاری. اگر نیاز به جستجو در include_path نیز باشد، این پارامتر را 1 یا TRUE تنظیم کنید. |
مستند | اختیاری. محیط دستگیره فایل را تعیین میکند. Context مجموعهای از گزینههایی است که میتواند رفتار جریان را تغییر دهد. |
ممکنهیارای mode
mode | توضیح میدهد |
---|---|
"r" | باز کردن فایل به روش خواندن، و حرکت نویزنده به ابتدای فایل. |
"r+" | باز کردن فایل به روش خواندن و نوشتن، و حرکت نویزنده به ابتدای فایل. |
"w" | باز کردن فایل به روش نوشتن، و حرکت نویزنده به ابتدای فایل و اندازه فایل به صفر کاهش مییابد. اگر فایل موجود نباشد، تلاش برای ایجاد آن میشود. |
"w+" | باز کردن فایل به روش خواندن و نوشتن، و حرکت نویزنده به ابتدای فایل و اندازه فایل به صفر کاهش مییابد. اگر فایل موجود نباشد، تلاش برای ایجاد آن میشود. |
"a" | باز کردن فایل به روش نوشتن، و حرکت نویزنده به انتهای فایل. اگر فایل موجود نباشد، تلاش برای ایجاد آن میشود. |
"a+" | باز کردن فایل به روش خواندن و نوشتن، و حرکت نویزنده به انتهای فایل. اگر فایل موجود نباشد، تلاش برای ایجاد آن میشود. |
"x" |
تأسیس و باز کردن فایل به روش نوشتن، و حرکت نویزنده به ابتدای فایل. اگر فایل موجود باشد، فراخوانی fopen() شکست خورده و FALSE برمیگرداند و یک پیام خطای سطح E_WARNING تولید میکند. اگر فایل موجود نباشد، تلاش برای ایجاد آن میشود. این با مشخص کردن تیکهای O_EXCL|O_CREAT برای فراخوانی سیستمعامل base open(2) معادل است. این گزینه از نسخهی PHP 4.3.2 و بعد از آن پشتیبانی میکند و فقط برای فایلهای محلی قابل استفاده است. |
"x+" |
ایجاد و باز کردن به صورت خواندنی و نوشتنی و حرکت نوار پیکربندی به ابتدای فایل. اگر فایل موجود باشد، فراخوانی fopen() شکست خواهد خورد و FALSE را بازخواهد گشت و یک پیام خطای سطح E_WARNING تولید خواهد کرد. اگر فایل موجود نباشد، تلاش برای ایجاد آن خواهد شد. این با مشخص کردن تیکهای O_EXCL|O_CREAT برای فراخوانی سیستمعامل base open(2) معادل است. این گزینه از نسخهی PHP 4.3.2 و بعد از آن پشتیبانی میکند و فقط برای فایلهای محلی قابل استفاده است. |
توضیح میدهد
fopen() خواهد نام فایل این نام منبع به یک جریان متصل میشود. اگر نام فایل این "schema://...در صورت استفاده از فرمت ""، به عنوان یک URL در نظر گرفته میشود و PHP به دنبال پردازشگر پروتکل (که به عنوان پروتکل انباری نیز شناخته میشود) برای پردازش این مدل خواهد بود. اگر این پروتکل به عنوان یک پروتکل انباری ثبت نشده باشد، پیامی برای کمک به بررسی مشکلات بالقوه در اسکریپت صادر خواهد شد و نام فایل به عنوان یک نام فایل معمولی ادامه میدهد.
اگر PHP فکر کند که نام فایل این یک فایل محلی است، سعی خواهد کرد یک جریان را روی این فایل باز کند. این فایل باید قابل دسترسی باشد، بنابراین باید اطمینان حاصل شود که دسترسی به فایل مجاز است. اگر حالت امنیتی یا open_basedir فعال شده باشد، محدودیتهای بیشتری اعمال خواهد شد.
اگر PHP فکر کند که نام فایل این یک پروتکل ثبت شده است که به عنوان یک URL شبکهای ثبت شده است، PHP بررسی و تایید خواهد کرد که allow_url_fopen فعال شده است. اگر غیرفعال شده باشد، PHP یک اخطار خواهد داد و فراخوانی fopen شکست خواهد خورد.
برای مستند پشتیبانی از آن در PHP 5.0.0 اضافه شده است.
پیشنهادات و توضیحات
توضیح:خانوادههای مختلف سیستمعاملها دارای عادتهای مختلف برای پایان سطر هستند. هنگامی که یک فایل متنی را مینویسید و میخواهید یک سطر جدید وارد کنید، باید از نشانهی پایان سطر مناسب سیستمعامل استفاده کنید. سیستمعاملهای مبتنی بر Unix از \n به عنوان نشانهی پایان سطر استفاده میکنند، سیستمعاملهای مبتنی بر Windows از \r\n به عنوان نشانهی پایان سطر استفاده میکنند و سیستمعاملهای مکینتاش از \r به عنوان نشانهی پایان سطر استفاده میکنند. اگر در هنگام نوشتن به فایل از نشانهی پایان سطر نادرست استفاده شود، ممکن است این فایلها در هنگام باز شدن توسط برنامههای دیگر به نظر بسیار عجیب باشند.
در ویندوز یک نشانهی تبدیل متن ("t") ارائه شده است که میتواند به صورت شفاف \n را به \r\n تبدیل کند. با این توجه میتوان از "b" برای اضطراری استفاده از حالت دودویی استفاده کرد، در این حالت دادهها تبدیل نمیشوند. برای استفاده از این نشانهها، باید از "b" یا "t" به عنوان آخرین کاراکتر پارامتر mode استفاده شود.
مودهای پیشفرض وابسته به SAPI و نسخه PHP استفاده شده هستند، بنابراین برای راحتی سازگاری، توصیه میشود که همیشه نشانه مناسب را مشخص کنید. اگر فایلهای متن پاک را عمل میکنید و در اسکریپت از \n به عنوان خط پایان استفاده میکنید و انتظار دارید که این فایلها توسط برنامههای دیگر مانند Notepad خوانده شوند، در mode از "t" استفاده کنید. در همه موارد دیگر از "b" استفاده کنید.
در هنگام عمل با فایلهای باینری، اگر نشانه "b" تعیین نشده باشد، ممکن است با مشکلات عجیبی مواجه شوید، از جمله مشکلات در فایلهای تصویری خراب شده و مشکلات عجیب درباره کاراکترهای \r\n.
توضیح:به دلیل سازگاری، به شدت توصیه میشود که در هنگام باز کردن فایل با fopen() همیشه از نشانه "b" استفاده کنید.
توضیح:دوباره، به دلیل سازگاری، به شدت توصیه میشود که کدهایی که به "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"); ?>