Topic: Error with xajax and fopen

Hi!

I am trying to create a file using fopen and when I use it xajax returns an error. This error just happens when I use fopen.

This is my code:

Function instalar

function instalar_executar($dados)
    {
        $retorno = "<div class=\"row-form\">";
        $retorno .= "<span11><b>Instalando sistema:</b></span>";
        $retorno .= "</div>";
        
        $retorno .= "<div id=\"conectar\">";
        $retorno .= aviso::info("<strong>AGUARDANDO - </strong>Conexão com banco de dados");
        $retorno .= "</div>";
        $retorno .= "<div id=\"criar_bd\">";
        $retorno .= aviso::info("<strong>AGUARDANDO - </strong>Criar banco de dados");
        $retorno .= "</div>";
        $retorno .= "<div id=\"criar_tabelas\">";
        $retorno .= aviso::info("<strong>AGUARDANDO - </strong>Criar tabelas do banco de dados");
        $retorno .= "</div>";
        $retorno .= "<div id=\"salvar_config\">";
        $retorno .= aviso::info("<strong>AGUARDANDO - </strong>Salvar configurações do banco de dados");
        $retorno .= "</div>";
        
        $retorno .= "<div id=\"botoes\">";
        $retorno .= "</div>";
        
        $sucesso = 1;
        
        $objResponse = new xajaxResponse();
        
        $objResponse->script("xajax_instalar.etapas('instalacao')");
        $objResponse->assign("etapa_detalhes","innerHTML", $retorno);
        
        $ret = aviso::info("<strong>CONECTANDO - </strong>Estabelendo conexão com banco de dados <img src=\"img/loaders/3d_3.gif\" align=\"right\">");
        $objResponse->assign("conectar","innerHTML", $ret);
        
        $criar = new criar();
        if($criar->teste_bd($dados['end_bd'], $dados['usu_bd'], $dados['senha_bd']) == 0)
        {
            $sucesso = 0;
            $ret = aviso::erro("<strong>FALHA NA CONEXÃO - </strong>Não foi possível estabelecer conexão com o banco de dados");
            $objResponse->assign("conectar","innerHTML", $ret);
        }
        else
        {
            $ret = aviso::sucesso("<strong>CONEXÃO EFETUADA - </strong>Conexão com banco de dados estabelecida");
            $objResponse->assign("conectar","innerHTML", $ret);
            
            $ret = aviso::info("<strong>INSTALANDO - </strong>Criando banco de dados <img src=\"img/loaders/3d_3.gif\" align=\"right\">");
            $objResponse->assign("criar_bd","innerHTML", $ret);
            
            if($criar->criar_schema($dados['end_bd'], $dados['usu_bd'], $dados['senha_bd'], $dados['nome_bd']) == 0)
            {
                $sucesso = 0;
                $ret = aviso::erro("<strong>FALHA NA CRIAÇÃO DO BANCO DE DADOS - </strong>Não foi possível criar o banco de dados. Verifique se o banco de dados (".$dados['nome_bd'].") já existe");
                $objResponse->assign("criar_bd","innerHTML", $ret);
            }
            else
            {
                $ret = aviso::sucesso("<strong>BANCO DE DADOS CRIADO - </strong>Criação do banco de dados (".$dados['nome_bd'].") efetuada com sucesso");
                $objResponse->assign("criar_bd","innerHTML", $ret);
                
                $ret = aviso::info("<strong>INSTALANDO - </strong>Criando tabelas do banco de dados <img src=\"img/loaders/3d_3.gif\" align=\"right\">");
                $objResponse->assign("criar_tabelas","innerHTML", $ret);
                
                $criar_tabelas = $criar->criar_tabelas($dados['end_bd'], $dados['usu_bd'], $dados['senha_bd'], $dados['nome_bd']);
                if(($criar_tabelas == 0)||($criar_tabelas == 1))
                {
                    if($criar_tabelas == 0)
                    {
                        $sucesso = 0;
                        $ret = aviso::erro("<strong>FALHA NA CRIAÇÃO DAS TABELAS - </strong>Erro ao abrir arquivo de criação das tabelas do banco de dados");
                        $objResponse->assign("criar_tabelas","innerHTML", $ret);
                    }
                    else
                    {
                        $sucesso = 0;
                        $ret = aviso::erro("<strong>FALHA NA CRIAÇÃO DAS TABELAS - </strong>Erro ao criar as tabelas do banco de dados");
                        $objResponse->assign("criar_tabelas","innerHTML", $ret);
                    }
                }
                else
                {
                    $ret = aviso::sucesso("<strong>TABELAS DO BANCO DE DADOS CRIADAS - </strong>Criação das tabelas do banco de dados efetuada com sucesso");
                    $objResponse->assign("criar_tabelas","innerHTML", $ret);
                    
                    $ret = aviso::info("<strong>SALVANDO CONFIGURAÇÕES - </strong>Salvando configurações do banco de dados <img src=\"img/loaders/3d_3.gif\" align=\"right\">");
                    $objResponse->assign("salvar_config","innerHTML", $ret);
                    
                    if($criar->criar_arquivo_config($dados['end_bd'], $dados['usu_bd'], $dados['senha_bd'], $dados['nome_bd']) == 0)
                    {
                        $sucesso = 0;
                        $ret = aviso::erro("<strong>FALHA AO SALVAR CONFIGURAÇÕES - </strong>Não foi possível salvar as configurações. Verifique as permissões do servidor");
                        $objResponse->assign("salvar_config","innerHTML", $ret);
                    }
                    else
                    {
                        $ret = aviso::sucesso("<strong>CONFIGURAÇÕES SALVAS - </strong>As configurações foram salvas com sucesso");
                        $objResponse->assign("salvar_config","innerHTML", $ret);
                    }
                }
            }
        }
        
        if($sucesso == 0)
        {
            $ret = "<div class=\"toolbar bottom TAR\">";
            $ret .= "<button class=\"btn btn-info\" type=\"button\" onclick=\"xajax_instalar.configuracao()\">Voltar</button>";
            $ret .= "</div>";
            $objResponse->assign("botoes","innerHTML", $ret);
        }
        else
        {
            $ret = "<div class=\"toolbar bottom TAR\">";
            $ret .= "<button class=\"btn btn-primary\" type=\"button\" onclick=\"xajax_instalar.configuracao()\">Concluir</button>";
            $ret .= "</div>";
            $objResponse->assign("botoes","innerHTML", $ret);
        }
        
        return $objResponse;
    }

