سؤال

enter image description here

لدي بنية الدليل التالية، وأضع كل فئاتي بداخلها classes/ كما هو موضح أدناه، ولدي header.php الذي يستدعي جميع الملفات، ويحتوي على إعدادات مهمة أخرى تشترك فيها جميع الملفات.

الآن، إذا كنت تستخدم spl_autoload_register() من هنا:

spl_autoload_register(function($class){
        include 'classes/'. $class .'.class.php';
    });

داخل inc/header.php ملف واستدعاء هذا header.php من وجهة نظري index الملف، فهو يعمل بشكل جيد على المضيف المحلي الخاص بي، ولكن عندما أقوم بتحميل البرنامج النصي بالكامل كما هو إلى مضيف مباشر، تظهر لي أخطاء مثل.

Warning: include(classes/filehandler.class.php) [function.include]: failed to open stream: No such file or directory in /home/.../public_html/....com/inc/header.php on line 9 

Line 9 هل spl_autoload_register()

لا أفهم كيف يمكن أن يحدث هذا، وآمل أن يكون لدى أي شخص أي فكرة على الإطلاق.

شكرًا

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

المحلول

لإظهار ما أعنيه بتعليقاتي، أضف هذا الكود في ملف Index.php الخاص بك وقم بإزالة أداة التحميل التلقائي من ملفاتك الأخرى:

spl_autoload_register(function($class){
    $classesPath = dirname(__FILE__) . '/classes/';
    if (is_file($classFile = $classesPath . $class.'.class.php')) {
        include $classFile;
    }
});

بالنسبة إلى inc/header.php:

spl_autoload_register(function($class){
    $classesPath = dirname(__FILE__) . '/../classes/';
    if (is_file($classFile = $classesPath . $class.'.class.php')) {
        include $classFile;
    }
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top