آموزش کاربردی درباره ی فایل تنظیمات PHP


آموزش فایل php.ini درPHP – نکاتی کاربردی درباره ی فایل تنظیمات PHP / تنظیم php.ini

php.ini یک فایل مربوط به اپلیکیشن های تحت وب php است که تنظیمات اپلیکیشن از جمله کنترل و تنظیم اختصاصی رفتار php در زمان اجرا را دربرمی گیرد. به عبارت دیگر php.ini فایل تنظیمات و پیکربندی اپلیکیشن های php در لینوکس است.

با دسترسی به این فایل می توانید تنظیماتی نظیر آنچه در زیر عنوان شده را ویرایش نمایید:

  • پوشه های آپلود و بارگذاری فایل ها
  • ثبت خطاها در فایل و گزارش رخداد آن ها
  • حداکثر زمان اجرای اسکریپت
  • حداکثر حجم فایل قابل آپلود

اولین فایلی که PHP به هنگام اجرا و راه اندازی اولیه فراخوانی می کند، فایل php.ini می باشد. دلیل این تخصیص اولویت، اهمیت بالای دستورهایی (directive) است که تنظیمات اساسی اپلیکیشن را انجام می دهند. پس از تنظیمات لازم در فایل php.ini، بایستی برای اعمال تغییرات و فعال سازی آن ها، سرویس دهنده مجددا راه اندازی گردد.

لازم به ذکر است که یک فایل php.ini آماده، همراه با تنظیمات پیشنهادی به صورت پیش فرض در اختیار توسعه دهنده قرار می گیرد. اغلب ارائه دهندگان سرویس میزبانی وب سایت (hosting provider) که از PHP پشتیبانی می کنند، به شما این امکان را می دهند تا دستورات php.ini خود را به صورت سفارشی تنظیم کرده و رفتار آن ها را مطابق با نیاز مدیریت نمایید. در چنین شرایطی، PHP منحصرا از مقادیری که شما در فایل تنظیمات php.ini برای directive ها اعلان کرده اید، استفاده می کند. آن دسته از تنظیمات که شما به طور صریح در فایل مزبور مقداردهی نمی کنید، توسط PHP مقادیر پیش فرض (از قبل اعلان شده در فایل php.ini) به آن ها اختصاص می یابد.

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

محل قرارگیری فایل php.ini به سروری که اپلیکیشن بر روی آن مستقر بوده و نیز نحوه ی نصب PHP بستگی دارد. در این آموزش محل قرارگیری آن /usr/local/lib/php/php.ini می باشد. محل قرارگیری این فایل در سرور شما ممکن است متفاوت باشد. جهت جستجو و دسترسی به محل فایل php.ini در سرویس دهنده، کافی است تابع phpinfo() را فراخوانی نمایید.

حال به شرح دستورها و تنظیمات کاربردی این فایل می پدازیم:

دستور engine (PHP Engine)

engine = On

اولین تنظیمی که در فایل php.ini با آن مواجه می شوید، دستور engine است. این دستور مشخص می کند آیا موتور PHP روشن باشد یا خیر. به عبارت ساده تر، دستور مزبور تعیین می کند آیا PHP آماده و در دسترس اسکریپت های اپلیکیشن شما می باشد یا خیر. بنابراین چنانچه توسعه دهنده این گزینه را بر روی off تنظیم کند، PHP قادر به اجرای اسکریپت های شما نخواهد بود.

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

داخل این فایل است که تمامی قوانین و تنظیمات دلخواه PHP را مشخص می کنید. از اینرو بهتر است تنظیم به این مهمی که موتور PHP را فعال/غیرفعال می کند، داخل همین فایل که به کرات مورد بازدید توسعه دهنده قرار می گیرد، جایگذاری نمود.

گام بعدی معرفی دستوری است که به ویژه در نوشتن کد قابل اجرا در چند محیط (Portable) می تواند کمک قابل توجهی به شما بکند: short_open_tag.

