aqbbqa
3 سال پیش توسط aqbbqa مطرح شد
3 پاسخ

اضافه کردن پکیج جدید پیامک در پروژه روی هاست اشتراکی

سلام خدمت اساتید گرامی
من از ملی پیامک روی پروژه لوکال خودم استفاده کردم و هیچ مشکلی نداشتم . دقیقا شبیه مراحل داخل لینک زیر انجام دادم
https://github.com/Melipayamak/melipayamak-laravel
همین پروژه رو روی هاست اشتراکی دارم
برای اینکه بتونم از پکیج استفاده کنم، چون نمیتونم از دستوراتی مثل :
composer require melipayamak/laravel:1.0.0
در Cpanel استفاده کنم ، به ترتیب این کار ها رو انجام دادم:
1- فایل composer.json و composer.lock رو طبق چیزی که در پروژه لوکال تغییر کرده بود ، کدهای اضافه شده رو به همین فایل ها در پروژه روی هاست اضافه کردم
2- در پوشه vendor ، پوشه Melipayamak رو به پروژه روی هاست در همون قسمت دقیقا انتقال دادم
3- در فایل config/app.php دو خط زیر رو اضافه کردم:

'providers' => [
  ...
  Melipayamak\Laravel\ServiceProvider::class,
],

'aliases' => [
  ...
  Melipayamak\Laravel\Facade::class,
],

و سپس فایل Melipayamak.php رو به پوشه Config انتقال دادم
ولی هنگام استفاده از این پکیج ارور داد و Melipayamak\Laravel\ServiceProvider::class رو شناسایی نمی کرد

با توجه به اینکه در پروژه لوکال این دستور رو (php artisan vendor:publish --tag="melipayamak") نوشته بودم و مشکل حل شده بود
در روت پروژه روی هاست این تیکه کد رو نوشتم و اجرا کردم. نمی دونم درسته یا نه تست بود.

Route::get('/artisan', function(){
$ok = Artisan::call('vendor:publish --tag="melipayamak"');
return 'ok';
});

ولی مشکل حل نشد.

الان دو تا مشکل دارم :
1- اینکه الان برای اینکه در پروژه روی هاست از سرویس پیامک مثل پروژه لوکال استفاده کنم باید چکار کنم؟
2- مهمتر از اون اینه که در پروژه روی هاست ، الان هر ریکوستی که به سرور ارسال میشه یک ارور دارم. اصلا نمیدونم چیگار کنم. لطفا کمک کنید ممنون از دوستان عزیز

Unable to detect application namespace.

بعضی جاها دیدن گفتن composer update استفاده کن
ولی در cpanel چطور میشه این کار رو کرد؟


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
1

چون سرورتون هاست اشتراکی هست و دسترسی به SSH ندارید کار کمی سخت تر هست. بخشی از مسیر رو هم درست رفتید. ولی توجه داشته باشید که در اکثر مواقع صرفا بارگزاری پوشه پکیج (در مثال شما vendor/Melipayamak) کفایت نمی‌کنه. چون احتمال داره هر پکیج، چندتا پکیج دیگر رو هم بعنوان dependency نصب کنه. و علت دوم اینکه بخش مهمی از کدهای داخل پوشه vendor/composer هم که مسئولیت autoload رو دارند هم تغییر می‌کنند. به همین خاطر هست که میگید Melipayamak\Laravel\ServiceProvider::class رو شناسایی نمی‌کنه.

در کل در شرایط هاست اشتراکی، بهترین روش این هست که مثلا با FileZilla از طریق FTP به هاستتون متصل بشید و کل پوشه های app و config و resources و routes و public رو روی هاست overwrite کنید تا مطمئن بشید با هم sync هستند.

در مرحله بعد اگر این پکیج migration هم داشته و جدول جدید ایجاد کرده اون ها رو هم در دیتابیس هاست بصورت دستی مثلا از طریق phpmyadmin خودتون ایجاد کنید.

و در آخرین مرحله یکبار دستور composer dump-autoload‍ رو در نسخه لوکال بزنید و چک کنید اگر همه چیز اوکی بود، کل پوشه vendor لوکالتون رو zip کنید و بدون تغییر داخل هاست آپلود کنید. کل پوشه vendor هاستتون رو حذف کنید و نسخه جدید رو روی هاست extract کنید.


چند تا نکته آموزشی و تکمیلی:

پ ن ۱: در هاست نیازی نیست دستور vendor:publish رو بزنید. کافیه فایل هایی که با این دستور ایجاد می‌شوند (معمولا یک فایل داخل مسیر config یا migration هستند) رو روی هاست آپلود کنید.

پ ن ۲: وقتی دسترسی به SSH ندارید نیازی به ویرایش فایل های composer.json و composer.lock در هاستتون نیست و عملا بی فایده است.

پ ن ۳: برای اینکه کلیه پکیج های کامپوزر آپدیت بشوند، از دستور composer update استفاده میشه. مجددا در شرایطی که به SSH دسترسی ندارید، کافیه این دستور رو روی نسخه لوکال اجرا کنید. بعد از اتمام موفقیت *****، عملیات انتقال کل پوشه vendor به هاست رو که بالا توضیح دادم انجام بدید.


aqbbqa
تخصص : برنامه نویس
@mahdicmptr 3 سال پیش مطرح شد
0

@mhyeganeh تشکر فراوان از استاد عزیز
پیروز باشید


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
0

موفق و پیروز باشید.

در حد و قواره واژه «استاد» نیستم. محمدحسنم :)


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

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