Function criar

function criar_arquivo_config($caminho, $usuario, $senha, $nome_banco)
    {
        $retorno = 1;
        
        $conteudo_arquivo = "<? define(\"CAMINHO_BD\", \"$caminho\");define(\"USUARIO_BD\", \"$usuario\");define(\"SENHA_BD\", \"$senha\");define(\"NOME_BD\", \"$nome_banco\"); ?>";
        if(!$arquivo = fopen("recursos/metodos/classes_sistema/sistema/class.config.php","w"))
        {
            $retorno = 0;
        }
        else
        {
            if(!fwrite($arquivo, $conteudo_arquivo))
            {
                $retorno = 0;
            }
            fclose($arquivo);
        }
        
        return $retorno;
    }

When I call $objResponse->script("xajax_instalar.etapas('instalacao')"); in function instalar it works fine but when I use a fopen in function criar it returns the error:

error wrote:

WARNING: Invalid request for a callable object.

When I take of the fopen it works fine again.

Thanks for your help.

Att Guilherme

Re: Error with xajax and fopen

Hi,


I cannot find the problem from the code you have posted. Could you post the complete php files?

Ed

If you ever stop learning you may as well dig a hole, crawl in and pull the top over yourself.

Re: Error with xajax and fopen

Hi Ed!

Here is the code

class.instalar.php

<?
include("class.validar.php");
include("class.criar.php");
class instalar{
    function instalar_sistema()
    {
        $retorno = "<div class=\"row-fluid\">";
        $retorno .= "<div class=\"span11\">";
        $retorno .= "<div class=\"widget\">";
        
        $retorno .= "<div class=\"head dark\">";
        $retorno .= "<div class=\"icon\"><i class=\"icos-database\"></i></div>";
        $retorno .= "<h2>Instalação do sistema</h2>";
        $retorno .= "</div>";
        
        $retorno .= "<div class=\"block-fluid\">";
        $retorno .= "<div id=\"etapas\"></div>";
        $retorno .= "<div id=\"etapa_detalhes\"></div>";
        $retorno .= "</div>";
        $retorno .= "</div>";
        $retorno .= "</div>";
        $retorno .= "</div>";
        
        return $retorno;
    }
    
    function etapas($atual)
    {
        $etapas = array(array("introducao", "Bem Vindo"),array("validacao","Verificação do sistema"),array("configuracao","Configuração do sistema"),array("instalacao","Instalação do sistema"));
        
        $n_etapas = count($etapas);
        $retorno = "<div class=\"row-form\">";
        for($i = 0; $i < $n_etapas; $i++)
        {
            if($etapas[$i][0] == $atual)
            {
                $retorno .= "<button class=\"btn btn-large btn-primary\" type=\"button\">".$etapas[$i][1]."</button>";
            }
            else
            {
                $retorno .= "<button class=\"btn btn-large\" type=\"button\">".$etapas[$i][1]."</button>";
            }
        }
        $retorno .= "</div>";
        $retorno .= "<div id=\"detalhes_etapa\">";
        $retorno .= "</div>";
                
        $objResponse = new xajaxResponse();
        
        $objResponse->assign("etapas","innerHTML", $retorno);
        
        return $objResponse;
    }
    
