Pergunta

Posso definir o caminho de inclusão do PHP no php.ini:

include_path = /path/to/site/includes/

Mas outros sites são afetados, então isso não é bom.

Posso definir o PHP include no início de cada arquivo:

$path = '/path/to/site/includes/';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

Mas isso parece uma má prática e confunde as coisas.

Então posso incluir isso e incluí-lo em cada arquivo:

include 'includes/config.php';

ou

include '../includes/config.php';

Isso é o que estou fazendo agora, mas o caminho de inclusão de config.php mudará dependendo do que o inclui.

Existe uma maneira melhor?Isso importa?

Foi útil?

Solução

Se você estiver usando o Apache como servidor web, poderá substituir (se permitir) as configurações usando .htaccess arquivos.Ver o manual do PHP para detalhes.

Basicamente você coloca um arquivo chamado .htaccess na raiz do seu site, que contém alguns PHP ini valores.Desde que você tenha configurado o Apache para permitir substituições, este site usará todos os valores em sua configuração do PHP, + os valores que você especificar no .htaccess arquivo.

Pode ser usado apenas com PHP_INI_ALL e PHP_INI_PERDIR diretivas de tipo

conforme indicado na página que vinculei.Se você clicar na listagem completa, verá que o caminho de inclusão é um PHP_INI_ALL directiva.

Outras dicas

Erik Van Brakel deu, IMHO, uma das melhores respostas.

Além disso, se você estiver usando hosts Apache e virtuais, poderá configurar inclusões diretamente neles.Usando este método, você não precisará se lembrar de deixar os comandos php_admin em seu .htaccess.

Use um php.ini arquivo no site raiz, se sua configuração usar PHP como CGI (o caso mais frequente em hosts compartilhados) com a mesma sintaxe do servidor php.ini;Coloque dentro .htaccess se você tiver PHP como módulo do Apache (faça um phpinfo() se não tiver certeza):

php_value include_path "wherever"

Observe que por pasta php.ini does não afeta subpastas.

Por que você acha que anexar para incluir o caminho é uma má prática?

Este código próximo ao topo do script raiz não deveria ser tão ruim assim...

$path = '/path/to/site/includes/';
set_include_path($path . PATH_SEPARATOR . get_include_path());

IMHO, a principal vantagem é que é portátil e compatível não apenas com Apache

EDITAR:Eu vi uma desvantagem deste método:pequeno impacto no desempenho.ver http://www.geeksengine.com/article/php-include-path.html

Dependendo de como o seu host está configurado, você pode ter permissão para colocar um php.ini arquivo na raiz do seu diretório inicial com diretivas de configuração extras.

Sua aplicação deve ter um arquivo de configuração escrito em PHP.Em seguida, inclua isso com uma página relativa em cada página do programa.Esse arquivo de configuração terá uma variável para o caminho para o diretório de inclusão, diretório de modelos, diretório de imagens, etc.

Você pode definir include_path no seu arquivo php.ini também.Eu sou um cara de Perl, então espero poder carregar inclusões e ter include faça a coisa Certa.Eu tenho todos os meus include em um diretório específico, que é adicionado ao include_path.Eu posso fazer coisas como

require_once "ClassName.php";

Não preciso me preocupar com caminhos relativos ou localizações de arquivos.

Eu também escrevi o meu próprio CustomRequire fazer coisas como

function CustomRequire ($file) {
    if(defined('MYINCLUDEPATH')) {
        require_once MYINCLUDEPATH . "/$file";
    } else {
        require_once $file;
    }
}

Dessa forma, posso alterar a forma como faço as inclusões posteriormente.Claro, você ainda precisa encontrar uma maneira de incluir seu código de inclusão :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top