كيف أعرف والتي تشمل المسار الذي سيتم استخدامه في PHP؟

StackOverflow https://stackoverflow.com/questions/2774823

سؤال

عندما أركض 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top