    function introducao()
    {
        $retorno = "<div class=\"row-form\">";
        $retorno .= "<p>Montar instrodução ao sistema.</p>";
        $retorno .= "<ul>";
        $retorno .= "<li>Apresentação.</li>";
        $retorno .= "<li>Termos.</li>";
        $retorno .= "<li>Licenças.</li>";
        $retorno .= "</ul>";
        $retorno .= "</div>";
        
        $retorno .= "<form id=\"form_termos\" method=\"post\" action=\"javascript:chama_xajax(xajax_instalar.validacao,[''])\" />";
        $retorno .= "<div class=\"row-form\">";
        $retorno .= "<div class=\"span12\"><textarea placeholder=\"Placeholder example\" name=\"termos\" id=\"termos\" readonly />Termos e condições</textarea></div>";
        $retorno .= "</div>";
        $retorno .= "<div class=\"row-form\">";
        $retorno .= "<div class=\"span12\"><input type=\"checkbox\" class=\"validate[required]\" value=\"1\" name=\"aceita_termos\" id=\"aceita_termos\" data-errormessage-value-missing=\"Os termos não foram aceitos\" />Concordo com os termos de utilização</div>";
        $retorno .= "</div>";
        $retorno .= "<div class=\"toolbar bottom TAR\">";
        $retorno .= "<button class=\"btn btn-primary\" type=\"submit\">Avançar</button>";
        $retorno .= "</div>";
        $retorno .= "</form>";
        
        $objResponse = new xajaxResponse();
        
        $objResponse->script("xajax_instalar.etapas('introducao')");
        $objResponse->assign("etapa_detalhes","innerHTML", $retorno);
        $objResponse->script("inicia_uniform()");
        $objResponse->script("inicia_form_validacao('#form_termos')");
        
        return $objResponse;
    }
    
    function validacao()
    {
        $validar = new validar();
        $versao_php = $validar->versao_php();
        $banco_dados = $validar->banco_dados();
        
        $revalidar = 0;
        
        $retorno = "<div class=\"row-form\">";
        $retorno .= "<div class=\"span12\">";
        if($versao_php == 0)
        {
            $retorno .= aviso::erro("<strong>VALIDAÇÃO DO PHP (ERRO) - </strong>A sua versão do php deve ser 5.2.6 ou maior");
            $revalidar = 1;
        }
        else
        {
            $retorno .= aviso::sucesso("<strong>VALIDAÇÃO DO PHP (SUCESSO) - </strong>Versão aceita");
        }
        if($banco_dados == 0)
        {
            $retorno .= aviso::erro("<strong>VALIDAÇÃO DO BANCO DE DADOS MYSQL (ERRO) - </strong>Não instalado");
            $revalidar = 1;
        }
        else
        {
            $retorno .= aviso::sucesso("<strong>VALIDAÇÃO DO BANCO DE DADOS MYSQL (SUCESSO) - </strong>Instalado");
        }
        if($revalidar == 1)
        {
            $retorno .= "<div class=\"TAC\">";
            $retorno .= "<button class=\"btn btn-primary\" type=\"button\" onclick=\"xajax_instalar.validacao()\">Atualizar validação</button>";
            $retorno .= "</div>";
            $retorno .= "<div class=\"toolbar bottom TAR\">";
            $retorno .= "<button class=\"btn btn-info\" type=\"button\" onclick=\"xajax_instalar.introducao()\">Voltar</button>";
            $retorno .= "<button class=\"btn btn-primary disabled\" type=\"submit\">Avançar</button>";
            $retorno .= "</div>";
        }
        else
        {
            $retorno .= "<div class=\"toolbar bottom TAR\">";
            $retorno .= "<button class=\"btn btn-info\" type=\"button\" onclick=\"xajax_instalar.introducao()\">Voltar</button>";
            $retorno .= "<button class=\"btn btn-primary\" type=\"button\" onclick=\"xajax_instalar.configuracao()\">Avançar</button>";
            $retorno .= "</div>";
        }
        $retorno .= "</div>";
        $retorno .= "</div>";
                
        $objResponse = new xajaxResponse();
        
        $objResponse->script("xajax_instalar.etapas('validacao')");
        $objResponse->assign("etapa_detalhes","innerHTML", $retorno);
        
        return $objResponse;
    }
    
