PHP include não permite ../?

1

Instalado o apache e o PHP em um novo servidor. Usando include ("blah.php"); funciona bem, mas não funciona quando tento incluir no diretório por trás, include ("../blah.php");

PHP.ini tem os dois: allow_url_fopen = ativado allow_url_include = Ativado

Alguém sabe o que está causando isso?

    
por DRKM 26.10.2010 / 16:30

5 respostas

3

De acordo com a documentação

If a path is defined — whether absolute (starting with a drive letter or \ on Windows, or / on Unix/Linux systems) or relative to the current directory (starting with . or ..) — the include_path will be ignored altogether. For example, if a filename begins with ../, the parser will look in the parent directory to find the requested file.

Quando você usa include ("blah.php"); PHP, o include_path , mas se você usar um especificador relativo , como . ou .. , o PHP constrói um caminho relativo a onde ele está, ou seja o script atualmente em execução.

    
por 15.01.2011 / 04:10
0

É uma instalação do Windows? Se sim, você está usando o separador de diretório errado. Você pode evitar tais discrepâncias usando a constante DIRECTORY_SEPARATOR:

include('..'.DIRECTORY_SEPARATOR.'blah.php');

Você também pode usar caminhos absolutos:

include dirname(realpath(__FILE__)).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'blah.php'
    
por 26.10.2010 / 17:08
0

Tente incluir o caminho completo para o arquivo (por exemplo, / path / to / your / file) para ver se é um problema de contexto. Talvez você esteja no diretório errado. is_readable () não é a melhor função, tente usar file_exists para verificar se o arquivo está lá primeiro. Verifique também as permissões de arquivo apenas no caso.

    
por 27.10.2010 / 23:22
0

Tente usar algo assim:

include(dirname(__FILE__).'/../file.php')

O problema com includes relativos é se você não estiver no diretório de trabalho que espera quando executar o arquivo, eles falharão. Lembre-se, eles são relativos ao getcwd (), não ao local do arquivo. Usar o comando dirname ( FILE ) significa que eles terminam em relação à sua localização real no disco.

Note que se você estiver usando 5.3.x ou acima, você pode usar DIR ao invés de dirname ( FILE )

    
por 15.01.2011 / 05:18
0

Verifique seus logs (ou coloque error_reporting (E_ALL)). Se um arquivo estiver ilegível ou não estiver carregado, você verá uma entrada de registro com uma explicação. Cole aqui se isso não ajudar você.

    
por 26.10.2010 / 16:52