Por que um arquivo de inclusão do PHP não é encontrado no Linux Apache através de um symlink?

0

Em /home/richard/public_html/tinytest.php:

<?php
// Note: reuse is a symlink to /home/r/reuse
require("reuse/Test.php");
?>

O link simbólico / home / richard / public_html / reuse foi feito assim:

<?php
$User="richard";
$R=symlink("/home/r/reuse","/home/$User/public_html/reuse");
?>

Ativei o relatório de erros do PHP no .htaccess e obtive os seguintes erros do tinytest.php:

Warning: require(reuse/Test.php): failed to open stream: No such file or directory in /home/richard/public_html/tinytest.php on line 3

Warning: require(reuse/Test.php): failed to open stream: No such file or directory in /home/richard/public_html/tinytest.php on line 3

Fatal error: require(): Failed opening required 'reuse/Test.php' (include_path='/home/r') in /home/richard/public_html/tinytest.php on line 3

Eu também tentei testar no endereço do navegador, usando https://example.com/reuse/Test.php e recebi este erro:

Forbidden

You don't have permission to access /reuse/Test.php on this server.

/home/r/reuse/Test.php contém:

This is Test.php in reuse

Eu olhei as permissões em todos os arquivos relevantes e eles eram rw-r - r-- ou melhor.

O proprietário da maioria dos arquivos era "richard". O proprietário de / e / home era "root".

Motivação: / home / r / reuse é um diretório de PHP comum que inclui arquivos usados por vários dos meus sites. Eu coloco em / home porque essa é a raiz comum de todos os hosts virtuais no servidor de produção Linux.

    
por David Spector 15.09.2018 / 23:27

0 respostas