    function configuracao()
    {
        $retorno = "<form id=\"form_conf_bd\" method=\"post\" action=\"javascript:chama_xajax(xajax_instalar.instalar_executar,[xajax.getFormValues('form_conf_bd')])\">";
        $retorno .= "<div class=\"row-form\">";
        $retorno .= "<span11><b>Configuração do Banco de dados:</b></span>";
        $retorno .= "</div>";
        
        $retorno .= "<div class=\"row-form\">";
        $retorno .= "<div class=\"span2\">Endereço do banco de dados:</div>";
        $retorno .= "<div class=\"span4\">";
        $retorno .= "<input type=\"text\" class=\"validate[required]\" name=\"end_bd\" id=\"end_bd\" data-errormessage-value-missing=\"Obrigatório\" value=\"localhost\"/>";
        $retorno .= "<span class=\"bottom\">Obrigatório</span>";
        $retorno .= "</div>";
        $retorno .= "</div>";
        
        $retorno .= "<div class=\"row-form\">";
        $retorno .= "<div class=\"span2\">Usuário do banco de dados:</div>";
        $retorno .= "<div class=\"span4\">";
        $retorno .= "<input type=\"text\" class=\"validate[required]\" name=\"usu_bd\" id=\"usu_bd\" data-errormessage-value-missing=\"Obrigatório\" value=\"root\"/>";
        $retorno .= "<span class=\"bottom\">Obrigatório</span>";
        $retorno .= "</div>";
        $retorno .= "</div>";
        
        $retorno .= "<div class=\"row-form\">";
        $retorno .= "<div class=\"span2\">Senha do banco de dados:</div>";
        $retorno .= "<div class=\"span4\">";
        $retorno .= "<input type=\"password\" class=\"validate[required]\" name=\"senha_bd\" id=\"senha_bd\" data-errormessage-value-missing=\"Obrigatório\" />";
        $retorno .= "<span class=\"bottom\">Obrigatório</span>";
        $retorno .= "</div>";
        $retorno .= "</div>";
        
        $retorno .= "<div class=\"row-form\">";
        $retorno .= "<div class=\"span2\">Nome do banco de dados a ser criado:</div>";
        $retorno .= "<div class=\"span4\">";
        $retorno .= "<input type=\"text\" class=\"validate[required]\" name=\"nome_bd\" id=\"nome_bd\" data-errormessage-value-missing=\"Obrigatório\" value=\"wizard\" />";
        $retorno .= "<span class=\"bottom\">Obrigatório</span>";
        $retorno .= "</div>";
        $retorno .= "</div>";
        
        $retorno .= aviso::alerta("<strong>ATENÇÃO - </strong>Verifique com cuidado as configurações. Ao passar para a fase de instalação do sistema o processo não poderá ser interrompido");
        
        $retorno .= "<div class=\"toolbar bottom TAR\">";
        $retorno .= "<button class=\"btn btn-info\" type=\"button\" onclick=\"xajax_instalar.validacao()\">Voltar</button>";
        $retorno .= "<button class=\"btn btn-primary\" type=\"submit\">Avançar</button>";
        $retorno .= "</div>";
        $retorno .= "</form>";
        
        $objResponse = new xajaxResponse();
        
        $objResponse->script("xajax_instalar.etapas('configuracao')");
        $objResponse->assign("etapa_detalhes","innerHTML", $retorno);
        $objResponse->script("inicia_uniform()");
        $objResponse->script("inicia_form_validacao('#form_conf_bd')");
        
        return $objResponse;
    }
    
