Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

opencag

problema com variavel (sistema antigo)

Recommended Posts

Boa tarde,

 

Tenho um sistema que rodava no ubuntu server 12, agora migramos para o ubuntu server 14 e está voltando um erro de variavel.

Parece que a nova versão do php é obrigatório declarar variavel.

 

Bom não gostariamos de mudar o fonte, até mesmo o sistema está rodando há 5 anos sem problemas.

 

Tem como mudar isso através do php.ini ?

 

o erro é este:

 

 

PHP Notice:  Undefined variable: l

tentei colocar:

 

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE

 

Dessa maneira não aparece mais o erro, mas fica tudo em branco.

 

Acredito que está somente escondendo o log de NOTICE utilizando este parametro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode ocultar as mensagens de erro. Isso é um tanto feio, mas em ambiente de produção é o recomendado.

 

No seu php.ini, encontre a linha onde há a diretiva display_errors. Deixe-a em Off, desta forma:

 

display_errors = Off

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema não é ocultar, o problema é que tem erro no fonte (Essa versão obriga declarar a variável).


tentei colocar assim:

 

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE

 

O erro para, mas acredito que está somente ocultando o erro.

 


Um exemplo, na versão 5.4 era permitido fazer assim:

 

 
echo $REMOTE_ADDR
 

 

A versão 5.5 não funciona, acho que vou ser obrigado a fazer um downgrade do php.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não tem a ver com versão do PHP. isso está ligado com a configuração do php.ini. Não existe "declaração" de variável e isso não mudou do PHP 5.4 pro 5.5. O erro que você mencionou no post #1 está ligado com o uso de uma variável inexistente, sem valor.

 

já o caso do $REMOTE_ADDR está ligado ao register_globals. Com ele ativo, era possível fazer isso. Com ele desativado, somente é possível pegar o IP com a variável correta: $_SERVER['REMOTE_ADDR']. O PHP 5.4 já não trazia mais suporte a register_globals. E ela sempre veio inativa desde o PHP 4.2. Se o servidor anterior estava com essa diretiva ativada, é porque o programador ativou-a manualmente, o que não era recomendado.

 

Há duas soluções:

 

1. Corrigir o código, que você já mencionou que não deseja fazer

2. Esconder os erros

Compartilhar este post


Link para o post
Compartilhar em outros sites
na aplicação o registro de global já está ativa, e funcionava na versão 5.4.

Mesmo ativando a global no php.ini não funciona mais o $REMOTE_ADDR; na versa 5.5
Bom o arquivo .htaccess
php_flag register_globals on
php_flag magic_quotes_gpc on
tentei colocar:
AddHandler application/x-httpd-php54 .php
Mesmo assim acontece o erro.
obs: Já tentei copiar o php.ini anterior e colocar no novo mas o erro continua.
Na verdade o ubuntu 14+php5.5 não tem mais opção de register_global.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente você usava PHP 5.3 antes. O PHP 5.4+ não dá mais suporte a register_globals, nem magic_quotes nem safe_mode, como você pode ver no changelog aqui: http://php.net/releases/5_4_0.php

 

Ou seja, não há como ativar register_globals, seja por php.ini ou por .htaccess

 

Para que $REMOTE_ADDR funcione, pode usar extract(), como sugerido aqui: http://stackoverflow.com/a/16706242

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente o ubuntu server 12 utiliza os seguintes pacotes:

 

ii php5-cli 5.3.10-1ubuntu3.14 command-line interpreter for the php5 scripting language
ii php5-common 5.3.10-1ubuntu3.14 Common files for packages built from the php5 source
ii php5-curl 5.3.10-1ubuntu3.14 CURL module for php5
ii php5-gd 5.3.10-1ubuntu3.14 GD module for php5
ii php5-mcrypt 5.3.5-0ubuntu1 MCrypt module for php5
ii php5-mysql 5.3.10-1ubuntu3.14 MySQL module for php5
ii phpmyadmin 4:3.4.10.1-1 MySQL web administration
Acho que vou ser obrigado a fazer downgrade do php na versão 14 do Ubuntu Server ...
Será que não existe outra solução ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que vou ser obrigado a fazer downgrade do php na versão 14 do Ubuntu Server ...

É a saída mais simples, de fato.

 

 

Será que não existe outra solução ?

Veja as outras respostas do link que passei do Stack Overflow. Há algumas "gambiarras" para simular o comportamento de reigster_globals. Mas não sei dizer até onde elas são funcionais e confiáveis.

Fato é que register_globals não existe mais. Então habilitá-la será impossível. Apneas simular seu comportamento será viável. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei no google o pessoal colocando o seguinte código:

 

 

AddHandler application/x-httpd-php54 .php

 

Mas acredito que é algum pacote com várias versões do php.

 

Alguém sabe o nome desse pacote no ubuntu-server/debian7 etc... ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso só vai adicionar um handler específico para a versão 5.4. Essa técnica era bastante usada há alguns anos, quando os servidores suportavam PHP 4 e PHP 5.

 

Não vejo como isso pode te ajudar, pois você precisa rodar o sistema no PHP 5.3 e não precisa da versão 5.4 no servidor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho outras aplicações, como owncloud torrentflux etc...

 

Bom instalei o phpfarm e consegui rodar o php5.3.2 junto com a ultima versao estavel do php.

O problema é que agora preciso instalar a biblioteca ssh2 na versão do php5.3.2 e não estou conseguindo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.