PHP - Ler conteúdo de pasta em unidade externa

1. PHP - Ler conteúdo de pasta em unidade externa

JOSÉ ANTONIO RAMALHO
jasramalho

(usa Ubuntu)

Enviado em 21/10/2024 - 13:31h

Olá,
Através do código PHP abaixo, estou tentando ler os arquivos da pasta BACKUP presente no HD externo identificado como BACKUP-3, sem sucesso.

Mensagem de erro:
Warning: opendir(/media/jose/BACKUP-3/BACKUP): failed to open dir: Permissão negada in /opt/lampp/htdocs/pastas/arquivos.php on line 7

Código PHP:

<?php
$dir_path = "/media/jose/BACKUP-3/BACKUP";
if(opendir($dir_path))
{
$files = scandir($dir_path);
echo "<span id='call'>ARQUIVOS</span></br>";
for($i = 0; $i < count($files); $i++)
{
if($files[$i] != '.' && $files[$i] != '..')
{
echo "<a href='$dir_path/$files[$i]' target='blank'>$files[$i]</a></br>";
}
}
}
?>

Se eu alterar, por exemplo, para a pasta $dir_path = "/opt/lampp/htdocs/ , o código me retorna o conteúdo perfeitamente.

Sobre as permissões, aqui está o retorno do comndo ls - l

jose@jose-Inspiron-7520:/media/jose/BACKUP-3/BACKUP$ ls -l
total 116
drwxrwxrwx 1 jose jose 4096 out 4 20:26 Fotos-2002

Após bastante consulta na internet sobre o assunto, resolvi buscar a ajuda de vocês, na condição de iniciante tanto no PHP quanto no LINUX. Obrigado.




  


2. Re: PHP - Ler conteúdo de pasta em unidade externa

Buckminster
Buckminster

(usa Debian)

Enviado em 21/10/2024 - 15:13h

1 - Execute:
$ ps aux | grep httpd

para ver o usuário do servidor web.
No caso, se você não mudou será daemon por padrão.

No meu caso deu uma linha:
maseque 2019 0.0 0.0 6348 2212 pts/0 S+ 15:08 0:00 grep httpd

Eu não tenho o lampp, para você talvez dê várias linhas na saída do comando acima, então veja aí qual teu usuário, caso deixou no padrão será daemon na maioria das linhas.

Daí execute:

$ sudo chown -R daemon /opt/lampp/htdocs/nome_da_pasta_do_projeto/ <<< aqui acredito que seja BACKUP-3 ou .../jose/BACKUP-3 ou /opt/lampp/htdocs/media/jose/BACKUP-3/BACKUP

No lugar de daemon tu coloca o que aparecer.

2 - Outra solução seria dar permissão recursiva 777 para todo o caminho, mas não é aconselhável por uma questão de segurança, então siga o primeiro método e mude o proprietário da pasta do teu projeto que é mais elegante e é aquilo considerado "boas práticas".

3 - Alternativamente:
$ sudo chmod -R 755 /opt/lampp/htdocs/media/jose/BACKUP-3/BACKUP
que dará permissões 755 que geralmente são as permissões utilizadas em servidores web.
Tanto este quanto o primeiro são boas opções.

Apenas uma explicação:
"Sobre as permissões, aqui está o retorno do comndo ls - l

jose@jose-Inspiron-7520:/media/jose/BACKUP-3/BACKUP$ ls -l
total 116
drwxrwxrwx 1 jose jose 4096 out 4 20:26 Fotos-2002"

No comando ls -l retornou somente as permissões do diretório Fotos-2002.
Para ver as permissões do diretório BACKUP teria de dar um cd .. para voltar um nível e daí ls -l.


_________________________________________________________
Always listen the Buck!
Enquanto o cursor estiver pulsando, há vida!


3. Re: PHP - Ler conteúdo de pasta em unidade externa

JOSÉ ANTONIO RAMALHO
jasramalho

(usa Ubuntu)

Enviado em 21/10/2024 - 17:26h


Obrigado pela resposta. Como iniciante, mexi tanto nos permissionamentos que acabei optando por reinstalar o Linux para em seguida retomar meu projeto. Alcançado o estágio da dúvida inicial e não conseguindo superá-la, volto a lhe incomodar. Mais uma vez, grato por sua atenção.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts