قم بإعداد ملف php ini. تركيب أباتشي، PHP، MySQL

25.02.2019

إنشاء واستخدام ملف php.ini الخاص بك

يمكن لأي مستخدم إنشاء الملف الخاص php.ini ووضعه في مجلد البرنامج النصي الذي يتم استدعاؤه.
يعد هذا مناسبًا تمامًا، حيث يمكنك تعديل إعداداتك بنفسك، دون الاتصال بالخدمة الفنية. يدعم

إذا قررت وضع php.ini في مكان ما في public_html، فقم بإنشاء ملف .htaccess في المجلد الجذر للموقع (على سبيل المثال /home/user/public_html، حيث يكون المستخدم هو لقبك في لوحة التحكم) أو إذا كان الملف موجودًا، ثم ما عليك سوى إضافته في أي مكان (في البداية أو النهاية) في ملف htaccess باستخدام التوجيهات الموضحة أدناه.


السماح بالأمر، الرفض
رفض من الجميع

تمنع هذه التوجيهات الآخرين من عرض ملف php.ini.

مع مثل هذا تركيب PHPباعتبارك معالج CGI وSuPHP، لا يمكنك استخدام التوجيهات التالية في ملف .htaccess: php_flag وphp_admin_flag وphp_value وغيرها التي تغير أي معلمات بيئة PHP، سيؤدي ذلك إلى حدوث خطأ في الكود 500؛ الخادم الداخليخطأ.

تنبيه: ملف php.ini الخاص بك صالح فقط داخل الدليل الذي يوجد به، إذا لم يتم تحديده خيار خاص، انظر أدناه.

suPHP_ConfigPath /home/user/public_html

أولئك. قم بكتابة هذا السطر في ملف .htaccess قبل الكود الخاص بمنع عرض ملف php.ini، فقط قم باستبدال المستخدم باسم المستخدم الخاص بك.

حقوق الوصول إلى الملفات والمجلدات:

644 - الكتابة إلى الملف مسموح بها (افتراضي)
444 - الكتابة في الملف ممنوعة (القراءة والتنفيذ فقط)
755 - حقوق الوصول إلى المجلد (افتراضيا، لا حاجة للتغيير)

يرجى ملاحظة أنه مع حقوق الوصول 644، يُسمح بالكتابة فقط للنصوص البرمجية التي يتم تشغيلها في بيئة حسابك. لا يمكن لأي شخص آخر أن يقوم بالتسجيل. لمزيد من الأمان، يمكنك تغيير أذونات الملف إلى 444 - في هذه الحالة، حتى البرامج النصية الخاصة بك لن تكون قادرة على كتابة أي شيء على الملفات، ولكن هذا ليس ضروريا.

وبالتالي، عند تثبيت البرامج النصية، لا تحتاج إلى تغيير حقوق الوصول، حتى لو كانت تعليمات البرنامج النصي تشير إلى أنها تحتاج إلى تغيير. ما عليك سوى تخطي عنصر تغيير أذونات CHMOD.

مثال لملف php.ini ووصف لبعض معلماته:

; بناء جملة الملف: "التوجيه = القيمة"
; علامة التعليق في php.ini هي ";" (فاصلة منقوطة). كل شيء على السطر بعد "؛" غير مقبول بواسطة PHP

الوضع الآمن = إيقاف

Disable_functions = ; لأسباب أمنية، يسمح لك بحظر تنفيذ وظائف محددة

max_execution_time = 30 ؛ الحد الأقصى لعدد الثواني لتنفيذ البرنامج النصي

حد الذاكرة = 16 ميجا؛ أقصى ذاكرة الوصول العشوائي، والتي يمكن أن يأخذها البرنامج النصي لنفسه

error_reporting = E_ALL & ~E_NOTICE؛ إظهار كافة الأخطاء باستثناء التعليقات

Display_errors = قيد التشغيل؛ عرض الأخطاء في المتصفح. لتسهيل تصحيح أخطاء البرنامج النصي

variables_order = "EGPCS" ; الترتيب الذي ستسجل به PHP المتغيرات (E - المتغيرات المضمنة، G - متغيرات GET، P - متغيرات POST، C - ملفات تعريف الارتباط، S - الجلسات). سيؤدي فقدان أي من الأحرف إلى منعك من العمل مع المتغيرات المقابلة

Register_globals = قيد التشغيل؛ القدرة على التعامل مع المتغيرات المستلمة عبر GET/POST/Cookie/session كمتغيرات عادية (على سبيل المثال، "$variable")

post_max_size = 55M؛ الحد الأقصى للحجمالبيانات التي يمكن الحصول عليها

magic_quotes_gpc = قيد التشغيل؛ تضمين المعالجة التلقائيةالاقتباسات القادمة عبر POST/GET/Cookie

file_uploads = قيد التشغيل؛ يسمح بتحميل الملفات

;upload_tmp_dir = ; دليل الملفات المؤقتة التي تم تحميلها (لا تنس إنشاء هذا الدليل!)

upload_max_filesize = 5M ; أكبر مقاسالملف الذي تم تحميله

session.save_handler = files; تخزين بيانات الجلسة في الملفات

session.save_path = /tmp ; مجلد لتخزين ملفات الجلسة (لا تنس إنشاء هذا الدليل!)

session.use_cookies = 1 ; استخدم ملفات تعريف الارتباط في الجلسات

اسم الجلسة = PHPSESSID ; استخدم معرف الجلسة كاسم للجلسة وملف تعريف الارتباط للجلسة

session.cookie_lifetime = 0 ; عمر ملف تعريف الارتباط للجلسة ("0" - حتى يتم إغلاق نافذة المتصفح)