    function instalar_executar($dados)
    {
        $retorno = "<div class=\"row-form\">";
        $retorno .= "<span11><b>Instalando sistema:</b></span>";
        $retorno .= "</div>";
        
        $retorno .= "<div id=\"conectar\">";
        $retorno .= aviso::info("<strong>AGUARDANDO - </strong>Conexão com banco de dados");
        $retorno .= "</div>";
        $retorno .= "<div id=\"criar_bd\">";
        $retorno .= aviso::info("<strong>AGUARDANDO - </strong>Criar banco de dados");
        $retorno .= "</div>";
        $retorno .= "<div id=\"criar_tabelas\">";
        $retorno .= aviso::info("<strong>AGUARDANDO - </strong>Criar tabelas do banco de dados");
        $retorno .= "</div>";
        $retorno .= "<div id=\"salvar_config\">";
        $retorno .= aviso::info("<strong>AGUARDANDO - </strong>Salvar configurações do banco de dados");
        $retorno .= "</div>";
        
        $retorno .= "<div id=\"botoes\">";
        $retorno .= "</div>";
        
        $sucesso = 1;
        
        $objResponse = new xajaxResponse();
        
        $objResponse->script("xajax_instalar.etapas('instalacao')");
        $objResponse->assign("etapa_detalhes","innerHTML", $retorno);
        
        $ret = aviso::info("<strong>CONECTANDO - </strong>Estabelendo conexão com banco de dados <img src=\"img/loaders/3d_3.gif\" align=\"right\">");
        $objResponse->assign("conectar","innerHTML", $ret);
        
        $criar = new criar();
        if($criar->teste_bd($dados['end_bd'], $dados['usu_bd'], $dados['senha_bd']) == 0)
        {
            $sucesso = 0;
            $ret = aviso::erro("<strong>FALHA NA CONEXÃO - </strong>Não foi possível estabelecer conexão com o banco de dados");
            $objResponse->assign("conectar","innerHTML", $ret);
        }
        else
        {
            $ret = aviso::sucesso("<strong>CONEXÃO EFETUADA - </strong>Conexão com banco de dados estabelecida");
            $objResponse->assign("conectar","innerHTML", $ret);
            
            $ret = aviso::info("<strong>INSTALANDO - </strong>Criando banco de dados <img src=\"img/loaders/3d_3.gif\" align=\"right\">");
            $objResponse->assign("criar_bd","innerHTML", $ret);
            
            if($criar->criar_schema($dados['end_bd'], $dados['usu_bd'], $dados['senha_bd'], $dados['nome_bd']) == 0)
            {
                $sucesso = 0;
                $ret = aviso::erro("<strong>FALHA NA CRIAÇÃO DO BANCO DE DADOS - </strong>Não foi possível criar o banco de dados. Verifique se o banco de dados (".$dados['nome_bd'].") já existe");
                $objResponse->assign("criar_bd","innerHTML", $ret);
            }
            else
            {
                $ret = aviso::sucesso("<strong>BANCO DE DADOS CRIADO - </strong>Criação do banco de dados (".$dados['nome_bd'].") efetuada com sucesso");
                $objResponse->assign("criar_bd","innerHTML", $ret);
                
                $ret = aviso::info("<strong>INSTALANDO - </strong>Criando tabelas do banco de dados <img src=\"img/loaders/3d_3.gif\" align=\"right\">");
                $objResponse->assign("criar_tabelas","innerHTML", $ret);
                
                $criar_tabelas = $criar->criar_tabelas($dados['end_bd'], $dados['usu_bd'], $dados['senha_bd'], $dados['nome_bd']);
                if(($criar_tabelas == 0)||($criar_tabelas == 1))
                {
                    if($criar_tabelas == 0)
                    {
                        $sucesso = 0;
                        $ret = aviso::erro("<strong>FALHA NA CRIAÇÃO DAS TABELAS - </strong>Erro ao abrir arquivo de criação das tabelas do banco de dados");
                        $objResponse->assign("criar_tabelas","innerHTML", $ret);
                    }
                    else
                    {
                        $sucesso = 0;
                        $ret = aviso::erro("<strong>FALHA NA CRIAÇÃO DAS TABELAS - </strong>Erro ao criar as tabelas do banco de dados");
                        $objResponse->assign("criar_tabelas","innerHTML", $ret);
                    }
                }
                else
                {
                    $ret = aviso::sucesso("<strong>TABELAS DO BANCO DE DADOS CRIADAS - </strong>Criação das tabelas do banco de dados efetuada com sucesso");
                    $objResponse->assign("criar_tabelas","innerHTML", $ret);
                    
                    $ret = aviso::info("<strong>SALVANDO CONFIGURAÇÕES - </strong>Salvando configurações do banco de dados <img src=\"img/loaders/3d_3.gif\" align=\"right\">");
                    $objResponse->assign("salvar_config","innerHTML", $ret);
                    
                    if($criar->criar_arquivo_config($dados['end_bd'], $dados['usu_bd'], $dados['senha_bd'], $dados['nome_bd']) == 0)
                    {
                        $sucesso = 0;
                        $ret = aviso::erro("<strong>FALHA AO SALVAR CONFIGURAÇÕES - </strong>Não foi possível salvar as configurações. Verifique as permissões do servidor");
                        $objResponse->assign("salvar_config","innerHTML", $ret);
                    }
                    else
                    {
                        $ret = aviso::sucesso("<strong>CONFIGURAÇÕES SALVAS - </strong>As configurações foram salvas com sucesso");
                        $objResponse->assign("salvar_config","innerHTML", $ret);
                    }
                }
            }
        }
        
        if($sucesso == 0)
        {
            $ret = "<div class=\"toolbar bottom TAR\">";
            $ret .= "<button class=\"btn btn-info\" type=\"button\" onclick=\"xajax_instalar.configuracao()\">Voltar</button>";
            $ret .= "</div>";
            $objResponse->assign("botoes","innerHTML", $ret);
        }
        else
        {
            $ret = "<div class=\"toolbar bottom TAR\">";
            $ret .= "<button class=\"btn btn-primary\" type=\"button\" onclick=\"xajax_instalar.configuracao()\">Concluir</button>";
            $ret .= "</div>";
            $objResponse->assign("botoes","innerHTML", $ret);
        }
        
        return $objResponse;
    }
}
?>

class.criar.php

<?
include("recursos/metodos/classes_sistema/sistema/class.bd.php");
class criar{
    function teste_bd($caminho, $usuario, $senha)
    {
        $conexao = new banco_dados();
        if($conexao->teste_conexao($caminho, $usuario, $senha) == 0)
        {
            $retorno = 0;
        }
        else
        {
            $retorno = 1;
        }
        return $retorno;
    }
    
    function criar_schema($caminho, $usuario, $senha, $nome_banco)
    {
        $conexao = new banco_dados();
        $conecta = $conexao->conexao_s_config($caminho, $usuario, $senha);
        
        $cria_bd = "CREATE SCHEMA ".$nome_banco;
        if(!$conecta->query($cria_bd))
        {
            $retorno = 0;
        }
        else
        {
            $retorno = 1;
        }
        
        $conexao->fecha_conexao($conecta);
        return $retorno;
    }
    
