Acessar arquivos fora da pasta raiz do site

1,187 views
Skip to first unread message

Michael Colla

unread,
Mar 5, 2015, 2:08:59 PM3/5/15
to php-b...@googlegroups.com
Dae galera, blz?

Alguem já precisou acessar arquivos fora da pasta raiz do site?
Preciso acessar alguns arquivos como imagens (png, jpg) e documentos (doc, docx, pdf e txt), que estão no mesmo nível da pasta raiz.

Não to encontrando maneira de conseguir, alguém ja passou por isso e tem uma solução?
Valeu!

Carlos Felipe Ribeiro Maradeia

unread,
Mar 5, 2015, 2:14:28 PM3/5/15
to php-b...@googlegroups.com
Vc pode configurar um diretório virtual apontando pra essa pasta que está fora da pasta do seu site.


--
Você recebeu essa mensagem porque está inscrito no grupo "php-brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para php-brasil+...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para php-b...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/php-brasil.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Carlos Felipe Ribeiro Maradeia
Analista de sistemas, desenvolvedor web e curioso.
Visite http://www.carlos.felipe.nom.br

Luciano da Silva Martins

unread,
Mar 5, 2015, 2:15:45 PM3/5/15
to php-b...@googlegroups.com
coloque como está fazendo pro pessoal dar dicas, axo q num está dificil naum te ajudar!

zero fernandes

unread,
Mar 6, 2015, 1:08:13 PM3/6/15
to php-b...@googlegroups.com


Em quinta-feira, 5 de março de 2015 16:08:59 UTC-3, Michael Colla escreveu:
Se você está pensando em ter acesso direto à região do servidor, anterior à "public_html" tenha cuidado, pois propositadamente esse acesso é dificultado por razões de segurança. Entretanto, alojar nessa região arquivos que contenham senhas e parâmetros de conexões isso é, até, recomendável.
Tal acesso só deve ser feito através de comandos "include" ou "require", justamente por serem "transparentes" aos usuários comuns.
Se o problema é evitar "link direto" para os arquivos os quais você menciona, ativar a proteção hot-link resolve. Por outro motivo, não vejo necessidade de armazená-los nessa área.

zero fernandes

unread,
Mar 6, 2015, 1:08:13 PM3/6/15
to php-b...@googlegroups.com


Em quinta-feira, 5 de março de 2015 16:08:59 UTC-3, Michael Colla escreveu:

Se você não se preocupa com a segurança... qualquer link relativo pode ser usado. 

Jean Rafael Tardem Delefrati

unread,
Mar 6, 2015, 9:04:48 PM3/6/15
to php-b...@googlegroups.com
Por questões de segurança eu prefiro criar meus frameworks fora da public_html, assim eu evito acesso direto aos objetos do meu MVC através de urls.  

A única questão é que você precisa ter acesso a estes arquivos com o usuário do apache (ou de outro servidor) e permissão de leitura.

--

Erick Engelhardt

unread,
Mar 7, 2015, 1:39:03 AM3/7/15
to php-b...@googlegroups.com
algo assim resolve seu problema. estude sobre headers. com a config abaixo dá para fazer resume do arquivo baixado.


header("Accept-Ranges: bytes");
header('Pragma: public');
header('Cache-Control: max-age=86400');
header('Expires: '. gmdate('D, d M Y H:i:s \G\M\T', time() + 86400));
header("Content-Type: ".$mime );
header("Content-Length: ".$size);
echo readfile( $path );

Erick Engelhardt 
21 99463-1994


jmfrolim

unread,
Mar 7, 2015, 12:58:03 PM3/7/15
to php-b...@googlegroups.com
Boa noite !
Como assim acessar? Eles estão publicados, não estão em no diretorio publico? Não ficou muito claro o cenario e qual seria a finalidade!
Mas quando preciso acessar algo esterno  uso cURL segue links:


Espero ter ajudado!

Michael Colla

unread,
Mar 10, 2015, 1:14:42 PM3/10/15
to php-b...@googlegroups.com
Então, no caso o servidor é um Windows Server 2008 com IIS.
E dentro dentro da pasta Inetpub, tenho estas 2 pastas
- sistema
- sistema_anexos

O envio, já está ok, como comentei, na hora de ler estes arquivos, é que não está dando certo. Ai o que pensei, no momento em que o PHP copiar (com o move_uploaded_file) da pasta temp pro diretorio sistema_anexos, fazer uma cópia do arquivo, para dentro da pasta uploads, que seria uma pasta temporária, dentro da raiz do sistema, que seria esvaziada todo dia a meia-noite. Encontrei algo na web sobre o exec, então pensei em usar o xcopy do DOS. A copia seria com o bloco:
if(move_uploaded_file($temp, $caminho.$nomeAleatorio)){
exec('xcopy D:\InetPub\sistema_anexos\$nomeAleatorio E:\InetPub\sistema\uploads\ /c/i'); 
} else {
$erro = 'Não foi possível anexar o arquivo';
}

O estranho é que se eu uso um caminho fixo, da certo copia, ex:
       exec('xcopy D:\InetPub\sistema_anexos\teste.pdf E:\InetPub\sistema\uploads\ /c/i'); 
Agora se eu usar o nome da variavel no lugar do nome do arquivo não da
       exec('xcopy D:\InetPub\sistema_anexos\$nomeAleatorio E:\InetPub\sistema\uploads\ /c/i'); 

Não sei se esta é a melhor saída, mas foi a q deu mais certo ate o momento. Duro é isso, que por mais q a pasta uploads seja limpa todo dia, vai ter arquivos duplicados no servidor. Por isso q eu queria acessar diretamente o arquivo, pra não precisar ficar copiando de uma pasta pra outra.


Carlos Felipe Ribeiro Maradeia

unread,
Mar 10, 2015, 1:26:32 PM3/10/15
to php-b...@googlegroups.com
a variavel não existe dentro do EXEC pois ali é o comando do prompt.

--
Você recebeu essa mensagem porque está inscrito no grupo "php-brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para php-brasil+...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para php-b...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/php-brasil.
Para mais opções, acesse https://groups.google.com/d/optout.



--

Erick Engelhardt

unread,
Mar 10, 2015, 1:35:02 PM3/10/15
to php-b...@googlegroups.com
exec('xcopy D:\InetPub\sistema_anexos\'.$nomeAleatorio.' E:\InetPub\sistema\uploads\ /c/i'); 

Erick Engelhardt 
21 99463-1994


Michael Colla

unread,
Mar 13, 2015, 3:54:30 PM3/13/15
to php-b...@googlegroups.com
Então, consegui fazer a copia usando o xcopy, e so deu certo concatenando as variaveis e escapando as barras, ficou assim:
exec('xcopy E:\InetPub\sistema_anexos\\'.$nomeAleatorio.' E:\InetPub\sistema\uploads\ /c/i');

Vou tentar agora seguir a dica do Carlos Felipe, diretorio virtual, pois se der pra acessar esses arquivos diretamente, sem precisar ficar copiando é melhor né!

Erick Engelhardt

unread,
Mar 13, 2015, 4:00:32 PM3/13/15
to php-b...@googlegroups.com
Michael, quer uma dica valiosa? estude o email que eu mandei dia 7 de março. A variável $path pode ser relacionada diretamente para  E:\InetPub\sistema_anexos\anexo.docx sem precisar ficar copiando arquivo. quandovocê tiver diversos acessos simultâneos terá um problema de infra para administrar.

Erick Engelhardt 
21 99463-1994



--
Reply all
Reply to author
Forward
0 new messages