PHP یک زبان اسکریپتنویسی محبوب است که برای ایجاد صفحات وب و برنامههای پویا استفاده میشود. این زبان گزینههای پیکربندی متعددی دارد که بر رفتار و عملکرد آن تاثیر میگذارند. این گزینهها در فایلی به نام php.ini ذخیره میشوند و هنگام راهاندازی PHP خوانده میشوند.
فایل php.ini حاوی دستوراتی است که جنبههای مختلفی از PHP مانند گزارش خطا، محدودیت حافظه، آپلود فایل، تنظیمات تاریخ و زمان، افزونهها و موارد دیگر را کنترل میکند. با ویرایش فایل php.ini میتوانید PHP را متناسب با نیازها و ترجیحات خود سفارشیسازی کنید.
در این مقاله، توضیح خواهیم داد که فایل php.ini چیست، از کجا به آن دسترسی پیدا کنید، چگونه آن را ویرایش کنید و برخی از مهمترین دستورات آن کداماند. اگر یک هاست لینوکس خریدهاید و میخواهید با نحوه پیکربندی آن آشنا شوید، این مقاله را تا انتها مطالعه کنید.
فایل php.ini چیست؟
فایل php.ini و اجزای آن:
فایل php.ini یک فایل متنی ساده است که حاوی دستورات پیکربندی برای PHP میباشد. هر دستور از یک نام و یک مقدار تشکیل شده که با علامت مساوی از هم جدا شدهاند. به عنوان مثال:
memory_limit = 128M
این دستور حداکثر میزان حافظهای که یک اسکریپت PHP میتواند استفاده کند را به 128 مگابایت تنظیم میکند.
همچنین میتوانید با شروع یک خط با نقطهویرگول (؛) کامنت هایی را به فایل php.ini اضافه کنید. به عنوان مثال:
; This is a comment
کامنتها توسط PHP نادیده گرفته میشوند و برای اضافه کردن توضیحات یا یادداشتها به فایل php.ini مفید هستند.
فایل php.ini را میتوان به بخشهایی تقسیم کرد که دستورات مرتبط را با هم گروهبندی میکند. بخشها در براکتهای مربعی محصور شدهاند و هر کدام نامی دارند. به عنوان مثال:
[Date]
این بخش حاوی دستوراتی است که مربوط به تنظیمات تاریخ و زمان میباشد.
همچنین میتوانید از متغیرهای محیطی در فایل php.ini استفاده کنید که هنگام خواندن فایل توسط PHP با مقادیر آنها جایگزین میشوند. به عنوان مثال:
memory_limit = ${PHP_MEMORY_LIMIT}
این دستور از متغیر محیطی PHP_MEMORY_LIMIT برای تنظیم محدودیت حافظه برای PHP استفاده میکند.
لوکیشن فایل php.ini
مکان فایل php.ini به سیستمعامل، وب سرور و نسخه PHP مورد استفاده شما بستگی دارد. PHP میتواند فایل php.ini را در چندین مکان به ترتیب خاصی جستوجو کند. اولین فایل php.ini که پیدا شد توسط PHP استفاده میشود.
فهرست زیر مکانهای احتمالی فایل php.ini را به ترتیب جستوجوی PHP نشان میدهد:
محل ماژول SAPI: این مکانی است که توسط ماژول Server API (SAPI) که PHP از آن برای ارتباط با وب سرور استفاده میکند، تعریف شده است. به عنوان مثال، برای Apache 2، میتوانید از دستورالعمل PHPIniDir برای مشخص کردن محل فایل php.ini استفاده کنید. برای CGI و CLI، میتوانید از گزینه خط فرمان c- برای مشخص کردن محل فایل php.ini استفاده کنید.
متغیر محیطی PHPRC: این یک متغیر محیطی است که میتوان آن را برای اشاره به محل فایل php.ini تنظیم کرد. میتوانید این متغیر را برای نسخههای مختلف PHP، بسته به معماری (32 بیت یا 64 بیت) سیستمعامل و PHP، تنظیم کنید. به عنوان مثال، برای پیاچپی 32 بیتی روی سیستمعامل 32 بیتی یا پیاچپی 64 بیتی روی سیستمعامل 64 بیتی، میتوانید از کلید رجیستری HKEY_LOCAL_MACHINE\SOFTWARE\PHP برای تنظیم متغیر PHPRC استفاده کنید. برای پیاچپی 32 بیتی روی سیستمعامل 64 بیتی، میتوانید از کلید رجیستری HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP برای تنظیم متغیر PHPRC استفاده کنید.
- دایرکتوری فعالِ فعلی: PHP از روی این دایرکتوری اجرا میشود، به استثنای نسخه CLI که به جای آن از دایرکتوری اسکریپت استفاده میکند.
- دایرکتوری وب سرور: وب سرور در این دایرکتوری نصب شده است، برای ماژولهای SAPI یا دایرکتوری که PHP در آن نصب شده است، در غیراینصورت در ویندوز.
- دایرکتوری ویندوز: این دایرکتوری C:\windows یا C:\winnt، برای سیستمهای ویندوز است.
- گزینه زمان کامپایل: این مکان در هنگام کامپایل PHP توسط گزینه with-config-file-path– مشخص شده است.
اگر هیچ یک از مکانهای فوق حاوی فایل php.ini نباشد، PHP از تنظیمات پیشفرضی که در باینری PHP تعبیه شده است استفاده خواهد کرد.
نامگذاری متفاوت فایل php.ini و پیدا کردن آن:
استفاده از نامهای متفاوت: میتوانید با اضافه کردن نام ماژول SAPI به آن، از نام متفاوتی برای فایل php.ini استفاده کنید. برای مثال، اگر از نسخه CLI PHP استفاده میکنید، میتوانید نام فایل php.ini را php-cli.ini بگذارید. اینگونه میتوانید برای ماژولهای SAPI مختلف، فایلهای php.ini متفاوتی داشته باشید.
پیدا کردن محل فایل php.ini:
برای پیدا کردن محل فایل php.ini که PHP از آن استفاده میکند، میتوانید یک اسکریپت PHP با کد زیر ایجاد کنید:
PHP <?php phpinfo(); ?>
این اسکریپت اطلاعات زیادی درباره PHP نمایش میدهد، از جمله مسیر فایل پیکربندی (php.ini) و دستورات فایل پیکربندی بارگذاریشده، که محل و نام فایل php.ini که PHP استفاده میکند را نشان میدهد.
دلایل ادیت php.ini چیست؟
پس از خرید هاست، برای ویرایش فایل php.ini که یک فایل پیکربندی است و تنظیمات PHP وب سرور شما را در خود جای داده است چندین دلیل وجود دارد. برخی از این دلایل عبارتند از:
- شخصیسازی PHP برای مطابقت با نیازها و ترجیحات شما: تغییر سطح گزارش خطا، محدودیت حافظه، اندازه آپلود فایل، تنظیمات تاریخ و زمان و موارد دیگر.
- فعال یا غیرفعال کردن ویژگیها یا افزونههای خاص PHP: مانند حالت امن، globals ثبتنام، تگهای باز کوتاه، مدیریت جلسه و موارد دیگر.
- بهبود امنیت، عملکرد و قابلیت اسکریپت های PHP: مخفی کردن پیامهای خطای مربوط به کاربران، افزایش زمان اجرا، استفاده از متغیرهای محیطی و موارد دیگر.
برای ویرایش فایل php.ini، به دسترسی به سیستم فایل محل قرارگیری فایل و مجوزهای مناسب برای اصلاح فایل نیاز دارید. می توانید از هر ویرایشگر متنی مانند Notepad ،Vim یا Sublime Text برای باز کردن و ویرایش فایل php.ini استفاده کنید. همچنین برای پیدا کردن محل فایل php.ini که PHP استفاده می کند، میتوانید از تابع phpinfo استفاده کنید. پس از ویرایش فایل php.ini، باید وب سرور یا پروسه PHP را برای اعمال تغییرات مجددا راهاندازی کنید.
نحوه ادیت php.ini در سی پنل
برای ایجاد و ویرایش فایل php.ini، ابتدا باید وارد کنترل پنل cPanel شوید.
به بخش “Software” بروید و “MultiPHP INI Editor” را انتخاب کنید.
میتوانید حالت پایه (Basic) یا حالت ویرایشگر (Editor) را انتخاب کنید که امکان تایپ دستی دستورات را فراهم میکند.
“Basic mode” را انتخاب کنید و مسیری را که میخواهید پیکربندی جدید را ذخیره کنید، انتخاب کنید.
با انتخاب “Home directory”، تغییرات فایل php.ini در تمام وبسایتهای مرتبط با اکانت اعمال میشود.
پس از انتخاب مسیر، دستوراتی را خواهید دید که میتوانید آنها را تغییر دهید.
پس از تغییر مقادیر براساس نیازهای خود، برای ذخیره تغییرات روی “Apply” کلیک کنید.
اگر همهچیز بهدرستی پیش رفت، در پایان فرایند ویرایش پیام تایید را مشاهده خواهید کرد.
لیست دستورات
همچنین برای مدیریت تمام پارامترهای فایل php.ini میتوانید از “Editor mode” استفاده کنید.
در زیر، تنها برخی از دستوراتی که در تنظیمات قابل پیکربندی cPanel وجود دارند ذکر شده است، اما با مراجعه به لیست کامل دستورات php.ini میتوانید موارد بیشتری را اضافه کنید.
Memory_limit: با تغییر این مقدار، اندازه حافظه رم در دسترس برای اجرای عملیات تغییر میکند.
Post_max_size: این پارامتر حداکثر اندازه درخواستهای POST را نشان میدهد.
Upload_max_filesize: به شما امکان میدهد حداکثر اندازه فایلهایی را که میتوانید در سرور آپلود کنید، تعریف کنید.
Max_input_vars: امکان مدیریت حداکثر تعداد متغیرهای ورودی را فراهم میکند.
Max_execution_time: این پارامتر به شما امکان میدهد حداکثر زمان اجرای یک اسکریپت PHP را تنظیم کنید.
Zlib.output_compression: امکان فعالسازی فشردهسازی gzip را میدهد که زمان بارگذاری منابع را برای کاربران شما کاهش میدهد.
Display_errors: برای نمایش خطاها و هشدارها استفاده میشود. در صورت بروز مشکل در نمایش یا عملکرد وبسایت شما مفید است.
ایجاد و ویرایش فایل php.ini از طریق فایل منیجر
میتوانید با استفاده از مدیر فایل یا پروتکل FTP به فایلهای php.ini در فضای وب خود دسترسی داشته باشید و آنها را ویرایش کنید.
برای ایجاد یک فایل php.ini جدید، وارد سی پنل شوید و به بخش “File Manager” بروید.
در این مرحله، مسیری را که می خواهید فایل خود را در آن ایجاد کنید، پیدا کنید و دکمه “File” را در نوار بالا فشار دهید.
به عنوان نام فایل، “php.ini” را وارد کنید و روی “Create new file” کلیک کنید.
اکنون فایلی را که به تازگی ایجاد کردهاید انتخاب کرده و روی آن کلیک راست کنید. از منوی کشویی باز شده، “Edit” را انتخاب کنید.
یک پنجره تایید ظاهر میشود، دوباره “Edit” را برای شروع ویرایش فایل انتخاب کنید.
در داخل فایل، میتوانید دستورات مختلف را وارد کنید. پس از اتمام تغییرات، برای اعمال تغییرات روی “Save Changes” کلیک کنید.
اگرچه سی پنل یکی از محبوبترین کنترل پنلهای هاست لینوکس است اما کنترل پنل دایرکت ادمین نیز این امکان را به شما میدهد تا به راحتی تنظیمات مختلف هاست یا سرور مجازی لینوکس خود را پیکربندی کنید.
پارامترهای مهم php.ini
در این بخش، مهمترین پارامترهای موجود در فایل PHP.ini به همراه مقادیر و کاربردهای آنها توضیح داده میشود. این پارامترها همچنین با عنوان «directives» شناخته میشوند.
نکته: برخی از پارامترها و مقادیر ممکن است در نسخههای خاصی از PHP در دسترس نباشند. برای کسب اطلاعات بیشتر در مورد تغییرات، به لیست کامل دستورالعملهای PHP.ini مراجعه کنید.
(display_errors) نمایش خطاها
این پارامتر با استفاده از مقادیر on و off مشخص میکند که آیا پیامهای خطای PHP هنگام اجرای اسکریپت به کاربران نمایش داده شود یا خیر. به دلایل امنیتی، فقط هنگام توسعه وبسایت خود باید از این دستورالعمل استفاده کنید.
(error_reporting) گزارش خطاها
این پارامتر مشخص میکند که کدام پیامهای خطا زمانی که display_errors فعال است به کاربران نمایش داده شود. پارامتر error_reporting چندین Constant یا شاخص تغییرناپذیر برای نمایش خطاهای مختلف در نظر میگیرد.
میتوانید از چندین Constant استفاده کرده و خطاهای خاصی را مستثنی کنید. به عنوان مثال، برای نمایش همه خطاها به جز هشدارهای منسوخشده، از دستور زیر استفاده کنید:
E_ALL & ~E_DEPRECATED
(error_log) لاگ خطا
این پارامتر فایلی را مشخص میکند که PHP برای عیبیابی خطا، خطاها را در آن ثبت میکند. قبل از فعال کردن آن، مطمئن شوید که کاربران سرور مجوز نوشتن در این فایل را دارند.
(file_uploads) بارگذاری فایلها
این پارامتر مشخص میکند که آیا بارگذاری فایلهای HTTP فعال است یا خیر. مقدار on به کاربران اجازه میدهد فایلها را در وبسایت شما آپلود کنند، درحالیکه off آن را غیرفعال میکند.
(upload_max_filesize) حداکثر اندازه فایل قابل آپلود
این پارامتر حداکثر اندازه فایل قابل آپلود را که PHP در وبسایت شما مجاز میداند، تعیین میکند. از آنجایی که مقدار پیشفرض دو مگابایت است، میتوانید حداکثر اندازه فایل قابل آپلود را افزایش دهید تا امکان آپلود فایلهای بزرگ را به کاربران بدهید.
سایر تنظیمات مهم
post_max_size: حداکثر اندازه دادههای POST که PHP میتواند از فرمهای HTML در وبسایت شما جمعآوری کند. این مقدار باید از حداکثر اندازه فایل بزرگتر باشد، زیرا با تابع POST مدیریت میشود.
allow_url_fopen: این پارامتر یک اسکریپت PHP برای دسترسی به فایلهای ریموت از سرور دیگر مینویسد. این پارامتر به طور پیشفرض غیرفعال است، زیرا فعال کردن آن ممکن است سرور شما را در معرض حمله تزریق کد قرار دهد.
allow_url_include: این دستورالعمل عملکردی مشابه allow_url_open دارد، اما از تابع include استفاده میکند. برای فعال کردن آن، allow_url_open باید روی on تنظیم شود.
session.name: این دستورالعمل نام سِشِن (Session) فعلی را که در کوکیها و URLها استفاده میشود، تنظیم میکند. میتوانید مقدار پیشفرض PHPSESSID را به هر نام توصیفی با کاراکترهای الفبا عددی تغییر دهید.
session.auto_start: انتخاب کنید که آیا زمانی که کاربران به وبسایت شما دسترسی پیدا میکنند، یک سِشِن PHP به طور خودکار یا در صورت درخواست شروع شود. اگر مقدار را روی 0 تنظیم کنید، سشن به صورت دستی با استفاده از اسکریپت session_start شروع میشود.
session.cookie_lifetime: با این پارامتر طول عمر کوکی سشن را در مرورگرهای بازدیدکنندگان وبسایت شما مشخص کنید. به طور پیشفرض، این مقدار روی صفر ثانیه تنظیم شده است، به این معنی که وبسایت شما دادههای سشن بازدیدکنندگان را پس از بستن مرورگرهایشان پاک میکند.
memory_limit: حداکثر میزان رم را که یک اسکریپت PHP میتواند استفاده کند، تنظیم کنید. هنگام افزایش محدودیت حافظه مراقب باشید، زیرا پیکربندی اشتباه ممکن است منجر به کند شدن سایت یا خرابی سرور شود.
max_execution_time: حداکثر مدت زمان اجرای یک اسکریپت را تعیین کنید. میتوانید حداکثر زمان اجرای پیشفرض ۳۰ ثانیه را به هر مقداری تغییر دهید، اما تنظیم آن به مقدار بسیار بالا ممکن است باعث مشکلات عملکردی شود.
جمعبندی
فایل PHP.ini یک فایل پیکربندی است که تنظیمات PHP وب سرور شما را ذخیره میکند. میتوانید این فایل را برای تغییر قوانین مرتبط با PHP در سایت خود، مانند محدود کردن فعالیتها یا محدود کردن اندازه دادههای آپلودشده، ویرایش کنید.
از آنجایی که محل این فایل ممکن است متفاوت باشد، برای یافتن سریع PHP.ini، یک فایل اطلاعاتی PHP در پوشه اصلی دامنه خود ایجاد کنید و آن را در مرورگر خود بارگذاری کنید. در صفحه اطلاعات PHP، مکان آن در بخش (loaded configuration file) قرار دارد.