يفشل إعداد مسار التضمين في PHP بشكل متقطع

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

  •  09-06-2019
  •  | 
  •  

سؤال

لقد حاولت كلا من:

ini_set('include_path', '.:/usr/share/php5:/usr/share/php5/PEAR:lib:app/classes');

و أيضا :

php_value include_path ".:/usr/share/php5:/usr/share/php5/PEAR:lib:app/classes"

في ملف .htaccess.

كلتا الطريقتين في الواقع اعمل ولكن بشكل متقطع فقط.أي أنها ستعمل بشكل جيد مع طلبات 37 صفحة تقريبًا ثم تفشل في طلب 42 صفحة تقريبًا مما يؤدي إلى استدعاء require()‎ للتسبب في حدوث خطأ فادح يؤدي إلى تعطل الموقع بشكل فعال.

لست متأكدًا حتى من أين أبدأ في محاولة معرفة ما يجري!


@ملاحظة

يبدو أنك قمت بتكرار الدليل الحالي في مسار التضمين الخاص بك.حاول إزالة أحد ".:" من السلسلة الخاصة بك.

النسخة الموجودة في البرنامج النصي كانت في الأصل

ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . 'lib' . PATH_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'classes');

وهكذا .:.:كان قادمًا من المسار الحالي:

ini_get('include_path')

حاولت إزالته على أي حال وما زالت المشكلة قائمة.

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

المحلول

اتضح أن المشكلة كانت مرتبطة بخلل PHP في الإصدار 5.2.5

أدى تعيين "admin_flag" لـ include_path إلى أن يكون مسار التضمين فارغًا في بعض الطلبات، ويقوم Plesk بتعيين admin_flag في التكوين الافتراضي لشيء ما أو غيره.تحديث PHP حل المشكلة.

http://bugs.php.net/bug.php?id=43677

نصائح أخرى

هل جربت set_include_path()؟.كميزة، يُرجع هذا الخطأ خطأ عند الفشل، مما يسمح لك على الأقل برصد حدوث هذا الخطأ وإنشاء بعض بيانات تصحيح الأخطاء ذات المعنى.بالإضافة إلى ذلك، يجب عليك استخدام الثابت PATH_SEPARATOR كما يختلف بين النوافذ / * لا شىء.

كمثال محدد:

set_include_path('.' . PATH_SEPARATOR . './app/lib' . PATH_SEPARATOR . get_include_path());

(يعني get_include_path() في النهاية أن أي مسار ini / htaccess الذي تم تعيينه عليه سيبقى)

يبدو أنك قمت بتكرار الدليل الحالي في مسار التضمين الخاص بك.حاول إزالة أحد ".:" من السلسلة الخاصة بك.

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