ATENÇÃO!!! Essa instalação está vulnerável: edite o arquivo i3geo/ms_configura.php e altere o login e senha da variável i3geomaster";
}
if(empty($_POST["senha"]) || empty($_POST["usuario"])){
formularioLoginMaster("testainstal.php");
//opcoes de criacao de pastas
if (strtoupper(substr(PHP_OS, 0, 3) != 'WIN')){
echo "";
}
exit;
}
else{
$continua = verificaMaster($_POST["usuario"],$_POST["senha"],$i3geomaster);
if($continua == false){
echo "Usuário não registrado em i3geo/ms_configura.php na variável i3geomaster";
exit;
}
}
error_reporting(0);
//echo "
\n";
echo "Observação: se você estiver usando Linux e a biblioteca CAIRO estiver instalada corretamente no Mapserver, edite os arquivos i3geo/aplicmap/geral1fedorav6.map e geral1debianv6.map para remover os comentários do OUTPUTFORMAT que utiliza SVG com o drive Cairo
\n";
echo "
TESTE DE INSTALAÇÃO DO i3Geo
\n";
include ("versao.php");
echo "
$mensagemInicia
\n";
echo "
Para mais informações sobre a instalação de pacotes complementares, como o SAIKU e ferramentas que precisam de softwares específicos, veja o link http://moodle.gvsig-training.com/course/view.php?id=11
\n";
//ip
$ip = "UNKNOWN";
if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR");
else $ip = "UNKNOWN";
echo "
Seu endereço IP: ".$ip."
\n";
echo "
Sistema operacional: ".PHP_OS."
\n";
echo "
PHP (a versão deve ser a 5x): ".phpversion()."
\n";
include_once("classesphp/carrega_ext.php");
include_once("classesphp/funcoes_gerais.php");
$versao = versao();
$versao = $versao["principal"];
$exts = get_loaded_extensions();
echo "
MapServer:
";
echo ms_GetVersion();
echo "
";
echo "Array que armazena os parâmetros da versão:
";
var_dump (versao())."
";
echo "
";
echo "Configuração da projeção default: (saiba mais)
";
if(!isset($i3GeoProjDefault)){
echo "A variável de configuração i3GeoProjDefault não existe no ms_configura.php. Será utilizada a projeção 4326
";
}
echo "";
var_dump (pegaProjecaoDefault())."
";
echo "
";
if(!function_exists("ms_GetVersion"))
{
echo "PARECE QUE O MAPSERVER NAO ESTA INSTALADO!!!
";
}
if (get_cfg_var("safe_mode") == 1){
echo "Problema: safe_mode no php.ini deveria estar como 'Off'. O i3Geo não irá funcionar!!!
";
}
echo "
As seguintes letras devem aparecer corretamente acentuadas: ";
echo "
çÇãâáÁóÓ";
echo "
Caso contrário, verifique os parâmetros de configuração do Apache AddDefaultCharset (httpd.conf) e default_charset (php.ini) (default_charset='' no php.ini geralmente funciona).";
//executa as opcoes linux definidas no formulario
if(!empty($_POST["criaPastaMstmp"]) && $_POST["criaPastaMstmp"] == "on"){
echo "
Criando a pasta $dir_tmp \n";
if(!file_exists($dir_tmp)){
@mkdir ($dir_tmp,0777);
}
else{
chmod($dir_tmp,0777);
}
if(!file_exists($dir_tmp)){
echo "Arquivo $dir_tmp não pode ser criado\n";
}
else{
echo "...OK\n";
}
}
if(!empty($_POST["criaPastaMstmp"]) && $_POST["criaLink"] == "on"){
$d = dirname(__FILE__)."/../ms_tmp";
echo "
Criando o link simbólico $d \n";
if(!file_exists($d)){
@symlink($dir_tmp,$d);
}
else{
chmod($d,0777);
}
if(!file_exists("/var/www/ms_tmp")){
echo "Link $d não pode ser criado\n";
}
else{
echo "...OK\n";
}
}
if(!empty($_POST["criaPastaMstmp"]) && $_POST["permPastaI3geo"] == "on"){
echo "
Alterando permissões i3geo i3geo/temas i3geo/admin i3geo/admin/admin.db\n";
if(file_exists($locaplic)){
chmod($locaplic,0777);
chmod($locaplic."/temas",0777);
chmod($locaplic."/admin",0777);
chmod($locaplic."/admin/admin.db",0777);
echo "...OK\n";
}
}
echo "
Extensões PHP:
";
if (!extension_loaded("curl")){
echo "Problema: não está instalado a curl que pode afetar algumas funcionalidades do i3Geo
";
}
if (!extension_loaded("json")){
echo "Problema: não está instalado a json
";
}
if (!extension_loaded("libxml")){
echo "Problema: não está instalado a libxml
";
}
if (!extension_loaded( "PDO")){
echo "Problema: não está instalado a PDO
";
}
if (!extension_loaded( "pdo_sqlite")){
echo "Problema: não está instalado a pdo_sqlite
";
}
if (!extension_loaded( "SQLite") && !extension_loaded( "sqlite3")){
echo "Problema: não está instalado a SQLite
";
}
if (!extension_loaded( "SimpleXML")){
echo "Problema: não está instalado a SimpleXML
";
}
if (!extension_loaded( "dom")){
echo "Problema: não está instalado a dom
";
}
if (!extension_loaded( "xml")){
echo "Problema: não está instalado a xml
";
}
if (!extension_loaded( "zlib")){
echo "Problema: não está instalado a zlib
";
}
if (!extension_loaded( "gd")){
echo "Problema: não está instalado a gd
";
}
if (!extension_loaded( "mbstring")){
echo "Obs: não está instalado a mbstring
";
}
if (!extension_loaded( "yaml")){
echo "Obs: não está instalado a YAML. A ferramenta de melhor traçado raster precisa dessa extensão.
";
}
var_dump( $exts );
echo "
Existe o ms_configura.php?
";
if(file_exists("ms_configura.php")) echo "Sim\n"; else {echo "Nao";saindo(" ms_configura não encontrado");}
echo "Incluindo...\n
";
include ("ms_configura.php");
echo "
Mensagem de inicialização: $mensagemInicia \n";
echo "
dir_tmp = $dir_tmp \n";
echo "
locmapserv = $locmapserv \n";
echo "
Este php está em ".getcwd()."\n";
echo "
O diretorio de arquivos SESSION temporário é: ".session_save_path()."\n";
if($conexaoadmin == "" && file_exists($locaplic."/admin/admin.db")){
echo "
As permissões do banco de dados $locaplic/admin/admin.db são (se o arquivo estiver bloqueado, o sistema de administração não irá funcionar):
";
echo permissoesarquivo($locaplic."/admin/admin.db");
}
include_once("admin/php/conexao.php");
echo "
Verificando banco de dados de administração...\n";
echo "";
//TODO Verificar ao fechar versao - verificar tabelas
$tabelas = array(
"i3geoadmin_sistemasf"=>"abrir_funcao,h_funcao,id_funcao,id_sistema,nome_funcao,perfil_funcao,w_funcao",
"i3geoadmin_tags"=>"id_tag,nome",
"i3geoadmin_perfis"=>"id_perfil,perfil",
"i3geoadmin_atlasp"=>"ordem_prancha,desc_prancha,h_prancha,icone_prancha,id_atlas,id_prancha,link_prancha,mapext_prancha,titulo_prancha,w_prancha",
"i3geoadmin_atlast"=>"ordem_tema,codigo_tema,id_prancha,id_tema,ligado_tema",
"i3geoadmin_mapas"=>"publicado_mapa,ordem_mapa,perfil_mapa,ligados_mapa,temas_mapa,desc_mapa,ext_mapa,id_mapa,imagem_mapa,linkdireto_mapa,nome_mapa,outros_mapa,mapfile",
"i3geoadmin_atlas"=>"publicado_atlas,ordem_atlas,basemapfile_atlas,desc_atlas,h_atlas,icone_atlas,id_atlas,link_atlas,pranchadefault_atlas,template_atlas,tipoguias_atlas,titulo_atlas,w_atlas",
"i3geoadmin_sistemas"=>"publicado_sistema,id_sistema,nome_sistema,perfil_sistema",
"i3geoadmin_identifica"=>"publicado_i,abrir_i,id_i,nome_i,target_i",
"i3geoadmin_raiz"=>"ordem,id_tema,id_menu,id_nivel,id_raiz,nivel,perfil",
"i3geoadmin_n1"=>"publicado,ordem,id_menu,id_grupo,id_n1,n1_perfil",
"i3geoadmin_n2"=>"publicado,ordem,id_n1,id_n2,id_subgrupo,n2_perfil",
"i3geoadmin_n3"=>"publicado,ordem,id_n2,id_n3,id_tema,n3_perfil",
"i3geoadmin_ws"=>"nacessosok,nacessos,autor_ws,desc_ws,id_ws,link_ws,nome_ws,tipo_ws",
"i3geoadmin_grupos"=>"it,es,en,desc_grupo,id_grupo,nome_grupo",
"i3geoadmin_subgrupos"=>"it,es,en,desc_subgrupo,id_subgrupo,nome_subgrupo",
"i3geoadmin_temas"=>"it,es,en,kmz_tema,id_tema,kml_tema,ogc_tema,download_tema,tags_tema,tipoa_tema,link_tema,desc_tema,nome_tema,codigo_tema",
"i3geoadmin_menus"=>"it,es,en,publicado_menu,perfil_menu,aberto,desc_menu,id_menu,nome_menu",
"i3geoadmin_comentarios"=>"comentario,data,openidnome,openidimagem,openidservico,openidusuario,openidurl,id_tema",
"i3geoadmin_acessostema"=>"codigo_tema,nacessos,dia,mes,ano",
"i3geousr_usuarios"=>"id_usuario,ativo,data_cadastro,email,login,nome_usuario,senha",
"i3geousr_papeis"=> "id_papel,nome,descricao",
"i3geousr_papelusuario"=> "id_usuario,id_papel",
"i3geousr_operacoes" => "id_operacao,codigo,descricao",
"i3geousr_operacoespapeis" => "id_operacao,id_papel",
"i3geousr_grupos" => "id_grupo,nome,descricao",
"i3geousr_grupotema" => "id_grupo,id_tema",
"i3geousr_grupousuario" => "id_usuario,id_grupo",
"i3geoestat_conexao" => "codigo_estat_conexao,bancodedados,host,porta,usuario,senha",
"i3geoestat_tipo_regiao" => "codigo_tipo_regiao,nome_tipo_regiao,descricao_tipo_regiao,codigo_estat_conexao,esquemadb,tabela,colunageo,data,identificador,colunanomeregiao,srid,colunacentroide,colunasvisiveis,apelidos",
"i3geoestat_agregaregiao" => "id_agregaregiao,codigo_tipo_regiao,codigo_tipo_regiao_pai,colunaligacao_regiaopai",
"i3geoestat_tipo_periodo" => "codigo_tipo_periodo,nome,descricao",
"i3geoestat_unidade_medida" => "codigo_unidade_medida,nome,sigla,permitesoma,permitemedia",
"i3geoestat_variavel" => "codigo_variavel,nome,descricao",
"i3geoestat_medida_variavel" => "id_medida_variavel,codigo_unidade_medida,codigo_tipo_periodo,codigo_variavel,codigo_tipo_regiao,codigo_estat_conexao,esquemadb,tabela,colunavalor,colunaidgeo,filtro,nomemedida,colunaidunico",
"i3geoestat_classificacao" => "id_classificacao,nome,id_medida_variavel,observacao",
"i3geoestat_classes" => "id_classe,expressao,titulo,vermelho,verde,azul,id_classificacao,tamanho,simbolo,overmelho,overde,oazul,otamanho",
"i3geoestat_fonteinfo" => "id_fonteinfo,titulo,link",
"i3geoestat_fonteinfo_medida" => "id_medida_variavel,id_fonteinfo",
"i3geoestat_medida_variavel_link" => "link,id_medida_variavel,nome,id_link",
"i3geoestat_parametro_medida" => "id_parametro_medida,coluna,nome,descricao,id_pai,id_medida_variavel,tipo"
);
include_once("admin/php/conexao.php");
if(!empty($esquemaadmin)){
$esquemaadmin = str_replace(".","",$esquemaadmin).".";
}
foreach(array_keys($tabelas) as $tabela)
{
echo " Tabela: ".$tabela."";
$sql = "select * from ".$esquemaadmin.$tabela;
$q = $dbh->query($sql,PDO::FETCH_ASSOC);
if($q !== false)
{
$resultado = $q->fetchAll();
if(count($resultado) > 0)
{
echo "...ok\n";
foreach(explode(",",$tabelas[$tabela]) as $coluna)
{
echo " coluna: ".$coluna;
if(in_array($coluna,array_keys($resultado[0])))
{
echo "...ok\n";
}
else
{echo "..não encontrada. Consulte o i3geo/guia_de_migracao.txt\n";
}
}
}
else
{echo "...não existem registros cadastrados\n";
}
}
else
{echo "..não encontrada. Consulte o i3geo/guia_de_migracao.txt\n";
}
}
echo "\n";
echo "
Localizando o cgi...\n";
$proto = "http" . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "s" : "") . "://";
$server = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
$enderecocgi = $proto.$server.$locmapserv;
echo "Você pode testar o CGI clicando aqui, se o programa responder corretamente, deverá aparecer na tela algo como 'No query information to decode. QUERY_STRING is set, but empty.'\n" ;
if (file_exists("temas/teste.txt")){
echo "
Removendo arquivo de testes temas/teste.txt";
unlink("temas/teste.txt");
}
if (file_exists("temas/teste.txt")){
echo "
Não foi possivel escrever na pasta temas. O sistema de administracao pode nao funcionar corretamente
";
}
else{
echo "
Testando criar arquivo temas/teste.txt";
$f = @fopen("temas/teste.txt",w);
@fclose($f);
if (!file_exists("temas/teste.txt")){
echo "
Não foi possivel escrever na pasta temas. O sistema de administracao pode nao funcionar corretamente
";
}
else{
unlink("temas/teste.txt");
echo "
ok.";
}
}
echo "
Escrevendo nos diretórios temporários...
";
if (file_exists($dir_tmp."/teste.txt")){
//echo "
Removendo arquivo de testes $dir_tmp/teste.txt
";
unlink($dir_tmp."/teste.txt");
}
if (file_exists($dir_tmp."/teste.txt")){
saindo("\nNão foi possível testar o diretório temporário $dir_tmp");
}
$f = @fopen($dir_tmp."/teste.txt",w);
@fclose($f);
if (file_exists($dir_tmp."/teste.txt")) {
echo " do Mapserver
ok
\n";
}
else {
saindo("\nNão foi possível gravar no diretório temporário $dir_tmp");
}
$f = @fopen(session_save_path()."/teste.txt",w);
@fclose($f);
if (file_exists(session_save_path()."/teste.txt")) {
echo " da SESSION PHP
ok
\n";
}
else {
saindo("\nNão foi possível gravar no diretório temporário da SESSION");
}
echo "
\n";
echo "Carregando o map_file base...\n";
$versao = versao();
$versao = $versao["principal"];
if(isset($base) && $base != ""){
if(file_exists($base)){
$f = $base;
}
else{
$f = $locaplic."/aplicmap/".$base.".map";
}
if(!file_exists($base)){
echo "ARQUIVO $base NÂO FOI ENCONTRADO. CORRIJA ISSO EM ms_configura.php";
exit;
}
}
else{
$f = "";
if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){
$f = $locaplic."/aplicmap/geral1windowsv".$versao.".map";
}
else{
if($f == "" && file_exists('/var/www/i3geo/aplicmap/geral1debianv'.$versao.'.map')){
$f = "/var/www/i3geo/aplicmap/geral1debianv".$versao.".map";
}
if($f == "" && file_exists('/var/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){
$f = "/var/www/html/i3geo/aplicmap/geral1fedorav".$versao.".map";
}
if($f == "" && file_exists('/opt/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){
$f = "/opt/www/html/i3geo/aplicmap/geral1v".$versao.".map";
}
if($f == ""){
$f = $locaplic."/aplicmap/geral1v".$versao.".map";
}
}
}
echo "
O arquivo mapfile de inicilização é: $f
\n";
echo "
E agora..desenhando o mapa (se o mapa não aparecer é um problema...\nverifique os caminhos no ms_configura.php e no $f):\n";
echo "
Criando o objeto com ms_newMapObj...";
$mapa = ms_newMapObj($f);
//para evitar erros que possam ser originados da conexao com o banco
for($i=0;$i<($mapa->numlayers);$i++){
$layern = $mapa->getLayer($i);
if ($layern->connectiontype == MS_POSTGIS ) {
$layern->set("status",MS_OFF);
}
}
$l = $mapa->getLayerByname("mundo");
if($l != ""){
$l->set("status",MS_DEFAULT);
}
$imgo = @$mapa->draw();
$nome = ($imgo->imagepath)."teste.png";
echo "
Nome da imagem gerada: $nome ";
if (!$imgo){
echo "Problemas ao gerar o mapa
";
$error = "";
$error = ms_GetErrorObj();
while($error && $error->code != MS_NOERR){
echo "
Error in %s: %s
", $error->routine, $error->message;
$error = $error->next();
}
}
if($imgo->imagepath == "")
{
echo "Erro IMAGEPATH vazio";
}
$imgo->saveImage($nome);
$nome = ($imgo->imageurl).basename($nome);
echo "";
echo " \n";
$error = "";
ms_ResetErrorList();
echo "Carregando o map_file geral1... e acrescentando os limites estaduais (aplicmap/estadosl...) \n";
if(isset($estadosl))
{
$maptemp = ms_newMapObj($locaplic."/aplicmap/".$estadosl.".map");
}
else{
if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
{
$maptemp = ms_newMapObj($locaplic."/aplicmap/estadoslwindows.map");
}
else
{$maptemp = ms_newMapObj($locaplic."/aplicmap/estadosl.map");
}
}
while($error && $error->code != MS_NOERR)
{
printf("
Error in %s: %s
\n", $error->routine, $error->message);
$error = $error->next();
}
echo "E agora..desenhando o mapa (se o mapa não aparecer é um problema...\nverifique os caminhos no ms_configura.php e no estadosl.map ou estadoslwindows.map):\n";
echo "
Um problema bastante comum é o não reconhecimento do diretório ms_tmp pelo Apache. \nO diretorio ms_tmp é utilizado pelo Mapserver e pelo i3geo para armazenar dados temporários. \nÉ nesse diretorio que ficam as imagens do mapa.\n";
echo "Quando o Apache não consegue utilizar esse diretório, a imagem não será mostrada,\n apesar de ser gerada dentro do ms_tmp (vc pode verificar se as imagens do \nmapa estão sendo criadas no ms_tmp apos rodar o testainstal.php).\n";
echo "Para solucionar esse problema, vc pode criar um link simbólico (nos sistemas linux),\n no mesmo local onde está instalado o i3geo, apontando para o local \nfísico onde está o ms_tmp.\n";
echo "O nome do link simbolico deve ser o mesmo que estiver definido em aplicmap/geral1.map ou geral1debian.map na linha IMAGEURL. Esse nome por default é definido como ms_tmp.\n";
echo "No wiki do portal do software público vc poderá encontrar mais detalhes sobre isso.\n";
for($i=0;$i<($maptemp->numlayers);$i++)
{
$layern = $maptemp->getLayer($i);
if ($layern->name == "estadosl")
{
$layern->set("data",$locaplic."/aplicmap/dados/estados.shp");
}
ms_newLayerObj($mapa, $layern);
}
$imgo = @$mapa->draw();
if (!$imgo){
echo "Problemas ao gerar o mapa
";
$error = "";
$error = ms_GetErrorObj();
while($error && $error->code != MS_NOERR){
echo "
Error in %s: %s
", $error->routine, $error->message;
$error = $error->next();
}
}
if($imgo->imagepath == "")
{
echo "Erro IMAGEPATH vazio";
}
$nome = ($imgo->imagepath)."teste1.png";
echo "
Nome da imagem gerada: $nome ";
$imgo->saveImage($nome);
$nome = ($imgo->imageurl).basename($nome);
echo "