500 - Internal Server Error
02/04/2015
0
O que ocorre é que está pagina faz upload de um arquivo .DBF e depois o lê.
Quanto ao upload, tudo certo, porem quando ele começa a ler o arquivo, demora muito e ao final dá 500 - Internal Server Error.
Li em um site que poderia ser o .htacces que estaria dando problema, então removi ele(mas mantive um backup) e o php.ini está configurado da seguinte maneira:
./configure --enable-dbase.extension=php_dbase.dll
allow_url_fopen = On
memory_limit = 6144M
post_max_size = 1000M
upload_max_filesize = 1000M
max_input_time = 259200
max_execution_time 259200
Já tentei de tudo e nada funciona.
Desde já, agradeço.
Alex William
Posts
02/04/2015
Randrade
É para um servidor externo ou para seu computador pessoal?
02/04/2015
Alex William
É para um servidor de hospedagem externo, mas o upload funciona, o problema é na hora da leitura.
02/04/2015
Randrade
Sem seu código de upload não podemos analisar o funcionamento. Se possível, poste o mesmo.
Tente mudar o php.ini para:
memory_limit = 50M post_max_size = 8M file_uploads = On upload_max_filesize = 8M
Porém, encontrei essa solução no FAQ da UolHost, pode ser que resolva:
Para aumentar o tamanho máximo do arquivo enviado por upload de um arquivo é necessário incluir os parâmetros abaixo no seu arquivo Web.config:
<configuration> <system.webserver> <security> <requestfiltering> <requestlimits maxallowedcontentlength="x"> </requestlimits></requestfiltering> </security> </system.webserver> </configuration>
Onde "x" é o tamanho máximo do arquivo em Bytes.
ATENÇÃO: Caso o arquivo web.config não exista crie-o na pasta raiz de sua estrutura de diretórios e salve com o conteúdo destacado acima.
Faq UolHost
02/04/2015
Alex William
O problema é a leitura do arquivo.
Segue o código da pagina de leitura:
<? @header("Cache-Control: no-cache, must-revalidate"); @header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); @header("Content-Type: application/xml; charset=utf-8"); error_reporting(E_ALL); /*set_time_limit(80000); ini_set('upload_max_filesize','1000M'); ini_set('post_max_size','1000M'); ini_set('max_input_time',1000); ini_set('max_execution_time',80000);*/ $erro = false; if(empty($_FILES['arquivo']['name'])) { ?> <script> alert('Favor selecionar um arquivo .DBF para importação!'); document.location.replace('panel.php?m=beneficiarios&a=index.php'); </script> <? exit(); }else { //echo $_FILES['arquivo']['name']; $ext = strtolower(strrchr($_FILES['arquivo']['name'],'.')); if($ext != '.dbf') { ?> <script> alert('Arquivos somente no formato .DBF!'); document.location.replace('panel.php?m=beneficiarios&a=index.php'); </script> <? exit(); } //@unlink('dbfs/'.$_FILES['arquivo']['name']); if(move_uploaded_file($_FILES['arquivo']['tmp_name'],'dbfs/'.$_FILES['arquivo']['name'])) { /// LEITURA DO DBF E LAN�AMENTO NO BANCO DE DADOS $query_truncate = "DELETE FROM beneficiarios"; if(!mysql_query($query_truncate)) { $erro = true; exit(); } }else { ?> <script> alert('Erro ao mover arquivo!'); document.location.replace('panel.php?m=beneficiarios&a=index.php'); </script> <? exit(); } //$query_truncate $db = dbase_open('dbfs/ASSE1.dbf',0); //echo "aquii"; if ($db) { $record_numbers = dbase_numrecords($db); for ($i = 1; $i <= $record_numbers; $i++) { $row = dbase_get_record_with_names($db, $i); if($row['SEXO']=='M') { $sexo = '1'; }elseif($row['SEXO']=='F') { $sexo = '3'; } $echo1 = substr_count($row['DATAM'],'1'); $echo2 = substr_count($row['DATAM'],'2'); $echo3 = substr_count($row['DATAM'],'3'); $echo4 = substr_count($row['DATAM'],'4'); $echo5 = substr_count($row['DATAM'],'5'); $echo6 = substr_count($row['DATAM'],'6'); $echo7 = substr_count($row['DATAM'],'7'); $echo8 = substr_count($row['DATAM'],'8'); $echo9 = substr_count($row['DATAM'],'9'); $nascimento = dateToUS($row['NASCIMENTO']); if($echo1!=0 || $echo2!=0 || $echo3!=0 || $echo4!=0 || $echo5!=0 || $echo6!=0 || $echo7!=0 || $echo8!=0 || $echo9!=0) { //echo "aqui"; $cancelamento = 'S'; }elseif($echo1==0 && $echo2==0 && $echo3==0 && $echo4==0 && $echo5==0 && $echo6==0 && $echo7==0 && $echo8==0 && $echo9==0) { //echo "aqui2"; $cancelamento = 'N'; } /*echo $row['DATAM']; echo "---->"; echo $row['CHAPA']; echo "---->"; echo $cancelamento; echo "<br>";*/ $query_testa = "SELECT codigo FROM beneficiarios WHERE codigo = '{$row['CHAPA']}.00000'"; $query_testa = mysql_query($query_testa); $query_banco = "SELECT * FROM bancos WHERE codigo_compensacao = '{$row['BANCO']}'"; $query_banco = mysql_query($query_banco); $dados_banco = mysql_fetch_array($query_banco); $cep = trim($row['CEP']); $tamanho_cep = strlen($cep); if(!empty($cep) || $tamanho_cep==9) { $cep3 = explode('-',$row['CEP']); $cep2 = implode('',$cep3); $cep = trim($cep2); $query_municipio = "SELECT * FROM ceps WHERE cep = '{$cep}'"; if(mysql_query($query_municipio)) { $query_municipio = mysql_query($query_municipio); $dados_municipio = mysql_fetch_array($query_municipio); } } if(mysql_num_rows($query_testa)==0) { $nascimento = dateToUs($row['NASCIMENTO']); $ingresso = dateToUs($row['INGRESSO']); if(!empty($row['CD_IBGE'])) { $codigo_ibge = $row['CD_IBGE']; }else { $codigo_ibge = null; } $data_carencia = dateToUs($row['DB']); $cpf = substr($row['CPF'],0,3).'.'.substr($row['CPF'],3,3).'.'.substr($row['CPF'],6,3).'-'.substr($row['CPF'],9,2); $query = "INSERT INTO beneficiarios(codigo,nome,numero_carteira,cartao_saude,sexo,data_ingresso,data_nascimento,municipio_residencia,registro_plano,excluido,tipo,banco,agencia,conta_corrente, data_carencia, motivo_carencia,cpf,aproveitamento_carencia, titular) VALUES ('".addslashes(str_pad(trim($row['CHAPA']),5,'0',STR_PAD_LEFT)).".00000"."','".addslashes(trim($row['NOME']))."','".addslashes(str_replace(' ','',str_pad(trim($row['CHAPA']),5,'0',STR_PAD_LEFT))).".00000"."','".addslashes(trim($row['CNS']))."','{$sexo}','{$ingresso}','{$nascimento}','{$dados_municipio['ibge']}','01','{$cancelamento}','T','{$dados_banco['nome_banco']}','".trim($row['AGENCIA'])."','".trim($row['CONTA'])."','{$data_carencia}','".addslashes(trim($row['DBO']))."','{$cpf}','N','".addslashes(str_pad(trim($row['CHAPA']),5,'0',STR_PAD_LEFT)).".00000')"; //exit(); if(!mysql_query($query)) { echo $query; echo "<br><br>"; $erro = true; break; } } } } //exit(); //echo "<br><br><br>"; $db2 = dbase_open('dbfs/ASSE2.dbf',0); //echo "aquii"; if ($db2) { $record_numbers2 = dbase_numrecords($db2); for ($i2 = 1; $i2 <= $record_numbers2; $i2++) { $row2 = dbase_get_record_with_names($db2, $i2); if($row2['SEXO']=='M') { $sexo2 = '1'; }elseif($row2['SEXO']=='F') { $sexo2 = '3'; } $echo12 = substr_count($row2['DATAM'],'1'); $echo22 = substr_count($row2['DATAM'],'2'); $echo32 = substr_count($row2['DATAM'],'3'); $echo42 = substr_count($row2['DATAM'],'4'); $echo52 = substr_count($row2['DATAM'],'5'); $echo62 = substr_count($row2['DATAM'],'6'); $echo72 = substr_count($row2['DATAM'],'7'); $echo82 = substr_count($row2['DATAM'],'8'); $echo92 = substr_count($row2['DATAM'],'9'); if($echo12!=0 || $echo22!=0 || $echo32!=0 || $echo42!=0 || $echo52!=0 || $echo62!=0 || $echo72!=0 || $echo82!=0 || $echo92!=0) { //echo "aqui"; $cancelamento2 = 'S'; }elseif($echo12==0 && $echo22==0 && $echo32==0 && $echo42==0 && $echo52==0 && $echo62==0 && $echo72==0 && $echo82==0 && $echo92==0) { //echo "aqui2"; $cancelamento2 = 'N'; } /*echo $row2['DATAM']; echo "---->"; echo $row2['CHAPA']."-".$row2['SEQ']; echo "---->"; echo $cancelamento2; echo "<br>";*/ $nascimento2 = dateToUS($row2['NASCIMENTO']); $ingresso2 = dateToUs($row2['INGRESSO']); $query_testa2 = "SELECT codigo FROM beneficiarios WHERE codigo = '".$row2['CHAPA'].".".$row2['SEQ']."'"; $query_testa2 = mysql_query($query_testa2); $data_carencia2 = dateToUs($row2['DB']); $cpf2 = substr($row2['CPF'],0,3).'.'.substr($row2['CPF'],3,3).'.'.substr($row2['CPF'],6,3).'-'.substr($row2['CPF'],9,2); $cep = trim($row2['CEP']); $tamanho_cep = strlen($cep); if(!empty($cep) || $tamanho_cep==9) { $cep3 = explode('-',$row2['CEP']); $cep2 = implode('',$cep3); $cep = trim($cep2); $query_municipio = "SELECT * FROM ceps WHERE cep = '{$cep}'"; if(mysql_query($query_municipio)) { $query_municipio = mysql_query($query_municipio); $dados_municipio = mysql_fetch_array($query_municipio); } } if(mysql_num_rows($query_testa2)==0) { $nascimento2 = dateToUs($row2['NASCIMENTO']); $query2 = "INSERT INTO beneficiarios(codigo,nome,numero_carteira,cartao_saude,sexo,data_ingresso,data_nascimento,municipio_residencia,registro_plano,excluido,tipo,banco,agencia,conta_corrente, data_carencia, motivo_carencia,cpf,aproveitamento_carencia, titular) VALUES ('".addslashes(str_pad(trim($row2['CHAPA']),5,'0',STR_PAD_LEFT).".".str_pad(trim($row2['SEQ']),5,'0',STR_PAD_LEFT))."','".addslashes(trim($row2['NOME']))."','".addslashes(str_pad(trim($row2['CHAPA']),5,'0',STR_PAD_LEFT)).".".str_pad(trim($row2['SEQ']),5,'0',STR_PAD_LEFT)."','".addslashes(trim($row2['CNS']))."','{$sexo2}','{$ingresso2}','{$nascimento2}','{$dados_municipio['ibge']}','01','{$cancelamento2}','D','','','','{$data_carencia2}','".addslashes(trim($row2['DBO']))."','{$cpf2}','N','".addslashes(str_pad(trim($row2['CHAPA']),5,'0',STR_PAD_LEFT)).".00000')"; //echo "<br>"; //exit(); if(!mysql_query($query2)) { echo $query2; echo "<br><br>"; $erro = true; break; } } } } } if($erro == true) { ?> <script> alert('Erro ao importar beneficiarios!'); document.location.replace('panel.php?m=beneficiarios&a=index.php'); </script> <? exit(); }else { ?> <script> alert('Sucesso ao importar beneficiarios!'); document.location.replace('panel.php?m=beneficiarios&a=listar.php'); </script> <? exit(); } ?>
Agora, aparentemente, o erro 500 sumiu, mas o script não importa todos os registros do DBF para o banco MySql.
São ao total ~15.000 registros, e ele só importa no máximo 4.000 .
12/01/2018
Alex William
Depois de anos, me esqueci de fechar o tópico!!!
Resolvi esse problema separando a leitura do arquivo do upload.
Gerei um script para upload e depois de upar, redirecionava para o script de leitura em outra pagina.
Agradeço todos que tentaram me ajudar. Muito obrigado mesmo.
Tudo de bom, paz e saúde pra vcs! :D
Clique aqui para fazer login e interagir na Comunidade :)