سلام
پروژه من با لاراول و لایو وایر هست و در محیط لوکال مشکلی نداشت
در تمام فرم ها عکس به درستی اپلود میشد و پیش نمایش هم نشون میداد
کد کامپوننت کلاس
use AuthorizesRequests;
use WithPagination;
use WithFileUploads;
protected $paginationTheme = 'bootstrap';
protected $queryString= ['search'];
public $search;
public $brand;
public $tasvir;
protected $listeners = [
'update.brands.list' => '$refresh',
];
protected $rules = [
'brand.title' => 'required|min:3' ,
'tasvir' => 'required',
];
public function updated($value) // for realtime validation
{
$this->validateOnly($value);
}
public function createNewBrands()
{
if (! Gate::allows('create-brand')){
$this->dispatchBrowserEvent('alert',
['type' => 'info', 'message' => 'شما اجازه ایجاد دسته بندی را ندارید']);
return ;
}
$this->validate(); // اگر تصویر بود آدرس تصویر گرفته شود
if ($this->tasvir):
$imageaddress = $this->uploadMyPhotos();
else:
$imageaddress = null;
endif;
Brand::create([
'title' => $this->brand['title'],
'image' => $imageaddress,
]);
$this->emit('update.brands.list');
$this->brand = null;
$this->tasvir = null;
$this->dispatchBrowserEvent('alert',
['type' => 'success', 'message' => 'برند مورد نظر با موفقیت ایجاد شد']);
}
public function uploadMyPhotos() // upload photos
{
$year = now()->year;
$month = now()->month;
$day = now()->day;
$dir = "uploads/$year/$month/$day";
$name = rand(1000 , 99999) . '-' . $this->tasvir->getClientOriginalName();
$this->tasvir->storeAs($dir , $name);
return "$dir/$name";
}
public function deleteThisBrands(Brand $brand)
{
if (! Gate::allows('delete-brand')){
$this->dispatchBrowserEvent('alert',
['type' => 'info', 'message' => 'شما اجازه حذف برند را ندارید']);
return ;
}
$brand->delete();
$this->emit('update.brands.list');
$this->dispatchBrowserEvent('alert',
['type' => 'success', 'message' => 'برند مورد نظر با موفقیت حذف شد']);
}
public function render()
{
$this->authorize('show-brands');
$brands = Brand::where('title' , 'LIKE' , "%{$this->search}%")
->latest()
->paginate(6);
return view('livewire.admin.products.brands.all-brands' , compact('brands'))->layout('livewire.admin.layouts.master');
}
کد blade
<form wire:submit.prevent="createNewBrands" class="text-right" >
<div class="row">
<div class="col-6">
<div class="form-group">
<label for="name" class="form-label">نام</label>
<input type="text" wire:model.debounce="brand.title" class="form-control" id="name">
@error('brand.title')
<span class="text-danger">{{ $message }}</span>
@enderror
<span wire:target="brand.title" wire:loading>
<span class="spinner-border spinner-border-sm text-danger"></span>
</span>
</div>
</div>
<div class="col-6">
<label class="form-label" for="image">تصویر شاخص </label>
<input wire:model.debounce="tasvir" id="image" type="file" class="form-control">
<span wire:target="tasvir" wire:loading>
<span class="spinner-border spinner-border-sm text-danger"></span>
</span>
@error('tasvir')
<span class="text-danger">{{ $message }}</span>
@enderror
</div>
<div class="col-6">
@if($tasvir)
<img class="img-fluid" width="100" height="100" src="{{ $tasvir->temporaryUrl() }}" alt="">
@endif
</div>
<div class="col-6">
<button class="btn btn-success">ایجاد brand</button>
</div>
</div>
</form>
اما وقتی پروژه رو بردم روی سرور وقتی یک عکس رو انتخاب میکنم قبل از اینکه حتی بخام فرم رو سابمیت کنم اررو میده
تمام کارهارو انجام دادم پوشه public_html رو حذف و پوشه public خودم رو به public_html تغییر نام دادم
کد appServiceProvider
public function register()
{
$this->app->bind('path.public' , function(){
return base_path() . '/public_html';
});
}
کد filesystem
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
],
],
'links' => [
public_path('storage') => storage_path('app/public'),
],
وقتی دستور php artisan storage:link را زدم این اررور رو بهم داد
In Filesystem.php line 330:
symlink (): No such file or directory
Content-type: text / html; charset = UTF-8
وارد پوشه public_html هم شدم دستور rm storage زدم ولی اررور میده
rm: cannot remove ‘storage’: Is a directory
لطفا راهنمایی کنید هیچ عکسی رو در سرور نمیتونم اپلود کنم
@ali.bayat @mohaligateway @Rp76 @hesammousavi @mhyeganeh
خوب خودش سوال خیلی خوبی پرسیده:
have you enabled the php_fileinfo extension?
اگر نه احتمالا باید تیکت بزنید و از پشتیبانش بخواید که فعالش کنه.
فایل log رو دیدم این اررور رو داده
Unable to guess the MIME type as no guessers are available (have you enabled the php_fileinfo extension?).
خوب خودش سوال خیلی خوبی پرسیده:
have you enabled the php_fileinfo extension?
اگر نه احتمالا باید تیکت بزنید و از پشتیبانش بخواید که فعالش کنه.
سلام
بله به پشتیبانی هم گفتم گفت روی همه نسخه های php فعال است
حتی با sudo nano تمام فایل های php.ini رو پیدا کردم و uncomment کردن
extension = php_fileinfo.dll
اما بازم همون اررو رو میده و همون فایل log ایجاد میشه
[2021-11-30 07:12:22] local.ERROR: Unable to guess the MIME type as no guessers are available (have you enabled the php_fileinfo extension?). {"userId":4,"exception":"[object] (Symfony\\Component\\Mime\\Exception\\LogicException(code: 0): Unable to guess the MIME type as no guessers are available (have you enabled the php_fileinfo extension?). at /home/ecomed/vendor/symfony/mime/MimeTypes.php:140)
[stacktrace]
وقتی فقط عکس رو انتخاب میکنم این اررور میاد یعنی قبل از اینکه فرم رو سابمیت کنم
temporaryfileupload لایو وایر نمیتونه فایل رو اپلود کنه
کسی میدونه دلیلش چیه؟
@mhyeganeh
@ali.bayat
@Alimotreb
@hesammousavi @mohaligateway
اول از uncomment بودن خط زیر اطمینان حاصل کنید:
extension=php_fileinfo.dll
بعد یکبار وب سرورتون رو ریستارت کنید تا تنظیمات جدید رو بخونه. اما اگر باز هم حل نشد:
بنا بر تجربه مشابه یک کاربر دیگه که اینجا نوشته، بجای php artisan serve
سعی کنید با virtual host پروژتون رو باز کنید و مجدد تست کنید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