session.use_trans_sid = 1 ; ستتم إضافة معرفات الجلسة إلى جميع الروابط الموجودة على الصفحة تلقائيًا (إذا قام المستخدم بتعطيل ملفات تعريف الارتباط)

; والعديد من المعلمات الأخرى..

انتباه!: هذه المعلومةلا علاقة له بخوادمنا، قم بإدارة PHP.ini، أي. إعدادات PHP و نسخة PHP، يمكنك ذلك في لوحة التحكم CPanel في قسم تحديد إصدار PHP (حدد إصدار PHP)

ملفات INI- هذه عادية ملفات نصية، مكونة من أقسام معينة. عادة، ملفات INIتستخدم للحفظ إعدادات معينةعلى سبيل المثال، إعدادات اللغة. وبالطبع، حتى يمكن تغيير موقعنا بسهولة بطريقة أو بأخرى، يمكننا وضع جميع المعلمات المسؤولة عن هذا التغيير في ملف منفصل. وكيفية الاستخراج بسرعة بي أتش بيسنقوم بتحليل جميع الإعدادات من هذا الملف في هذه المقالة.

ل قراءة ملف INI في PHPيتم استخدام الوظيفة parse_ini_file(). ولكن قبل أن نستخدمها، دعونا ننشئها ملف INI "settings.ini":

Par1=10
Par2=20

في هذا الملف، قمنا بوصف معلمتين وخصصنا لهما قيمًا معينة. الآن دعونا ننشئ ملف PHPحيث نقرأ البيانات من الملف الذي تم إنشاؤه باستخدام الوظيفة parse_ini_file():

$arr = parse_ini_file("settings.ini");
print_r($arr);
?>

ونتيجة لذلك، سوف ترى السطر التالي: "المصفوفة ( => 10 => 20)". كما ترون، الوظيفة parse_ini_file()تم إرجاع مصفوفة تحتوي على مفاتيح على شكل أسماء المعلمات وقيم على شكل تلك التي حددناها في الملف " settings.ini".

الآن دعونا نلقي نظرة على مثال من الممارسة الحقيقية. لنقم بإنشاء صفحة واحدة تعرض النص باللغة المحددة الحصول على المعلمة. أولا، دعونا نخلق ملف INI "lang_en.ini":

مرحبا=مرحبا
العالم=العالم

الآن دعونا ننشئ PHP النصي:

$lang = isset($_GET["lang"])? $_GET["lang"]: "ar";
$langconst = parse_ini_file("lang_$lang.ini");
echo $langconst["HELLO"]." ".$langconst["WORLD"]."!";
?>

السطر الأول نتحقق منه: إذا تم إرساله الحصول على المعلمة لانج، ثم نقرأ القيمة من هناك ونكتبها للمتغير لانج. وإذا لم يتم تمرير أي قيمة، فإننا نحدد القيمة الافتراضية، في حالتنا: " أون". بعد ذلك نصل إلى ملف اللغة المطلوبة ونسحب البيانات من هناك. ثم نقوم ببساطة بإخراج السطر باستخدام المستلم ثوابت اللغة. ونتيجة لذلك، سوف نرى: " مرحبا بالعالم!".

حان الوقت الآن لإثبات سبب كونها مريحة للغاية. لإضافة لغة جديدةيكفي إنشاء ملف واحد فقط يمكنك من خلاله ترجمة جميع ثوابت اللغة:

مرحبا=مرحبا
العالم=العالم

يحفظ هذا الملفمستحق " lang_ru.ini"، وقم بتشغيل البرنامج النصي: " script_address.php?lang=ru". ونتيجة لذلك، سترى: "مرحبا بالعالم!".

كما ترون، لقد أنشأنا واحدًا آخر فقط ملف INI، ترجمت الثوابت إلى اللغة المطلوبةوهذا كل شيء! وبالتالي، يمكنك بسهولة إنشاء إصدارات متعددة اللغات لموقعك، والتي تبدو رائعة جدًا، والأهم من ذلك، أن التنفيذ بسيط للغاية.

PHP هي واحدة من أكثر اللغات الشعبيةالبرمجة لإنشاء مواقع الويب وتطبيقات الويب. لقد طورت الكثير أنظمة جاهزةإدارة المحتوى للمدونات ومواقع الشركات أو حتى المتاجر عبر الإنترنت. على الرغم من أن هذه اللغة لها عيوبها، فمن السهل جدًا تعلمها وبالتالي تُستخدم في كثير من الأحيان لتطوير مواقع جديدة.

يمكن توفير مترجم PHP كوحدة نمطية لـ Apache، لتنفيذ البرامج النصية من سطر الأوامرأو في النموذج خدمة منفصلة PHP-FPM. تختلف هذه الخدمات في قدراتها والغرض منها، ولكن يجب عليك تعيينها لأي نوع من المترجمين الفوريين الإعدادات الأساسية، على سبيل المثال، مجلد العملوالإضافات الممكّنة وعرض الأخطاء وما إلى ذلك. يتم تكوين كل هذه الإعدادات من خلال ملف php.ini. سننظر في هذه التعليمات في كيفية تكوين ملف php.ini في أنظمة التشغيل. أنظمة لينكسعلى الرغم من أن جميع المعلومات مناسبة لنظام التشغيل Windows.

إذا لم يكن لديك مترجم لغة مثبت بعد برمجة PHP، ثم يمكنك قراءة المقال.

لكل نسخة مترجم ملف الضبطيقع php.ini في مجلد منفصل. لكن جميع ملفات التكوين موجودة في المجلد /etc/php، على سبيل المثال /etc/php5:

يحتوي المجلد conf.d الاعدادات العامةل ملحقات مختلفةوالوحدات، فإنها لن تهمنا الآن. المجلدات الثلاثة التالية أكثر إثارة للاهتمام - Apache وcli وfpm. أنها تحتوي على ملفات تكوين php.ini لكل من هذه المترجمين الفوريين.

إذا كنت ستستخدم أكثر من واحد من هؤلاء المترجمين الفوريين، فسيتعين عليك تحديد الإعدادات لكل منهم على حدة. يمكنك التأكد من وجود ملف php.ini في كل مجلد.

أما بالنسبة لتركيب الملف فهو مقسم إلى أقسام، أولا يوجد قسم إعدادات php، والذي ينقسم إلى أقسام فرعية حسب نوع الإعدادات، ثم هناك أقسام لإعداد الوحدات المختلفة. بناء جملة الإعدادات نفسها بسيط للغاية، وهو يتوافق مع بناء الجملة المعتاد ملفات ini. يبدأ السطر باسم الإعداد، متبوعًا بعلامة المساواة، متبوعة بالقيمة:

settings_name = معامل_القيمة

تشير الرموز إلى اسم القسم مثلاً والرمز؛ يعني التعليق، هو وكل الحروف التي بعده لا يقرأها المترجم. الآن دعونا نلقي نظرة على كيفية تكوين php.ini ونستعرض أهم المعلمات.

إعداد ملف php.ini

لسهولة التوجيه، سنقوم بتقسيم جميع المعلمات إلى فئات حسب الغرض منها. سيكون كافيا بالنسبة لك أن تجد المعلمة المطلوبةوتغير قيمته . الآن افتح الملف إعدادات PHP، على سبيل المثال، لوحدة Apache ودعنا ننتقل إلى التكوين. لتجنب الأخطاء، لا تقم بإضافة أسطر جديدة، بل ابحث عن الأسطر الموجودة وقم بتغيير القيم إلى الأسطر المطلوبة:

Sudo gedit /etc/php5/Apache/php.ini

أولا هناك بعض المعلومات حول الملف نفسه في شكل تعليقات، ثم الإعدادات التي تهمنا.

خطأ في الإخراج في PHP

يبدأ إعداد php 7 عادةً بتكوين مخرجات خطأ. توجد جميع إعدادات إخراج الأخطاء في قسم معالجة الأخطاء وتسجيلها. افتراضيًا، لا يتم عرض الأخطاء على الشاشة أثناء تنفيذ البرنامج النصي. يتم ذلك حتى لا يتمكن المستخدمون من رؤية أي شيء غير ضروري. بدلاً من ذلك، تتم كتابة كافة الأخطاء إلى ملف سجل. إذا كنت تستخدم PHP على الكمبيوتر المنزلي، فلن تكون هناك حاجة إلى مثل هذه التدابير ويمكنك عرض كل شيء على الشاشة على الفور:

Display_errors=off

استبدل إيقاف التشغيل بـ تشغيل. في PHP يتم استخدامها أنواع مختلفةالأخطاء، على سبيل المثال، الأخطاء الحرجة والتحذيرات وأخطاء بناء الجملة، باستخدام سطر error_reporting، يمكنك تشغيل الإخراج فقط أنواع معينةالأخطاء:

error_reporting = E_ALL & ~E_DEPRECATED

إذا كنت بحاجة إلى الجمع بين عدة أنواع من الأخطاء، فاستخدم الرمز &، ولتعطيل العرض، ضع علامة ~ أمام النوع. يعرض المثال أعلاه كافة الأخطاء (E_ALL) باستثناء رسائل الميزات المهملة (E_DEPRECATED). يمكنك تعطيل جميع الأنواع باستخدام 0:

تقرير_الخطأ = 0

ابدأ التسجيل أخطاء PHPإلى ملف السجل إذا لم تقم بعرضها على الشاشة:

لكي لا يتم انسداد السجل برسائل من نفس النوع، يمكنك تجاهل الأخطاء المتكررة في نفس التنفيذ:

تجاهل_repeated_errors = قيد التشغيل

حدود الموارد

لو مخطوطات PHPلم تكن محدودة بأي شكل من الأشكال في الموارد، فيمكنهم بسهولة زيادة التحميل على الخادم ومنعه من العمل بشكل طبيعي. ولذلك، بحسب PHP الافتراضييضع حدودًا صارمة، ولكن قد تحتاج إلى تخفيفها قليلاً.

تقصير الحد الأقصى للوقتتنفيذ البرنامج النصي - 30 ثانية، فلنقم بدقيقة:

الحد الأقصى لوقت التنفيذ = 30

إذا حددت 0، فيمكن تنفيذ البرنامج النصي إلى أجل غير مسمى. يمكنك أيضًا تحديد الوقت الذي سيقوم فيه البرنامج النصي بتنزيل البيانات بـ 60 ثانية:

max_input_time=60

الحد الأقصى لعدد المتغيرات في GET وPOST:

max_input_vars = 1000

تحدد المعلمة التالية الحد الأقصى للمبلغالذاكرة التي يمكن لبرنامج نصي واحد استخدامها أثناء تنفيذه، بالميجابايت:

حد الذاكرة = 128 ميجا

الحد الأقصى لحجم البيانات المنقولة إلى طلب ما بعدمحدود أيضًا، الحجم الافتراضي هو 8 ميجابايت:

post_max_size = 8M

يمكنك تحديد نطاق PHP على النظام باستخدام خيار openbase_dir، فهو يحدد مجلدًا لا يمكن للبرنامج النصي الوصول إليه نظام الملفات:

open_basedir = /var/www/

باستخدام توجيهات Disable_functions وdisable_classes، يمكنك تعطيل الاستخدام في البرامج النصية وظائف معينةأو الفئات، على سبيل المثال، يمكن أن يكون ذلك مفيدًا لاستضافة الويب. في هذا المثال، قمنا بتعطيل استخدام وظيفة ini_set، والتي تسمح لك بتغيير إعدادات php من البرنامج النصي:

Disable_functions = ini_set

الدلائل الافتراضية

يتيح لك ملف التكوين php.ini تحديد مسارات نظام الملفات الافتراضية لها إجراءات مختلفة. يمكنك تحديد المجلدات التي سيبحث فيها النظام عن البرامج النصية إذا حاولت تضمينها باستخدام عبارة التضمين:

include_path = ".:/usr/share/php5:/usr/share/php5/PEAR"

المجلد الذي يحتوي على وحدات PHP:

الامتداد_دير = "./"

مجلد لتسجيل الملفات المؤقتة:

sys_temp_dir = "/tmp"

لكي يتمكن المستخدمون من تحميل ملفاتهم إلى الخادم، على سبيل المثال، الصور، تحتاج إلى تمكين هذه الوظيفة في PHP:

file_uploads = قيد التشغيل

الحد الأقصى لحجم ملف التحميل:

upload_max_filesize = 2M

الحد الأقصى لعدد الملفات التي يمكن لبرنامج نصي واحد تنزيلها:

الحد الأقصى لعدد تحميلات الملفات = 20

لقد اكتمل إعداد php.ini تقريبًا، ولم يتبق لدينا سوى الامتدادات.

إعداد الامتدادات

يمكن أن تزيد الإضافات من وظائف PHP بشكل كبير. على سبيل المثال، بفضل الإضافات يمكنك استخدام قواعد البيانات في البرامج النصية الخاصة بك بيانات الخلية، بوستجريسكل، ميسكلي، سكليت، مكتبة الرسوماتجي دي وأكثر من ذلك بكثير. كل هذا مدرج في هذا القسم.

لتمكين ملحق، ما عليك سوى إزالة التعليق قبل السطر الذي يحتوي على الأمر الخاص به، على سبيل المثال:

الامتداد=php_mysql.so
الامتداد=php_mbstring.so
التمديد=php_pgsql.so

يرجى ملاحظة أن ل امتداد النوافذسيكون بتنسيق dll، لكن بالنسبة لنظام التشغيل Linux، يتعين عليك استخدامه. في الأقسام التالية اعدادكل من الملحقات، ولكننا لن نأخذها بعين الاعتبار لأنها عادة لا تتطلب التكوين.

الاستنتاجات

في هذه المقالة نظرنا في كيفية تكوين PHP على الخادم أو الكمبيوتر العاديلتطوير الموقع. يحتوي ملف إعدادات php على ملف بنية بسيطةوليس من الصعب التعامل معها. بعد الانتهاء من كافة الإعدادات وحفظ التغييرات، لا تنس إعادة تشغيل خادم الويب أو خدمة php-fpm.

بشكل عام، يعد php-fpm موضوعًا منفصلاً نظرًا لوجود الكثير منه إعدادات إضافية، وربما سننظر فيه في أحد المقالات القادمة. إذا كان لديك أي أسئلة، اسأل في التعليقات!

بالطبع، لقد وجدت نفسك في موقف يمكن فيه استخدام التطبيق الذي قمت بتطويره مسبقًا مرة أخرى كجزء من مشروع آخر. في البداية، بالطبع، كنت تعتقد أن هذا لن يخلق أي مشاكل. كل ما عليك فعله هو نسخ الكود من دليل إلى آخر! مع مرور الوقت، أدركت أن المشاريع يمكن أن تختلف عن بعضها البعض معلمات مختلفة، حتى الأكثر أهمية. على سبيل المثال يمكن أن يكون عنوان البريد الإلكترونيالتي يتم إرسال الرسائل إليها. في هذه الحالة، ليس لديك خيار سوى فتح العديد من الملفات في المحرر وتغيير محتوياتها عن طريق الإدراج البريد الإلكتروني المطلوبباستخدام وظيفة البحث/الاستبدال. ستخبرك هذه المقالة كيف يمكنك التخلص منها عمل مماثل، وسوف يوصي أيضًا برقم أموال إضافيةلإنشاء وقراءة ملفات التكوين.

إعادة استخدام الكود

تم اختراع الكمبيوتر لإنقاذ الإنسان من عمل اضافي. تطوير تكنولوجيا الكمبيوترأدى ذلك إلى حقيقة أن الناس بدأوا يسعون جاهدين لقضاء وقت أقل وأقل على الكمبيوتر. لنفترض أنك مبرمج. بدون جهاز كمبيوتر، سوف تكون عاطلا عن العمل. ولكن في الوقت نفسه، تحاول تبسيط الخاص بك عمل يوميولهذا الغرض، تستخدم، على سبيل المثال، وظيفة إكمال التعليمات البرمجية في المحرر. نريد أن نقودك إلى فكرة أن الكود الذي تقوم بإنشائه يجب أن يتم تنظيمه بطريقة تجعل أعمال التعديل في حدها الأدنى. في أغلب الأحيان، يكون هذا ممكنًا عند إنشاء تعليمات برمجية تعمل على أتمتة العمليات الروتينية، مثل إنشاء نموذج ورسمه، بالإضافة إلى إرسال البريد الإلكتروني. ومع ذلك، لا تنس أن وظائف تنفيذ العمليات الروتينية لا تكون متطابقة أبدًا بنسبة 100% تطبيقات مختلفة. شكل واحد لا يشبه الآخر، والرسائل بريد إلكترونيمخصص لمتلقين مختلفين. ومع ذلك، يظل المنطق على مستوى التطبيق كما هو؛ تختلف الوظائف عن بعضها البعض فقط في بعض المعلمات. وبالتالي، يجب أن تكون واضحًا بشأن هدفك - وهو تطوير التعليمات البرمجية التي يمكن تحديد معلماتها خارجيًا.

