Melhoria #410
Substituir ocorrências de __DIR__
100%
Descrição
Em todo o código trocar a constante "__DIR__" por:
dirname( __FILE__ )
A constante "__DIR__" segue o caminho de inclusão de arquivos por outros arquivos, e pode gerar inconsistência, caso ocorram mais de dois níveis de inclusão. Já a constante "__FILE__" fornece o caminho real do sistema de arquivos.
Revisões associadas
Issue #410 - Substituicao da constante DIR por dirname(FILE)
Histórico
#1 Atualizado por Mauricio Luiz Viani há quase 6 anos
- Descrição atualizado(a) (diff)
#2 Atualizado por Mauricio Luiz Viani há quase 6 anos
- % Terminado alterado de 0 para 80
- Situação alterado de Nova para Resolvida
#3 Atualizado por Mauricio Luiz Viani há quase 6 anos
- % Terminado alterado de 80 para 100
- Situação alterado de Resolvida para Fechada
#4 Atualizado por Mauricio Luiz Viani há mais de 1 ano
Chegamos a uma conclusão da causa que levou aos erros de inclusão de classe no ambiente do Expresso, como neste exemplo:
"PHP Fatal error: Cannot redeclare class Singleton in /var/www/expresso/phpgwapi/inc/class.singleton.inc.php on line 3 "
Investigamos através de debug no servidor 10.15.202.54, componente do farmweb, e descobrimos tratar-se de falha na atualização do cache de arquivos "opcache" que vem habilitado por padrão na instalação apache/php
Ocorre em ambientes onde residem, em um mesmo servidor, sites muito idênticos na estrutura de diretórios e arquivos, como é o caso do Expresso.
Localizado um relato no bugtrack do Php:
https://bugs.php.net/bug.php?id=69090
Simulamos em desenvolvimento e comprovamos o bug semelhante ao que ocorre em produção.
Duas abordagens podem ser tomadas para solução:
1) Separação dos sites em servidores diferentes;
2) Desligar o opcache:
"opcache.optimization_level=0"
Incluir a chave no arquivo php.ini da instalação.