    function criar_tabelas($caminho, $usuario, $senha, $nome_banco)
    {
        @ $script_bd = file_get_contents("recursos/scripts/script_bd.sql");
        if(!$script_bd)
        {
            $retorno = 0;
        }
        else
        {
            $conexao = new banco_dados();
            $conecta = $conexao->conexao_s_config($caminho, $usuario, $senha);
            $conexao->conexao_s_config_select_bd($conecta, $nome_banco);
            
            if(!$conecta->multi_query($script_bd))
            {
                $retorno = 1;
            }
            else
            {
                $retorno = 2;
            }
            
            $conexao->fecha_conexao($conecta);
        }
        
        return $retorno;
    }
    
    function criar_arquivo_config($caminho, $usuario, $senha, $nome_banco)
    {
        $retorno = 1;
        
        $conteudo_arquivo = "<? define(\"CAMINHO_BD\", \"$caminho\");define(\"USUARIO_BD\", \"$usuario\");define(\"SENHA_BD\", \"$senha\");define(\"NOME_BD\", \"$nome_banco\"); ?>";
        if(!$arquivo = fopen("recursos/metodos/classes_sistema/sistema/class.config.php","w"))
        {
            $retorno = 0;
        }
        else
        {
            if(!fwrite($arquivo, $conteudo_arquivo))
            {
                $retorno = 0;
            }
            fclose($arquivo);
        }
        
        return $retorno;
    }
}

//mysqli_select_db($connection, "catalogName") or    die ("couldn't select database");
        
//Free result, deletes the query results, make sure you have finished using them.
//$result->free();
?>

Thanks.

Re: Error with xajax and fopen

Been looking it over and still nothing.

I notice you use file_get_contents() to read your sql.

You could use file_put_contents() to write  the file class.config.php;

I have lots of time so I'll keep looking...

If you ever stop learning you may as well dig a hole, crawl in and pull the top over yourself.

Re: Error with xajax and fopen

Hi Ed!

I used file_put_contents() and it returns the same error.

function criar_arquivo_config($caminho, $usuario, $senha, $nome_banco)
    {
        $retorno = 1;
        
        $conteudo_arquivo = "<? define(\"CAMINHO_BD\", \"$caminho\");define(\"USUARIO_BD\", \"$usuario\");define(\"SENHA_BD\", \"$senha\");define(\"NOME_BD\", \"$nome_banco\"); ?>";
        
        if(!file_put_contents("recursos/metodos/classes_sistema/sistema/class.config.txt",$conteudo_arquivo))
        {
            $retorno = 0;
        }
        
        return $retorno;
    }

the error is below

xajax debug output