تنظيم وحدات

لحل هذه المشكلة، التخطيط هيكل التطبيق، يجب أن تهتم بالنمطية. أي أنك تحتاج إلى وضع الوظائف أو الفئات المستخدمة بشكل متكرر في ملف منفصل، والذي سيتم توصيله عبر require_once. في هذه الحالة، لن يتم ملء ملفات التطبيق برموز زائدة عن الحاجة. لنفترض أنك تكتب إلى ملف سجل بشكل متكرر. في هذه الحالة، سيكون من الجيد تضمين الكود الذي ينفذ هذه العملية داخل فئة أو وظيفة. سيكون من الأفضل استخدام فصل دراسي جاهز مأخوذ من بعض مكتبات التعليمات البرمجية المصدر، على سبيل المثال PEAR.

خيارات الكود الإجرائي

بعد تحليل الكود وتحديد الأجزاء المتكررة وتوزيعها على فئات ووظائف، عليك التفكير في تحديد المعلمات الضرورية، والتي سيتم تعيين قيمها خارجيًا. لو نحن نتحدث عنفيما يتعلق بالكود الإجرائي، فإن الحل الأبسط هو استخدام المتغيرات العالمية، والتي تحتاج إلى تعريف فيها ملف منفصل. سيسمح لك ذلك بتغيير قيمها في المستقبل دون أي مشاكل.

تعرض القائمة 1 وظيفة تقوم بذلك إرسال رسالة عبر البريد الإلكتروني. يحتوي جسمها على وظيفة PHP واحدة فقط - mail(). بهذه الطريقة نتخلص من الحاجة إلى تحديد المستلم في كل مرة نرسل فيها رسالة. المتغير التالي الذي نحدده هو البادئة التي تسبق موضوع الرسالة. يمكن أن يبدو ملف التكوين المضمن عبر require_once بهذا الشكل.

القائمة 1

$to = "webmaster@localhost" ;
$بادئة = " " ;
?>

وظيفة sendMail ($الموضوع، $body)
{
عالمي إلى $، بادئة $؛
$الموضوع = $بادئة . $الموضوع؛
إرجاع البريد ($to، $subject، $body)؛
}
require_once "config1.php" ؛
إرسال بريد ("اختبار"، "هذه رسالة اختبار.");
?>

هناك طريقة أفضل

حتى لو كانت الطريقة التي تمت مناقشتها أعلاه فعالة، فهي ليست الأكثر فعالية القرار الأفضل. عندما يصبح رمز التطبيق الخاص بك أكثر تعقيدًا ويزداد عدد الخيارات، قد تنشأ المشكلات التالية:

  • يمكن للمتغيرات العامة التي نستخدمها أن تسبب تعارضات في مساحة الاسم.
  • إذا لم يتم تحرير ملفات التكوين بواسطة مبرمج، ولكن بواسطة أحد الهواة، فقد تحدث أخطاء في بناء الجملة في النظام، على سبيل المثال بسبب علامات الاقتباس غير المغلقة.
  • من أجل الوصول إلى المتغيرات المختلفة، يجب عليك الوصول إلى المصفوفة $_GLOBALS.

بدلاً من وحدات PHP، هناك تنسيقات أخرى يمكن للهواة فهمها وتعديلها بسهولة، بالإضافة إلى نصوص PHP. لدينا صيغتان في الاعتبار: يتم استخدامهما على نطاق واسع نظام التشغيلملفات Windows ini، بالإضافة إلى تنسيق XML.

في هذا المثال، لاحظت بالفعل أن نوع القيمة محدد داخل العلامة. أسماء الأنواع مماثلة لتلك المستخدمة في دالة PHP settype(). إذا لم يتم تحديد النوع، فسيتم تفسير القيمة كسلسلة. يمكنك تحديد علامة منفصلة للخيارات المستخدمة بشكل متكرر.





مشرف الموقع @ المضيف المحلي
100

إلى جانب الدالة getConfigValue، هناك دالة setConfigValue() التي يمكن استخدامها لتغيير قيمة أحد الخيارات. يمكن بعد ذلك إعادة كتابة ملف التكوين باستخدام writeConfigFile() (انظر القائمة 7).

يقدم patConfiguration أيضًا سلسلة من الميزات الإضافية. على سبيل المثال، إلى جانب العلامات، من الممكن تحديد السمات ومساحات الأسماء (مساحة الاسم)، ويمكن ربط ملف خارجي بعلامة، بحيث يتم توزيع الخيارات عبر عدة ملفات. بالإضافة إلى ذلك، يتضمن patConfiguration نظام تخزين مؤقت، مما يلغي الحاجة إلى قراءة ملف التكوين عدة مرات.

يمكنك العثور على مزيد من المعلومات على الصفحة الرئيسية لأدوات تطبيق PHP والبرنامج التعليمي patConfiguration على DevShed.

القائمة 7

مطلوب "تشمل/patConfiguration.php";

