11
respostas

Diretório default Storage

Pessoal estou com uma dúvida de como alterar o diretório padrão do Storage do Laravel.

Meu código ficou assim, gostaria que as imagens fossem salvas na pasta public. O meu laravel joguei no FTP então a pasta com os arquivos do laravel esta no ftp assim no /laravel (arquivos do laravel) public/senge/ (pasta public do laravel).

Grato.

  if (Input::file('photo'))
            {
                File::move($photo,storage_path().'/imagem-photo/avatar_'.$usuario->id.'.'.$extensao);
                $usuario->photo = storage_path().'/imagem-photo/avatar_'.$usuario->id.'.'.$extensao;
                $usuario->save();
            }
11 respostas

Oi Leando, tudo bom?

Tenta definir no seu arquivo .env algo como:

APP_STORAGE=seu/caminho/aqui

Apenas tome cuidado ao alterar esse tipo de informação no framework pois o proprio framework pode usa-lo para algo e a gente pode acabar afetando funcionalidades relacionadas a ele =)

Qualquer problema é só falar.

Abraço

Olá André, tudo blz!

olha só alterei o .env mas continua salvando no mesmo diretório.

Tem algo por minha versão ser a 5.0?

Tenta no bootstrap/app.php, algo como:

# base_path() -> devolve a raiz do projeto
$path_storage = base_path() . "seu/diretorio/aqui";

$app->useStoragePath($path_storage);

Tentei devolvei esse erro:

ErrorException in Filesystem.php line 75:
file_put_contents(/00d4ae7e25b4400922dbe33acd37d9d0): failed to open stream: Permission denied

O arquivo está salvando na pasta e mandando o link de acesso a imagem na tabela do usuário, fica assim na tabela:

Comprovante:

/home/ondesign/laravel/storage/imagem-comprovante/comprovante_79.png

Essa pasta /home/ondesign seria raiz do FTP é está inacessível, por isso gostaria que os arquivos fossem salvos em uma pasta pública.

Na view:

        <td><img src="{!! url($u->comprovante) !!}"></td>

No html da view.

<img src="http://www.ondesigner.com.br/senge/home/ondesign/laravel/storage/imagem-comprovante/comprovante_75.png">

Você pode tentar utilizar o diretorio da pasta public. Ela, normalmente, é publica no sistema operacional. A função:

public_path('/imagem-photo/avatar_'.$usuario->id.'.'.$extensao);

Retorna uma string com o diretorio da pasta public contacatenado com /imagem-photo/avatar_usuarioId.extensao =)

Amigo, retornou esse erro:

Precisava que fosse para o diretório do public_html

ErrorException in Filesystem.php line 146:
rename(/tmp/phpRP0ZX3,/home/ondesign/laravel/public//imagem-photo/avatar_87.jpg): No such file or directory

Acredito que um possivel problema esteja na / a mais aqui na url:

/tmp/phpRP0ZX3,/home/ondesign/laravel/public//imagem-photo/avatar_87.jpg

Tenta remover a primeira / no caminho:

public_path('imagem-photo/avatar_'.$usuario->id.'.'.$extensao);

Está dando erro, só para entender, como fiz a instalação, peguei na web kkkk.

/laravel <- pasta instalação

/public_html/senge/ <-pasta onde esta o public do laravel.

Será que melhor colocar a pasta do laravel no public? Não tem problema de segurança?

rename(/tmp/phprjCaQY,/home/ondesign/laravel/public/imagem-photo/avatar_88.jpg): No such file or directory

Alguém poderia dar um help? Ainda estou com dificuldades em recuperar a imagem salva no diretório.

O arquivo está salvando na pasta e mandando o link de acesso a imagem na tabela do usuário, fica assim na tabela:

Comprovante:

/home/ondesign/laravel/storage/imagem-comprovante/comprovante_79.png

Essa pasta /home/ondesign seria raiz do FTP é está inacessível, por isso gostaria que os arquivos fossem salvos em uma pasta pública.

Na view:

No html da view.

Oi Leandro, tudo bom?

Se a pasta Home está sem permissão, você pode voltar mais diretorios. Cada ../ no seu diretorio volta um. Se você quer voltar antes da pasta Home, você precisaria voltar umas 3 vezes o diretorio. Algo como:

base_path()."../../../"

Já que base_path é o diretorio /home/ondesign/laravel/, isso faria você voltar antes da pasta home.

Entretanto, é estranho você não ter essa permissão. Seria interessante você ver com alguém uma forma de liberar essa pasta pelo menos para alteração.

Adicionar a pasta do laravel no ambiente publico pode ser um poblema dependendo de onde você hospeda seu sistema. O ideal mesmo é você ter acesso ao ssh desse servidor para poder alterar as permissoes dos ambientes publicos do framework apenas.

Perdão pela demora no retorno.

Abraço =)