سؤال

حاليا على موقعي أنا أستخدم بيانات مثل:

include 'head.php';
include '../head.php';
include '../../head.php';

اعتمادا على عدد المجلدات المتداخلة عميقة أنا. أنا متأكد من وجود طريقة أفضل للقيام بذلك.

انا مقتنع .htaccess هو الحل، لكنني لست متأكدا من كيفية الذهاب حول تنفيذها. إذا قمت بإدراج:

php_value include_path "public/html/root"

... أفقد بقية مساراتي (/usr/lib/php, ، إلخ). جربت ساذجة:

php_value include_path $include_path . "(path)"

ولكن بالطبع هذا لم ينجح. كيف يمكنني إعدام أو إلحاق مسار واحد بهذه القائمة .htaccess?

هل كانت مفيدة؟

المحلول

إذا لم تتمكن من تحرير php.ini ملف نفسه، يمكنك إضافة

set_include_path(get_include_path() . PATH_SEPARATOR . $path_to_add);

قبل حسابك include صياغات.

ولكن إذا وجدت نفسك include أو require مشاكل، ربما رائحة رمز. سيكون أفضل حل تصميم جيد وجوه موجه مع جيد __autoload وظيفة.

نصائح أخرى

إنشاء في الدلائل الفرعية الفرعية ملف .htaccess مع المحتويات

php_value include_path '../../includes'

أو أيا كان include_path هو الصحيح لهذا الدليل.

مزايا:

  1. لا الاختراق القبيح مع متعددة يشمل مع عمق مختلف. فقط include 'head.php'.
  2. لا الاعتماد على التحرير php.ini.
  3. لا حاجة للاستخدام set_include_path() قبل بما في ذلك.
  4. لا الاعتماد على بما في ذلك الثوابت مثل include INCLUDE_PATH . 'head.php'.

ثمن البيع:

يمكنك القمامة الدلائل الفرعية الفرعية لكل منها مع ملف .htaccess.

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