$config = تكوين بات جديد (
مجموعة مصفوفة(
"configDir" => "./" ,
"errorHandling" => "nice_die"
);
$config -> parseConfigFile("config6.xml");
$config -> setConfigValue( "errors.email" , "errors@localhost");
$config -> writeConfigFile ("config6_new.xml" , "xml" , array("mode" => "pretty" ));
?>

خاتمة

التأكد من أن تطبيقك مرن يمكن أن يوفر الكثير من الوقت، خاصة إذا كانت مكوناته ستُستخدم في مشاريع أخرى. ستقضي وقتًا أقل إذا عهدت بملفات التكوين إلى إحدى الفئات الجاهزة. يعتمد الاختيار بين PEAR::Config وpatConfiguration على المهمة. تتمثل ميزة PEAR::Config في دعمها لتنسيقات ملفات التكوين المختلفة، بينما يعمل patConfiguration بشكل رائع مع XML ويوفر أيضًا عددًا من ميزات إضافية. ومع ذلك، مع إصدار الإصدار 2.0.0، ستحتوي هذه الحزمة على نفس واجهة برمجة التطبيقات لقراءة ملفات ini وwddx. صفائف PHP مدعومة بالفعل في الإصدار الحالي.



إذا كان لديك أي أسئلة أخرى أو كان هناك شيء غير واضح - مرحباً بك في موقعنا

إذا سألت أحد مبرمجي الويب أي الملفات الموجودة في توزيع PHP هو الأكثر أهمية، فقد يجيب الكثيرون بأن المترجم نفسه، والمكتبات، والامتدادات، وما إلى ذلك. لا، الملف الأكثر أهمية هو php.ini: وهو ملف نصي صغير يستخدم يحتوي على كافة إعدادات PHP (التوجيهات)، وتكوينات وحدة الامتداد ومتغيرات البيئة. من خلال ملف التكوين، يمكنك تكوين PHP لتحقيق أقصى قدر من الأداء، وتعطيل الوظائف والوحدات النمطية التي يحتمل أن تكون خطرة، وبالطبع، إذا لم ينجح التكوين، فقم بتعطيل تشغيل النظام بأكمله (لا، ليس الخادم بأكمله، على الأكثر الويب الخادم وPHP).

ولكن يمكن تعيين قيمة متغيرات النظام ليس فقط من خلال php.ini، ولكن أيضًا من خلال طرق أخرى، وإن كان ذلك مع قيود. لفهم ذلك، يجب أن ننظر بإيجاز في آلية معالجة ملفات التكوين بواسطة بيئة PHP.

أولاً، في أبسط الحالات، عندما يتم تشغيل PHP كتطبيق CGI، تتم إعادة قراءة الملف في كل مرة يتم فيها تشغيل المترجم. إذا كان متصلاً كوحدة SAPI بخادم Apache، فسيتم تحديد المسار إلى الملف بواسطة توجيه PHPIniDir لتكوين الخادم.

إذا لم يتم العثور على ملف التكوين بعد ذلك، فسيستمر البحث عنه في الأماكن التالية: بالنسبة لخادم Win32، يتم تحديد مفتاح التسجيل HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath، ثم يتم البحث عن الملف في الدليل الحالي من حيث يوجد المترجم. قيد التشغيل (php-cli.exe)، في الدليل الجذر لخادم الويب (لوحدة SAPI) أو في الدليل الجذر لـ PHP. ثم يستمر البحث في أدلة النظام (C:\WINDOWS، C:\WINXP، C:\SYSTEM32) وفي الدليل المحدد في مرحلة إنشاء PHP باستخدام خيار "--with-config-file-path".

بالإضافة إلى ذلك، يمكن تحديد الخيارات نفسها في ملفات مختلفة، على سبيل المثال في ملفات تكوين خادم Apache (httpd.conf)، وفي ملفات .htaccess (لدلائل المواقع الفردية)، وفي ملفات php.ini منفصلة موضوعة في أدلة تحتوي على نصوص برمجية، و حتى في نصوص PHP نفسها عن طريق استدعاء الدالة ini_set(). اعتمادًا على مكان وكيفية تعيين المتغير، سيكون له تأثير مختلف - بالنسبة للبرنامج النصي الحالي، أو لموقع أو دليل فردي، أو للخادم بأكمله حتى إعادة التشغيل.

لماذا هذا التنوع؟ بسيط جدا. على سبيل المثال، في موقف نموذجي، عندما يكون موقعك موجودًا على استضافة مشتركة، لا يمكنك إعادة تكوين تكوين PHP لنفسك، بينما في الوقت نفسه، لكي تعمل البرامج النصية بشكل طبيعي، تحتاج إلى تعيين بعض المتغيرات التي تختلف عن إعدادات المضيف. ثم تقوم ببساطة بتثبيت ملف php.ini في أدلة موقعك، حيث تحدد جميع الإعدادات التي تحتاجها. إذا كنت بحاجة إلى تغيير متغير واحد أو متغيرين فقط، فيمكن القيام بذلك عن طريق استدعاء الدالة ini_set() في بداية البرنامج النصي. لكن انتبه لشيء واحد. نظرًا لأن ini_set() هي وظيفة PHP، وبالتالي يتم تنفيذها بعد تهيئة المترجم الفوري، فسيتم تجاهل بعض الإعدادات، لأنها تؤثر على العمل فقط في المرحلة الأولية لبدء تشغيل PHP. لا تقلق، مثل هذه المعلمات، بالإضافة إلى المعلمات الخاطئة (النحوية) غير الصحيحة، سيتم تجاهلها ببساطة ولن تؤدي إلى أي عواقب في العمل.

دعونا نعطي مثالا عمليا. هناك توجيه الإبلاغ عن الأخطاءوالذي يشير إلى مستوى التفاصيل في إخراج رسائل الخطأ أثناء تفسير البرنامج النصي PHP. يمكن تهيئته لعرض كافة الرسائل والتحذيرات فقط التي لا تؤثر على تشغيل البرنامج. يمكنك إعادة تكوينه بنفسك، على سبيل المثال، مع السماح فقط بإظهار أخطاء التنفيذ الحرجة. في هذه الحالة، يجب أن يحتوي المتغير على القيمة "E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR" - أي عرض أخطاء المترجم والبيئة الحرجة وأخطاء kernel. يمكنك تعيين متغير عن طريق استدعاء الدالة ini_set()، والتي تأخذ معلمتين من السلسلة: يصف السطر الأول اسم الخيار، ويصف السطر الثاني القيمة الجديدة. وفي حالتنا هو: ini_set("error_reporting", "E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR");. هذا كل شيء، ونتيجة لذلك، ستستخدم PHP القيمة الجديدة للمتغير error_reporting في كل مرة تقوم فيها بتشغيل البرنامج النصي الخاص بك، بينما ستبقى القيمة الافتراضية الموضحة في php.ini لجميع المستخدمين الآخرين.

قبل استبدال متغير البيئة، من المستحسن التحقق من قيمته الحالية - ويتم ذلك باستخدام استدعاء دالة ini_get()، والتي تأخذ معلمة واحدة، وهي سلسلة باسم المتغير، وترجع سلسلة بقيمتها الحالية. في مثالنا الكود صدى ini_get("error_reporting");سيُرجع E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR، أي القيمة المحددة حديثًا، في نفس الوقت، إذا اتصلنا بـ ini_get() قبل تعيين القيمة الجديدة، فسنحصل على شيء مثل E_ALL & ~E_NOTICE (قد يختلف باختلاف الاستضافة) - عرض رسائل حول كافة الأخطاء باستثناء التحذيرات.

ولكن، قبل تعيين المتغيرات، فمن المستحسن التنقل في بنية الملف php.iniوفي الخيارات المتاحة. هناك القليل من المعلومات حول هذا الموضوع بخلاف التعليقات الموجودة في php.ini نفسه، لذلك سنحاول أن نصف بالتفصيل أهم المتغيرات التي سيتعين عليك التعامل معها.

الهيكل العام لملف php.ini بسيط للغاية. يتم تقسيم الملف بأكمله إلى أقسام، كل قسم يجمع المتغيرات المتعلقة بوحدة معينة أو بيئة PHP بأكملها ككل. في كل قسم يتم تحديد المتغيرات (التوجيهات) في النموذج اسم_المتغير=القيمة، أين معنىيمكن أن تكون إما سلسلة عشوائية (إذا كانت تحتوي على مسافات، فهي محاطة بعلامات اقتباس مزدوجة) أو قيمة تشغيل/إيقاف(ثم ​​يسمى هذا المتغير أيضًا علامة). يتم تحديد المتغيرات بمعدل واحد في كل سطر، وجميع الأسطر التي تبدأ بـ " ; " يتم التعامل معها كتعليقات ولا تتم معالجتها. تذكر أن أسماء التوجيهات حساسة لحالة الأحرف ويتم كتابتها في الغالب بأحرف صغيرة.

اسم القسم محاط بين قوسين مربعين. على سبيل المثال، القسم الأول هو قسم إعدادات البيئة العامة - . يحتوي قسم وحدة ODBC للاتصال بقواعد البيانات على اسم، ويتم إجراء إعدادات الوصول إلى MySQL في القسم، ويتم تكوين واجهة MySQLI الجديدة، ويتم تحديد معلمات الجلسة في القسم. يتوافق كل قسم، باستثناء القسم الموجود على مستوى النظام، مع بعض الامتدادات، إذا كان يحتاج إلى التكوين بالطبع.

في الوقت الحالي، لنبدأ بالتوجيهات الموضحة في القسم. سننظر في تكوين PHP الإصدار 5.0.x، لذلك إذا كان لديك إصدار سابق، فقد تكون بعض التوجيهات مفقودة.

المحرك =- علامة تسمح لـ PHP بالعمل على خادم Apache. افتراضيًا، يتم ضبطه دائمًا على تشغيل.

Zend.ze1_compatibility_mode =- ظهر التوجيه في PHP 5.0 ويسمح لك بالتبديل إلى وضع التوافق مع البرامج النصية المكتوبة للإصدارات السابقة. إذا كنت تقوم بتخصيص PHP لنفسك ولا تحتاج إلى الحفاظ على التوافق، فاضبط العلامة على Off، ولكن إذا تم تكوين PHP لخادم مشترك، فمن المنطقي السماح للمستخدمين بتشغيل جميع البرامج النصية المكتوبة باستخدام Zend I core ( PHP 4.x) في الاعتبار.

short_open_tag =- يمكن لـ PHP التعرف على عدة علامات مختلفة لبداية ونهاية كتلة البرنامج. تسمح هذه العلامة باستخدام تدوين قصير مثل.

الدقة =- يحدد عدد الأرقام المهمة التي يجب أن تأخذها PHP في الاعتبار عند التعامل مع الأعداد الكسرية. الافتراضي هو 12 حرفًا، وهو ما يكفي تمامًا.

Output_Buffering =— تمكين التخزين المؤقت للمخرجات لجميع الصفحات أو تعيين حجم المخزن المؤقت بالبايت (إذا كانت القيمة عددًا صحيحًا، على سبيل المثال 4096، يتم تعيين حجم المخزن المؤقت على 4 كيلو بايت). يُستخدم للتخزين المؤقت لرؤوس HTTP وملفات تعريف الارتباط قبل إرسال محتوى آخر إلى العميل.

output_handler =- يسمح لك بتحديد وظيفة لإعادة توجيه كافة مخرجات الصفحة. وفي الوقت نفسه، إذا تم تحديد الوظيفة، فسيتم تمكين التوجيهoutput_buffering. يمكن استخدامه لتحويل ترميز المحتوى الذي تم إنشاؤه أو ضغطه أو تخزينه مؤقتًا أو أي معالجة لاحقة أخرى. إذا لم يتم استخدام التوجيه، فامنحه قيمة فارغة (سلسلة فارغة أو القيمة لا شيء).

الوضع الآمن =- يحول PHP إلى وضع تشغيل محمي خاص، مما يزيد من الأمان، ولكنه يفرض أيضًا قيودًا على البرمجة. يمكن أن يكون مفيدًا جدًا عند إنشاء أنظمة ذات أمان متزايد. يرتبط هذا التوجيه بالعديد من التوجيهات الأخرى بأسماء تبدأ بـ Safe_mode_، والتي تضع قيودًا محددة وفحوصات إضافية. افتراضيًا، يتم تعيين التوجيه على إيقاف.

وظائف تعطيل =- يحدد قائمة الوظائف التي يحظر استخدامها في البرامج النصية للمستخدم. يمكن استخدامه لتوفير أمان إضافي عن طريق حظر الوظائف التي يحتمل أن تكون خطرة (على سبيل المثال، مكالمات النظام). لتحديد الوظائف، قم بإدراجها بين علامات اقتباس مزدوجة مفصولة بفواصل. على سبيل المثال، "exec,php_info,file,ini_set" يحظر الاتصال بالوظائف exec()، php_info()، file()، ini_set(). ولكن لا يمكن تثبيت هذا التوجيه إلا قبلتهيئة PHP، أي في ملف php.ini أو httpd.conf.

max_execution_time =— يشير إلى الوقت بالثواني الذي يمكن خلاله تنفيذ برنامج نصي واحد. إذا تم تجاوز الحد، فسيتم فرض إنهاء تنفيذ البرنامج النصي مع حدوث خطأ. يمكن أن يكون هذا مفيدًا لإيقاف البرامج المكتوبة بشكل غير صحيح والتي قد تتداخل مع التشغيل العادي للخادم. في الوقت نفسه، لا ينبغي عليك ضبط الوقت على أنه قصير جدًا، لأنه إذا كنت تعمل مع مضيفين أو قواعد بيانات أو ملفات عن بعد، فقد ينتهي الوقت المخصص قبل تشغيل البرنامج النصي.

max_input_time = [-1/عدد صحيح]- يحدد الوقت بالثواني الذي يمكن للبرنامج النصي خلاله إخراج البيانات. من المستحسن عدم تعيينه أقل من التوجيه max_execution_time. إذا قام البرنامج النصي بإخراج البيانات بشكل مكثف، على سبيل المثال، معالجة شيء ما في حلقة وعرض أجزاء كبيرة من النص، فيجب تعيين قيم كبيرة للتوجيهات أو عدم تعيينها على الإطلاق - فسيكون القيد الوحيد هو إجمالي وقت التنفيذ النصي. لا يمكن تثبيت التوجيه إلا عبر php.ini.

Memory_limit =- يحدد حجم ذاكرة الوصول العشوائي المخصصة لبرنامج نصي واحد. تشير البادئة M إلى أن الحجم بالميجابايت، وK - كيلو بايت. بالنسبة للخادم العام (على سبيل المثال، الاستضافة المشتركة)، يمكنك تعيين قيمة أقل، ولكن إذا كنت بحاجة إلى إجراء حسابات مكثفة أو تخطط لتشغيل برامج تجارية جادة، فيمكن زيادة القيمة (اعتمادًا على حجم ذاكرة الوصول العشوائي على الخادم) ).

