راکت
حل شده

ارور مربوط به کانفیگ در لاراول

7 پاسخ

درود بر دوستان بنده وقتی دستور
php artisan config:cache میزنم این ارور میده دلیلشو نمی دونم!

  Your configuration files are not serializable. 

  at C:\Users\aseman\Desktop\AryaBMS\vendor\laravel\framework\src\Illuminate\Foundation\Console\ConfigCacheCommand.php:71
     67▕             require $configPath;
     68▕         } catch (Throwable $e) {
     69▕             $this->files->delete($configPath);
     70▕
  ➜  71▕             throw new LogicException('Your configuration files are not serializable.', 0, $e);
     72▕         }
     73▕
     74▕         $this->info('Configuration cached successfully!');
     75▕     }

  1   C:\Users\aseman\Desktop\AryaBMS\bootstrap\cache\config.php:1139 
      Error::("Call to undefined method Closure::__set_state()")

  2   C:\Users\aseman\Desktop\AryaBMS\vendor\laravel\framework\src\Illuminate\Foundation\Console\ConfigCacheCommand.php:67
      require()
ثبت پرسش جدید

پاسخ‌ها

7
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

بهترین پاسخ

سلام
اگر داخل یکی از فایل های config تون فانکشن تعریف کرده باشید باعث بوجود اومدن این ارور میشه. مثلا یکی از رایج ترین شرایط استفاده از پکیج cviebrock/eloquent-sluggable برای ساخت slug های فارسی هست و اگر طبق بسیاری از آموزش ها مقدار method رو برابر فانکشن تعریف کنید:

'method' => function($string, $separator = '-') {
    //...
}),

موقع cache کردن با ارور Your configuration files are not serializable. روبرو میشید که مفهوم و علتش هم مشخصه دیگه.

یکی از راهکار هاش این هست که دستور العمل ها رو از داخل config به یک کلاس یا helper یا service منتقل کنید و داخل فایل config بهش ارجاع بدید. مثلا اینجوری:

'method' => [\App\Services\SlugService::class, 'method'],
class SlugService {

    public static function method($string, $separator = '-') {
        //...
    }

}
مهدی اردشیر
مهدی اردشیر
@mehdi0121

تخصص: یه برنامه نویس

سلام یه بار
config:clear
بزن تا کانفیگ قبلی پاک بشه
بعدش تست کن
لینک زیر هم میتونه کمکت کنه
https://stackoverflow.com/questions/52065513/your-configuration-files-are-not-serializable

علیرضا
علیرضا
@alirezamoghadam3180

تخصص: در حال یادگیری لاراول

@mehdi0121 سپاس اینکارو کردم اما همچنان تفاوتی نکرد لینک زیر انجام دادم اما بازم تفاوتی نکردد

شاید پاسخ شما همین‌جا باشد

علیرضا
علیرضا
@alirezamoghadam3180

تخصص: در حال یادگیری لاراول

داخل کانفیگ یه پکیجی داشتم که پاک کردم و provider ش هم برداشتم بعد یه پکیج دیگه اضافه کردم که زدم اینجوری شد! @mehdi0121

علیرضا
علیرضا
@alirezamoghadam3180

تخصص: در حال یادگیری لاراول

@mhyeganeh سپاس از شما والا مهندس من پکیج اسلاگبل دارم اما سرچ که می کنم داخل کانفیگ و اپ وجود نداره
اصلا نمی دونم باید چکار کنم

فرشید مرادی
فرشید مرادی
@eniack

تخصص: noob

سلام ، این پیوند رو ببینید

محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

اگر پکیجی که گفتم رو دارید باید داخل پوشه config یک فایلی هم داشته باشید به نم sluggable.php
اگر نداشتید با استفاده از دستور زیر می‌تونید ایجادش کنید:

php artisan vendor:publish --provider="Cviebrock\EloquentSluggable\ServiceProvider"

مرحله دوم و برای حل مشکل کش کردن کانفیگ هاتون یک جستجوی کامل داخل دایرکتوری config اجرا کنید و عبارت function رو جستجو کنید. هر جایی که به کار رفته بود باید بازنویسی و اصلاح بشه تا این ارورتون برطرف بشه.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام