۵ سامان عزیزی
مشکل autoloader در سیستم عامل لینوکس
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۱۰ فروردین ۱۴۰۲

نمیدونم چرا autoloader داخل سیستم عامل لینوکس کلا کلاس‌ها رو include نمیکنه یعنی قسمت else دستور شرطی رو اجرا میکنه کد رو هم پایین قرار دادم بعد chmod پوشه‌ها رو هم کلا ۷۷۷ دادم و chown هم خودم قرار دادم ولی باز هم اون کلاس‌ها رو بارگزاری نمیکنه

spl_autoload_register(function ($className) {
    $classFile = __DIR__ . "/" . $className . ".php";
    if (!(file_exists($classFile) and is_readable($classFile)))
        die("$className not found");
    include_once $classFile;
});

سلام و احترام

کدهارو وقتی ضمیمه کردید احتمالا به صورت کامل ارسال نشده یا مشکلی در ادیتور بوده به هر حال کدها به نظر کامل نمیاد ولی لطفا فرایند دیباگ رو خودتون انجام بدید

یعنی ادرس دهی رو قبل از پاس دادن تست کنید که درست باشه با یک var_dump یا export ساده میتونید بررسی کنید

متودهارو هم داخل وردامپ بزارید تا ببینید چه نتیجه ای میدن به شما


بهنام مرادی ۱۰ فروردین ۱۴۰۲، ۱۴:۰۶

توی ویندوز درست کار می‌کنه ولی توی سیستم لینوکس کلا کار نمیکنه

آدرس فایلها هم کاملا درسته خیلی هم سرچ کردم چیزی پیدا نکردم

سامان عزیزی ۱۰ فروردین ۱۴۰۲، ۱۵:۱۵

سلام جناب عزیزی عزیز

توی سیستم‌های لینوکسی بعضی و از سیستم‌ها عامل‌ها از / یا \\ بعنوان جدا کننده بخش‌های یه آدرس استقاده نمی‌شه . مشکل ایجاد می‌کنه بهتر برای رفع این مشکل از ثابت

DIRECTORY_SEPARATOR استفاده کنید به شکل زیر :

موفق باشید.

spl_autoload_register(function ($className) {
    $classFile = __DIR__ . DIRECTORY_SEPARATOR . $className . ".php";
    if (!(file_exists($classFile) and is_readable($classFile)))
        die("$className not found");
    include_once $classFile;
});
وحید صالحی ۱۱ فروردین ۱۴۰۲، ۱۰:۳۱

ممنونم استاد عزیز خیلی هم عالی

سامان عزیزی ۱۱ فروردین ۱۴۰۲، ۱۰:۳۴

زنده باشید توی سیستم‌های لینوکسی و بعضی از سیستم‌ها عامل‌ها از / یا \\ بعنوان جدا کننده بخش‌های یه آدرس استقاده نمی‌شه و باعث خطا میشه

بهترین پاسخ
وحید صالحی ۱۱ فروردین ۱۴۰۲، ۱۰:۳۶