أخطاء العرض =- يسمح للمستخدم بعرض رسائل حول أخطاء وقت التشغيل وتحذيرات PHP. أوصي دائمًا بتمكين هذا التوجيه ليس فقط في وضع تصحيح الأخطاء، ولكن أيضًا في العمل الحقيقي، وضبط تفاصيل الإخراج بشكل أكثر دقة باستخدام خيار error_reporting.

error_reporting = [مجموعة الثوابت المحددة مسبقًا]- يشير إلى التفاصيل المطلوبة للرسائل حول الأخطاء والإخفاقات في المترجم.

يمكن دمج الثوابت باستخدام عوامل إضافة bitwise. أهم الثوابت هي: E_ALL (جميع الأخطاء والتحذيرات)، E_COMPILE_ERROR (أخطاء مترجم فادحة)، E_CORE_ERROR (أخطاء فادحة أثناء تهيئة PHP kernel)، E_ERROR (أخطاء وقت تشغيل فادحة)، E_PARSE (أخطاء في بناء الجملة)، E_NOTICE وE_WARNING (تحذيرات وقت التشغيل ). عمليات التنفيذ التي ليست حاسمة لتشغيل البرنامج النصي).

لتصحيح البرنامج النصي، من المستحسن تعيين الحد الأقصى لتفاصيل الرسالة، على سبيل المثال error_reporting = E_ALL، في التشغيل الفعلي، من المستحسن استبعاد التحذيرات التي لا تؤثر على التشغيل، على سبيل المثال. error_reporting = E_COMPILE_ERROR|E_CORE_ERROR|E_ERRORسيظهر الأخطاء الفادحة فقط (خيار آخر: error_reporting = E_ALL & ~E_NOTICE & ~ E_WARNING).