Mon Feb 25 2013 15:20:47 GMT-0400 (Hora Padrão Brasil Central)
DONE [37ms]
Mon Feb 25 2013 15:20:47 GMT-0400 (Hora Padrão Brasil Central)
WARNING: Invalid request for a callable object.
Mon Feb 25 2013 15:20:47 GMT-0400 (Hora Padrão Brasil Central)
RECEIVED [status: 200, size: 113 bytes, time: 35ms]:
<?xml version="1.0" encoding="utf-8" ?>
<xjx>
<cmd cmd="dbg">SInvalid request for a callable object.</cmd>
</xjx>
Mon Feb 25 2013 15:20:47 GMT-0400 (Hora Padrão Brasil Central)
DONE [413ms]
Mon Feb 25 2013 15:20:47 GMT-0400 (Hora Padrão Brasil Central)
SENT [71 bytes]
Mon Feb 25 2013 15:20:47 GMT-0400 (Hora Padrão Brasil Central)
SENDING REQUEST
Mon Feb 25 2013 15:20:47 GMT-0400 (Hora Padrão Brasil Central)
CALLING: 
xjxcls: instalar
xjxmthd: etapas
URI: 
http://localhost/Em_desenvolvimento/Wizard_admin/?end_bd=localhost&usu_bd=root&senha_bd=gui080381&nome_bd=wizard
Mon Feb 25 2013 15:20:47 GMT-0400 (Hora Padrão Brasil Central)
POST: xjxcls=instalar
&xjxmthd=etapas
&xjxr=1361820047083
&xjxargs[]=Sinstalacao
Mon Feb 25 2013 15:20:47 GMT-0400 (Hora Padrão Brasil Central)
PREPARING REQUEST
Mon Feb 25 2013 15:20:47 GMT-0400 (Hora Padrão Brasil Central)
PROCESSING PARAMETERS [1]
Mon Feb 25 2013 15:20:47 GMT-0400 (Hora Padrão Brasil Central)
INITIALIZING REQUEST
Mon Feb 25 2013 15:20:47 GMT-0400 (Hora Padrão Brasil Central)
STARTING XAJAX REQUEST
Mon Feb 25 2013 15:20:47 GMT-0400 (Hora Padrão Brasil Central)
RECEIVED [status: 200, size: 2621 bytes, time: 406ms]:
<?xml version="1.0" encoding="utf-8" ?>
<xjx>
<cmd cmd="js">Sxajax_instalar.etapas('instalacao')</cmd>
<cmd cmd="as" id="etapa_detalhes" prop="innerHTML"><![CDATA[S<div class="row-form"><span11><b>Instalando sistema:</b></span></div><div id="conectar"><div class="alert alert-info"><strong>AGUARDANDO - </strong>Conexão com banco de dados</div></div><div id="criar_bd"><div class="alert alert-info"><strong>AGUARDANDO - </strong>Criar banco de dados</div></div><div id="criar_tabelas"><div class="alert alert-info"><strong>AGUARDANDO - </strong>Criar tabelas do banco de dados</div></div><div id="salvar_config"><div class="alert alert-info"><strong>AGUARDANDO - </strong>Salvar configurações do banco de dados</div></div><div id="botoes"></div>]]></cmd>
<cmd cmd="as" id="conectar" prop="innerHTML"><![CDATA[S<div class="alert alert-info"><strong>CONECTANDO - </strong>Estabelendo conexão com banco de dados <img src="img/loaders/3d_3.gif" align="right"></div>]]></cmd>
<cmd cmd="as" id="conectar" prop="innerHTML"><![CDATA[S<div class="alert alert-success"><strong>CONEXÃO EFETUADA - </strong>Conexão com banco de dados estabelecida</div>]]></cmd>
<cmd cmd="as" id="criar_bd" prop="innerHTML"><![CDATA[S<div class="alert alert-info"><strong>INSTALANDO - </strong>Criando banco de dados <img src="img/loaders/3d_3.gif" align="right"></div>]]></cmd>
<cmd cmd="as" id="criar_bd" prop="innerHTML"><![CDATA[S<div class="alert alert-success"><strong>BANCO DE DADOS CRIADO - </strong>Criação do banco de dados (wizard) efetuada com sucesso</div>]]></cmd>
<cmd cmd="as" id="criar_tabelas" prop="innerHTML"><![CDATA[S<div class="alert alert-info"><strong>INSTALANDO - </strong>Criando tabelas do banco de dados <img src="img/loaders/3d_3.gif" align="right"></div>]]></cmd>
<cmd cmd="as" id="criar_tabelas" prop="innerHTML"><![CDATA[S<div class="alert alert-success"><strong>TABELAS DO BANCO DE DADOS CRIADAS - </strong>Criação das tabelas do banco de dados efetuada com sucesso</div>]]></cmd>
<cmd cmd="as" id="salvar_config" prop="innerHTML"><![CDATA[S<div class="alert alert-info"><strong>SALVANDO CONFIGURAÇÕES - </strong>Salvando configurações do banco de dados <img src="img/loaders/3d_3.gif" align="right"></div>]]></cmd>
<cmd cmd="as" id="salvar_config" prop="innerHTML"><![CDATA[S<div class="alert alert-success"><strong>CONFIGURAÇÕES SALVAS - </strong>As configurações foram salvas com sucesso</div>]]></cmd>
<cmd cmd="as" id="botoes" prop="innerHTML"><![CDATA[S<div class="toolbar bottom TAR"><button class="btn btn-primary" type="button" onclick="xajax_instalar.configuracao()">Concluir</button></div>]]></cmd>
</xjx>
Mon Feb 25 2013 15:20:46 GMT-0400 (Hora Padrão Brasil Central)
SENT [361 bytes]
Mon Feb 25 2013 15:20:46 GMT-0400 (Hora Padrão Brasil Central)
SENDING REQUEST
Mon Feb 25 2013 15:20:46 GMT-0400 (Hora Padrão Brasil Central)
CALLING: 
xjxcls: instalar
xjxmthd: instalar_executar
URI: 
http://localhost/Em_desenvolvimento/Wizard_admin/?end_bd=localhost&usu_bd=root&senha_bd=gui080381&nome_bd=wizard
Mon Feb 25 2013 15:20:46 GMT-0400 (Hora Padrão Brasil Central)
POST: xjxcls=instalar
&xjxmthd=instalar_executar
&xjxr=1361820046673
&xjxargs[]=
<xjxobj>
<e><k>end_bd</k><v>Slocalhost</v></e>
<e><k>usu_bd</k><v>Sroot</v></e>
<e><k>senha_bd</k><v>Sgui080381</v></e>
<e><k>nome_bd</k><v>Swizard</v></e>
</xjxobj>
Mon Feb 25 2013 15:20:46 GMT-0400 (Hora Padrão Brasil Central)
PREPARING REQUEST
Mon Feb 25 2013 15:20:46 GMT-0400 (Hora Padrão Brasil Central)
OBJECT TO XML: size = 4
Mon Feb 25 2013 15:20:46 GMT-0400 (Hora Padrão Brasil Central)
OBJECT TO XML: maxDepth = 20, maxSize = 2000
Mon Feb 25 2013 15:20:46 GMT-0400 (Hora Padrão Brasil Central)
PROCESSING PARAMETERS [1]
Mon Feb 25 2013 15:20:46 GMT-0400 (Hora Padrão Brasil Central)
INITIALIZING REQUEST
Mon Feb 25 2013 15:20:46 GMT-0400 (Hora Padrão Brasil Central)
STARTING XAJAX REQUEST

