كيف أعرف والتي تشمل المسار الذي سيتم استخدامه في PHP؟
-
03-10-2019 - |
سؤال
عندما أركض phpinfo()
وانظر من قبل Configuration
فئة تحت PHP Core
, ، أرى توجيهًا بعنوان include_path
, ، مع قيمة محلية وقيمة رئيسية.
في هذه الحالة ، تم تعيين قيمتي المحلية
.: ./include: ../include: /usr/share/php: /usr/share/php/smarty: /usr/share/pear
وتم تعيين قيمتي الرئيسية على
.: /usr/share/php: /usr/share/pear: /usr/share/php/pear: /usr/share/php/smarty
السبب في أنني أحاول أن أتعلم كيف يعمل هذا لأن هناك ملفًا في النظام الذي أعمل عليه بعنوان Smarty.class.php
, ، وأنا متأكد من أنه يبدو مألوفًا جدًا لأي شخص يستخدم محرك Templating Smarty.
يتضمن أحد ملفات PHP ما يلي:
require_once("Smarty.class.php"); require_once("user_info_class.inc");
الملف user_info_class.inc
في نفس الدليل مثل الملف الذي يقوم بتضمينه ، والذي يكون منطقيًا تمامًا بالنسبة لي ، وهي الطريقة التي أشرت بها دائمًا إلى الملفات. قررت أنني أردت فتح ملف smarty.class.php وافترضت أنه سيكون في نفس الدليل ، لكنه لم يكن كذلك.
بعد القيام ببعض الحفر ، اكتشفت ذلك php_ini
المتغيرات ، وتمكنت أخيرًا من تحديد موقع الملف في الدليل usr/share/php/smarty/
.
لذلك يبدو أنه عند إجراء تشمل ، فإنه يتبع نوعًا من الترتيب بين القيم المحلية والماجستير include_path
.
على افتراض أن خصوصي كانت صحيحة حتى الآن ، هل يمكن لأي شخص أن يشرح الترتيب الذي يبحث فيه PHP عن الملفات التي سيتم تضمينها؟
المحلول
القيمة العالمية هي في الأساس ما تم تعيينه في php.ini. القيمة المحلية هي ما يتم استخدامه حاليًا. القيمة المحلية تكتب تمامًا القيمة الرئيسية.
وفقًا للدليل ، يتحقق PHP من المسارات بالترتيب الذي تم تحديده في إعداد insly_path: http://php.net/manual/en/ini.core.php#ini.include-path