ao pessoal que está iniciando uma instalação do CAU, é bom atentar para os nomes dos diretórios. Se colocar o sistema dentro de um diretório raiz com o nome "cau, o mesmo não irá funcionar corretamente. O motivo é o seguinte:
em várias parte do código existem includes condicionais, o problema é que a condição está diretamente relacionado ao nome do diretório, usando o $_SERVER["SCRIPT_FILENAME"], "O caminho absoluto do script atualmente em execução.". O teste é feito com a função strpos, " Encontra a posição da primeira ocorrência de uma string.". Vejam no arquivo class_parametro.php:
if(strpos($_SERVER["SCRIPT_FILENAME"], "cau/")){ require_once "../gestaoti/include/PHP/class/class.database.postgres.php"; }else{ require_once "include/PHP/class/class.database.postgres.php"; }
esse arquivo é usado tanto pelo index.php no diretório cau quanto pelo index.php no gestaoti.
no meu ambiente (diretorio root = /var/www/html/vagrant_web/sisGestaoServico/web) o $_SERVER["SCRIPT_FILENAME"] retorna /var/www/html/vagrant_web/sisGestaoServico/web/cau/index.php quando acesso o cau e /var/www/html/vagrant_web/sisGestaoServico/web/gestaoti/index.php quando acesso o gestaoti. No acesso ao cau a função strpos($_SERVER["SCRIPT_FILENAME"], "cau/") retorna 47 e no acesso ao gestaoti retorna false.
Assim, no meu ambiente, se estou no diretório cau, função retorna 47, o if vai ser verdadeiro e o include vai ser require_once "../gestaoti/include/PHP/class/class.database.postgres.php";, mas se estou no gestaoti a função strpos vai retorna false e o include vai ser require_once "include/PHP/class/class.database.postgres.php";
com essa nomeação dos diretórios vai ocorrer tudo bem, mas se o meu diretório raiz tivesse algum diretório quem contenha a palavra "cau" (ex.: /var/www/html/cau_web/sisGestaoServico/web) o if vai dah sempre verdadeiro e eu teria problema quando estivesse no index.php do gentaoti ou em outro que, em gestaoti, precise do class_parametro.php. Um erro tb ocorreria se eu mudasse o nome do diretorio "cau", para um que não contenha a palavra "cau", ex.: sistema_ti. Nesse caso o if ai dah sempre falso e eu teria problema no acesso pelo diretório cau.
ATENTEM PARA ISSO!
- existem varios ifs condicionais que tem como base o nome do diretório, assim procurem seguir os mesmo nomes do manual, ou não usem o nome cau nos diretórios que não seja o próprio cau
- na arvore dos diretórios, cau e gestaoti tem que está no mesmo nível
penso que além desse inconveniente, existe outro argumento que me leva a propor refatorar o código, estou vendo muitos includes circulares, tipo um arquivo inclui x e y, mas x tb inclui y, ou seja, y está sendo incluindo 2 vezes. para além disso, o recurso de auto_load do php é um ótima solução.
até
Autor: José Max Deivys Alves de Moura Moura
1Um comentário