When I comment the fopen line or file_put_contents() it works fine.

Thanks

Re: Error with xajax and fopen

OK. Is there anything in your apache error log?

If you ever stop learning you may as well dig a hole, crawl in and pull the top over yourself.

Re: Error with xajax and fopen

Hi Ed!

I have a validation in my code that I noticed that when I stop using it the problem did not happend anymore.

Here it is

index.php

<?
include("recursos/metodos/classes_sistema/sistema/class.html.php");
include("recursos/metodos/classes_sistema/sistema/class.valida.php");
$html = new html();

//XAJAX
define ('XAJAX_DEFAULT_CHAR_ENCODING', 'utf-8');
include("recursos/xajax/xajax_core/xajax.inc.php");

$xajax = new xajax();
$xajax -> configure('javascript URI', 'recursos/xajax/');
$xajax->setFlag('debug',true);

if(valida_sistema::instalacao() == 0)
{
    include("recursos/metodos/classes_sistema/instalacao/class.instalar.php");
    $instalar = new instalar();
    $xajax->register(XAJAX_CALLABLE_OBJECT,$instalar);
    $acao = "instalacao";
}
else
{
    $acao = "executar";
}
$xajax -> processRequest();
//fim XAJAX
?>
<!DOCTYPE html>
<html lang="en">
<head>        
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
    
    <!--[if gt IE 8]>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <![endif]-->        
    
    <title>Form validation - Virgo Premium Admin Template</title>
    
    <link href="css/stylesheets.css" rel="stylesheet" type="text/css" />      
    <!--[if lt IE 10]>
        <link href="css/ie.css" rel="stylesheet" type="text/css" />
    <![endif]-->        
    <link rel="icon" type="image/ico" href="favicon.ico"/>
</head>
<?
//Gera funcções XAJAX
$xajax->printJavascript("recursos/xajax/");
//Fim geração funcções XAJAX
$html->geral($acao);
?>

class.valida.php

<?
class valida_sistema{
    function instalacao()
    {
        if(!file_exists("recursos/metodos/classes_sistema/sistema/class.config.php"))
        {
            return 0;
        }
        else
        {
            return 1;
        }
    }    
}
?>

Re: Error with xajax and fopen

No, my apache error log had just 1 error that my favicon file was missing but it is already fixed.

I noticed that when the include of the class.instalar, the object new instalar() and the xajax function register was inside the if of the validation ex:

if(valida_sistema::instalacao() == 0)
{
    include("recursos/metodos/classes_sistema/instalacao/class.instalar.php");
    $instalar = new instalar();
    $xajax->register(XAJAX_CALLABLE_OBJECT,$instalar);
    $acao = "instalacao";
}
else
{
    $acao = "executar";
}

the error appears. When I put it out of the validation it works fine. But even inside the validation if, the error just apeears when I use fopen() or file_put_contents().

I dont know why.

Re: Error with xajax and fopen

In your code i find:

$xajax->register(XAJAX_CALLABLE_OBJECT,$instalar);

In the registerObjectTest.php in the xajax test suite i see a lot of this...

$xajax->register(XAJAX_CALLABLE_OBJECT,&$instalar); //as a reference to $instalar...

Try this out.

If you ever stop learning you may as well dig a hole, crawl in and pull the top over yourself.

Re: Error with xajax and fopen

It returns this error

Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file

the code

if(valida_sistema::instalacao() == 0)
{
    include("recursos/metodos/classes_sistema/instalacao/class.instalar.php");
    $instalar = new instalar();
    $xajax->register(XAJAX_CALLABLE_OBJECT,&$instalar);
    $acao = "instalacao";
}
else
{
    $acao = "executar";
}

Re: Error with xajax and fopen

Right. I see not that that only works up to PHP V4...

Scratch, Scratch smile

If you ever stop learning you may as well dig a hole, crawl in and pull the top over yourself.

Re: Error with xajax and fopen

Well, I am using PHP 5.2.6 and I really dont know what is happening. Have tried lots of solutions but nothing works.

Re: Error with xajax and fopen

Which version of xajax are you using? Just grabbing at straws...

If you ever stop learning you may as well dig a hole, crawl in and pull the top over yourself.

Re: Error with xajax and fopen

Xajax 0.5

Re: Error with xajax and fopen

@version $Id: copyright.inc.php 327 2007-02-28 16:55:26Z calltoconstruct