Symlink ou link simbólico não exibe arquivo

Iniciado por maurov, 15 de Fevereiro de 2017, 16:45

tópico anterior - próximo tópico

zekkerj

Enquanto isso.. você promete que não ficará com raiva de mim após responder à minha pergunta?

Você lembrou de ativar a opção "FollowSymLinks" na configuração do seu Apache?  :-[ ::)
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

maurov

#16
hehe, nem sabia da existência do FollowSymLinks.
Em qual arquivo d configuração ele fica?

Parece ser uma diretiva que pod ser colocada em algum lugar, tipo:

<Directory "/usr/local/httpd/htdocs">
  Options Indexes FollowSymLinks
</Directory>

Mas onde fica, ou onde coloco isso? Em usr/local não tem httpd.

Tem aquelas pastas com nomes parecidos, tipo /etc/apache2/sites-enabled/000-default. Não sei se é ali, ou em qual delas.

zekkerj

Há algum arquivo em /etc/apache2/sites-enabled/ ?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

maurov

Ali tem um 000-defaul.conf que é um link para /sites-available/000-default.conf
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

zekkerj

É nesse arquivo que tem que ser incluído. Ajuste a diretiva "Directory" pra apontar pro "DocumentRoot".
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

maurov

#20
Desculpe o desconhecimento de causa, mas onde exatamente?

Incluir no
/etc/apache2/sites-enabled/000-default.conf ou no
/etc/apache2/sites-available/000-default.conf ?

as linhas:

<Directory "/var/www/html">
  Options Indexes FollowSymLinks
</Directory>

?

zekkerj

Qualquer lugar depois da diretiva "<VirtualHost ...>" e antes de "</VirtualHost>".
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

maurov

#22
 :-[
Coloquei com sudo nano

<Directory "/var/www/html">
  Options Indexes FollowSymLinks
</Directory>

em

/etc/apache2/sites-available/000-default.conf

que é o arquivo mesmo,  não é link.

Forbidden
You don't have permission to access /produtos/foto.png

Será qem alguma opção -R recursiva para incluir subdiretórios?

zekkerj

Reiniciou o apache após a alteraçao? "sudo apache2ctl graceful"

Acompanhe os logs do apache (/var/log/apache2/access_log e /var/log/apache2/error_log) pra ver o resultado dos acessos.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

maurov

Access log:
192.168.1.200 - - [16/Feb/2017:17:36:07 -0200] "GET /produtos/10/10.png HTTP/1.1" 403 522 "http://192.168.1.200/produtos.php" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0"

Deixei como está na real. Nas trocas de mensagens anteriores apenas simplifiquei para foto.png

Error.log
[Thu Feb 16 17:36:07.306785 2017] [:error] [pid 1289] [client 192.168.1.200:47392] PHP Notice:  Undefined index: exist in /var/www/html/produtos.php on line 171, referer: http://192.168.1.200/produtos.php
[Thu Feb 16 17:36:07.360695 2017] [core:error] [pid 1289] [client 192.168.1.200:47392] AH00037: Symbolic link not allowed or link target not accessible: /var/www/html/produtos, referer: http://192.168.1.200/produtos.php


Tinha reiniciado a máquina inteira antes disso

zekkerj

... devia ter te pedido os logs desde o início. Mea culpa.
Estava com o AppArmor na cabeça, por conta de outro caso que estou acompanhando.

O erro é bem claro.

Confirme que todo o caminho real do arquivo tenha direito de execução pública. Na dúvida, o comando "namei -om <caminho completo do arquivo>" mostra todas as permissões no caminho.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

maurov

Não há uma opção que englobe os subdiretórios?
$ namei -om /var/www/html/produtos
f: /var/www/html/produtos
drwxr-xr-x root  root  /
drwxr-xr-x root  root  var
drwxr-xr-x root  root  www
drwxr-xr-x mauro mauro html
lrwxrwxrwx mauro mauro produtos -> /media/mauro/89e802a4-ed01-4151-a7bd-9d9f36a77b89/produtos
   drwxr-xr-x root  root  /
   drwxr-xr-x root  root  media
   drwxr-x--- root  root  mauro
                          89e802a4-ed01-4151-a7bd-9d9f36a77b89 - No such file or directory


Se não, precisaria montar uma diretiva para cada subpasta que está dentro de produtos, por exemplo. E podem ser centenas

zekkerj

OOOOOpa. Que erro de "No such file or directory" é esse?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

maurov

Boa pergunta.
Para deixar tudo funcionando, bastaria pegar todos os dados que estão no diretório para onde o link aponta e colar dentro da pasta /var/www/html. Vai funcionar.

Mas mantenho a conversa neste tópico para aprender mesmo.

zekkerj

Esse HD é fixo? Se for, é melhor você fixar o ponto de montagem dele também.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D