PHP register_globals: Solucionando erros comuns

Erros relacionados a register_globals são muito comuns no PHP. As mensagens normalmente são:

Error: Directive 'register_globals' is deprecated in PHP 5.3 and greater

E também:

FATAL ERROR: register_globals is disabled in php.ini

Por que o erro register_globals ocorre ?

Nas versões 5.4 e mais recentes do PHP, a diretiva register_globals foi descontinuada. Esta diretiva servia, para de uma forma fácil pegar todos os parametros $_GET e $_POST e transformá-los de forma automática em variáveis locais. Por exemplo, um formulário com variáveis $_POST[‘nome’] e $_POST[‘telefone’] , com o register_globals ativado, são transformadas automaticamente para as variaveis $nome e $telefone. Nas versões mais novas, esta função foi desabilitada por colocar em risco a segurança de muitas aplicações em PHP.

Mostraremos duas formas de se resolver este problema.

Método 1 : Usando o extract()

O comando extract nada mais é do que a mesma coisa que o register_globals , quando habilitado, fazia nas versões antigas do PHP (5.3 e anteriores). Ele pega todo o conteúdo do $_GET e $_POST e os transforma em variáveis locais.

Esta solução é bastante simples. Basta adicionar esta linha ao início do seu código fonte em PHP:

<?php
extract($_REQUEST);
?>

Método 2: Habilitando o register_globals novamente

Algumas aplicações não permitem este tipo de edição de código fonte. Desta forma, para solucionar este erro, precisaremos alterar a versão do PHP para 5.3 (caso estejamos usando um PHP mais recente), e habilitar a esta diretiva.

O primeiro passo é acessar seu painel de controle cPanel. Para isso, acesse http://meusite.com:2082 , alterando meusite.com pelo domínio do seu site.

Em seguida, clique sobre a opção Select PHP Version.

alterar versao do php no cpanel 1

Na tela do PHP Selector, você pode ver a versão atual do PHP. Neste exemplo, nosso PHP está na versão 5.6.

Conforme mencionamos antes, o register_globals foi desabilitado nas versões 5.4 e superior.

Para solucionar o problema, selecione a versão 5.3 e clique em Set as current.

register_globals 1

Em seguida, clique em Switch to PHP Options

 

register_globals 2

Em seguida, localize o parametro register_globals. Ele estará marcado como Off (desabilitado).

Clique sobre o texto Off , conforme indicado na imagem.

register_globals 3

Em seguida, altere ele para On e clique em Aplicar.

register_globals 4

Observe o valor do parametro já alterado.

register_globals 5

Em seguida, clique em Salvar.

max_execution_time 4

Pronto! O register_globals está habilitado, e o erro solucionado!

Este artigo foi útil?

Obrigado pela resposta!
Picture of Gustavo Carvalho

Gustavo Carvalho

Analista de sistemas, formado pela PUC-Rio. Programador, gestor de redes e diretor da empresa Homehost. Pai do Bóris, seu pet de estimação. Gosta de rock'n'roll, cerveja artesanal e de escrever sobre assuntos técnicos.

Contato: gustavo.blog@homehost.com.br

Ganhe 30% OFF

Indique seu nome e e-mail,e ganhe um cupom de desconto de 30% para sempre na Homehost!