Solución
- Ve a
vendor/livewire/livewire/src/Controllers/FileUploadHandler.php
y comenta esta líneaabort_unless(request()->hasValidSignature(), 401);
- Vaya a
vendor/livewire/livewire/src/TemporaryUploadedFile.php
y en lugar de esto$tmpfile = tmpfile();
, escriba esto:$tmpfname = tempnam(sys_get_temp_dir(), ''); $tmpFile = fopen($tmpfname, 'w');
- Vaya a la carpeta
public
de su aplicación y cree el directoriolivewire
. (mkdir livewire
) Después de eso, vaya a ese directorio y desde allí creará un enlace simbólico que apuntarápublic/livewire/preview-file
al directoriostorage/app/public/livewire-tmp
de su aplicación:
ln -s preview-file ../../storage/app/public/livewire-tmp
Y recuerde, debe otorgar 755 permisos a las carpetas que están dentro del directorio storage/app/public
Explicación
- Necesitamos comentar esa línea, porque verifica si tiene
ssl certificate
o no. En caso contrario, abortará la solicitud. Si tiene un certificado SSL, puede omitir este paso. - En este paso, creamos
temporary file
y damos acceso de escritura. - El último paso es simplemente crear un archivo
symbolic link
. Necesitamos crear estosymbolic link
porque, al cargar un archivo, Livewire crea un archivo temporal con esa URL.
Fuente: https://stackoverflow.com/questions/73294167/livewire-image-upload-fails-on-production-server