گزینه ی Short Tags

short_open_tag = On

این دستور، به برنامه نویس اجازه می دهد تا از نسخه ی مختصر و بهینه ی تگ های php استفاده کند. به عبارت دیگری با تنظیم این گزینه بر روی On شما می توانید بجای

                            

نسخه ی کامل تگ php:

                            

پس از فعال سازی گزینه ی مزبور در فایل php.ini، می توانید از هر دو نسخه ی تگ php استفاده کنید، اما استفاده از تگ های مختصر یک کاستی بزرگ دارد به ویژه زمانی که قصد نوشتن اپلیکیشنی را دارید که قرار است بر روی سرویس دهنده های مختلف PHP مستقر گردیده و اجرا شود. به طور پیش فرض، گزینه ی short_open_tag برابر On قرار داده شده و برنامه نویس می تواند تگ ها ی php را به صورت مختصر بنویسد. استفاده از این تگ ها ممکن است سبب رخداد خطا در تحلیل نحوی اسکریپت های php شده (parsing error) و مانع از اجرای اپلیکیشن گردد. به همین خاطر بسیاری از توسعه دهندگان این آپشن را غیرفعال می کنند. توصیه ما نیز بر این است که اگر قصد نوشتن اپلیکیشنی با قابلیت حمل و اجرا در چندین بستر مختلف را دارید، حتما این گزینه را برابر Off قرار دهید تا امکان استفاده از تگ های مختصر را به طور کلی در کدنویسی از شما بگیرد.

در گام بعدی به شرح آپشنی می پردازیم که هر توسعه دهنده ای با هر سطح مهارت در نوشتن اپلیکیشن، بدون اینکه از آن آگاهی داشته باشد، قطعا از آن استفاده کرده است: output buffering.

Output Buffering (امکان کنترل خروجی)

output_buffering = Off

output buffering به شما امکان می دهد مدیریت اینکه چه زمان چه محتوایی به عنوان خروجی به مرورگر ارسال شود را به دست بگیرد.

قطعا مشابه این پیغام را قبلا در اپلیکیشن های تحت وب php خود مشاهده کرده اید:

                          "Cannot add header information headers already sent."  

این خطا زمانی صادر می شود که اسکریپت های php شما سعی کنند پس از اینکه خروجی ها را به مرورگر کاربر فرستادند، مقدار HTTP header (المانی که برای کاربر قابل مشاهده نیست اما مرورگر آن را پردازش می کند) را تنظیم کنند. با فعال سازی output_buffering موتور PHP ارسال اطلاعات header ها را به تعویق انداخته و آن ها را همزمان با خروجی اسکریپت ها و در واقع پس از اینکه اسکریپت ها فرایند پردازش را به اتمام رساندند، به مرورگر ارسال می کند. با این کار شما قادر خواهید بود، مقادیر header ها را در طول اجرای اسکریپت های PHP ویرایش نمایید.

گزینه ی output_buffering یک دستور است که معمولا به صورت پیش فرض بر روی on تنظیم شده. بنابراین لازم نیست این گزینه را به صورت دستی فعال کنید. همچنین فعال گذاشتن آن هیچ مشکل جدی برای اپلیکیشن ایجاد نمی کند و با عدم دستکاری آن می توانید هر زمان که لازم شد از قابلیت ذکر شده استفاده نمایید.

با فعال بودن output buffering مفسر php خروجی اسکریپت شما را در یک حافظه ی میانی نگه داشته و آن را زمانی که به طور صریح به آن دستور داده شود به مرورگر ارسال می کند. با این کار شما می توانید اطلاعات http header را از وسط یا انتهای اسکریپت خود به سرویس گیرنده ارسال کنید.

header و footer خودکار

auto_prepend_file = "header.php"  auto_append_file = "footer.php"

با تنظیم متغیرهای auto_prepend_file و auto_append_file بر روی On، شما به PHP اعلان می کنید که یک فایل به انتها و ابتدای اسکریپت های PHP خود الحاق می کنید. این دو متغیر ممکن است شما را به یاد دو تابع کتابخانه ایget_header() وget_footer() در WordPress بیاندازد که فایل header.php و footer.php را فراخوانی می کنند و در صورتی که با فایل ها رایج header و footer در قالب سایت کار می کنید، می توانند بسیار کارامد باشند. لازم به ذکر است فایل های header و footer ای که به وسیله ی این دو دستور به فایل php شما الحاق می شوند، بر روی تمامی صفحات و فایل های php شما مورد استفاده قرار می گیرند و این امر قطعا مورد تایید شما نیست.

همان طور که گفته شد این دو دستور فایل هایی را مشخص می کنند که PHP آن ها را به ابتدا و انتهای تمامی فایل های خود الصاق می کند.

یکی دیگر از موارد استفاده ی این دو آپشن در فایل php.ini، تنظیم یک تایمر جهت سنجش زمان لازم برای تولید یک صفحه است. برای مثال، فایلی که دستور auto_prepend_file بارگذاری می کند می تواند محتوایی مانند زیر داشته باشد:

  

و فایلی که دستور auto_append_file بارگذاری می کند، حاوی محتوای مانند زیر باشد:

  

حال به شرح دستورهای مربوط به مدیریت خطا در فایل php.ini می پردازیم.

قابلیت مدیریت خطاها (error handling)

  error_reporting = E_ALL|E_STRICT  display_errors = Off  log_errors = On  error_log = "/var/log/php_errors.log"   

تنظیمات بالا جهت بهینه سازی قابلیت گزارش خطا اپلیکیشن PHP در محیط نهایی استقرار و اجرای اپلیکیشن (production environment) مقداردهی شده است. خطایی که در اپلیکیشن رخ می دهد یا جزئی است (مانند یک پیغام ساده یا هشدار) و یا مهلک که در این صورت اجرای اسکریپت PHP را کلا متوقف می سازد. خواه خطا جدی باشد و خواه جزئی، این تنظیمات به PHP دستور می دهد که نباید پیغام های خطا را در خروجی نمایش داده و در عوض آن ها را در فایل error log ذخیره کند.

تنظیم مقدار display_error بر روی On سبب می شود که تمامی جزئیات خطا در مرورگر نمایش داده شود که می تواند برای توسعه ی بهینه ی اپلیکیشن و برطرف کردن خطاهای آن کارا باشد. اما هنگامی که سایت شما در سرویس دهنده مستقر شده و برای استفاده ی نهایی آماده می باشد، می تواند تجربه کاربری ضعیفی را رقم زده و حتی به کاربران مخرب در هک کردن و حلمه به سایت شما کمک کند. از اینرو توصیه می شود خطاهای رخ داده در اپلیکیشن را به فایل نگهداری خطاها (log file) که تنها شما و دیگر کاربران admin به آن دسترسی دارند، ارسال نمایید. برای این منظور کافی است error_log را بر روی On تنظیم نمایید. با تنظیم این گزینه، پیغام های خطایی که در مرورگر نمایش داده می شد، اکنون در فایل مورد نظر ثبت می شوند.

تنظیم منطقه زمانی (Time Zone)

date.timezone = "US/Central"

این گزینه به صورت پیش فرض در فایل php.ini تنظیم نمی شود. همچنین در صورت فعال سازیE_STRICT ، با هر بار فراخوانی تابع date و time در اسکریپت، PHP پیغام های خطا صادر می کند. برای برطرف سازی این مشکل، کافی است date.timezone را در فایل تنظیمات php برابر منطقه ی زمانی مربوطه قرار دهید.

بیشتر توسعه دهندگان این آپشن را نادیده می گیرند. می توانید با مقداردهی صحیح این گزینه در فایل php.ini، به راحتی خیلی از مشکلات که در آینده در اسکریپت شما جمع شده و سبب خرابی اپلیکیشن می شوند را برطرف نمایید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *