Ticket #491 (closed melhoria: invalid)

Opened 15 years ago

Last modified 13 years ago

PHP 6

Reported by: rodsouza Owned by: alguem
Priority: média Milestone: Sandbox - Expresso 3.0
Component: API Version: sandbox
Severity: média Keywords: PHP 6
Cc: WorkGroup:

Description

O ExpressoLivre? não funciona no PHP 6 devido a problemas de codificação de caracteres.

Por exemplo:

$GLOBALSphpgw_info?server?webserve_url? = '/path';

O índice 'webserver_url' é criado por um resultado do Postgres, os demais estão definidos no código fonte.

var_dump( $GLOBALSphpgw_info?server?webserve_url? ); -> NULL

Para solucionar este problema identificou-se a necessidade de realizar uma tipagem do índice 'webserver_url' com '(binary)'.

var_dump( $GLOBALSphpgw_info?server?[(binary)'webserve_url'] ); -> string(5) "/path"

O operador de tipagem '(binary)' está disponível no PHP na versão 5.2.1. Utilizar o oprador '(string)' não surti efeito.

É totalmente inviável identificar todos os locais no código que apresentam esse problema.

Attachments

php.log.txt Download (243.1 KB) - added by rodsouza 14 years ago.
Exemplo do log gerado por uma única requisição.

Change History

comment:1 Changed 15 years ago by rodsouza

  • Type changed from defeito to tarefa

comment:2 Changed 15 years ago by wmerlotto

  • Type changed from tarefa to melhoria
  • Milestone set to Expresso 2.1

comment:3 Changed 14 years ago by wmerlotto

  • Milestone changed from Expresso 2.1 to Expresso 2.2

comment:4 Changed 14 years ago by rodsouza

Existem inúmeros problemas que não permitem a utilização da versão 6 do PHP (ainda não oficial).

Um problema que até o momento foi considerado é o inundamento do LOG com mensagens do PHP.

Mensagens essas muitas vezes são do tipo 'NOTICE' porém algumas delas são de funções que estão sob estado de depreciação.

O outro problema é a utilização de espaço físico desnecessário além de atrapalhar a visualização de mensagens relevantes.

comment:5 Changed 14 years ago by rodsouza

Mitigando situações que criam inundam o LOG.

  • login.php
  • phpgwapi/templates/default/login_default.php

Committed revision r1734.

comment:6 Changed 14 years ago by rodsouza

Mitigando situações que criam inundam o LOG.

  • expressoMail1_2/controller.php
  • expressoMail1_2/inc/class.db_functions.inc.php
  • phpgwapi/inc/class.db.inc.php

Committed revision r1738.

comment:7 Changed 14 years ago by rodsouza

Mitigando situações que criam inundam o LOG.

  • expressoMail1_2/inc/class.imap_functions.inc.php
  • expressoMail1_2/inc/class.message_components.inc.php

Committed revision r1739.

comment:8 Changed 14 years ago by rodsouza

Mitigando situações que criam inundam o LOG.

  • expressoMail1_2/inc/class.imap_functions.inc.php
  • expressoMail1_2/inc/class.ldap_functions.inc.php

Committed revision r1740.

comment:9 Changed 14 years ago by niltonneto

Essa melhoria é uma pendência que existia há muito tempo. Mesmo no php5, se o error_reporting estiver como "E_ALL" e não seu valor default, "E_ALL & ~E_NOTICE", várias problemas nas requisições AJAX poderão aparecer, resultando no mal funcionamento do Expresso em várias casos. Muito relevante sua implementação.

comment:10 Changed 14 years ago by rodsouza

A situação adversa do que foi feito é a seguinte:

A verificação feita para mitigar o problema é feita (na maioria dos casos) por meio da função isset() em conjunto com o operador ternário. O problema é que o retorno do operador é NULL, assim existe a necessidade de verificar os locais onde está sendo exibido esse valor na interface e alterar o retorno do operador para uma string vazia.

Em anexo está um exemplo do log de uma requisição. Essa requisição gerou um log de 244K.

Changed 14 years ago by rodsouza

Exemplo do log gerado por uma única requisição.

comment:11 Changed 14 years ago by rodsouza

Na revisão r1740 foi atribuido o valor NULL caso a mensagem não possua valor para Subject, assim ao invés de ser exibido o Subject em branco, aparecia a palavra null.

O valor NULL foi alterado por uma string vazia quando a mensagem não possui assunto.

Condorme dito anteriormente deve existir outros locais que a mesma situação indesejada ocorre.

expressoMail1_2/inc/class.imap_functions.inc.php

Committed revision r1751.

comment:12 Changed 14 years ago by amuller

  • Milestone changed from Expresso 2.2 to Expresso 3.0

comment:13 Changed 14 years ago by rodsouza

  • Status changed from new to closed
  • Resolution set to invalid
  • Severity set to média

Os problemas que dizem respeito ao PHP 6 não serão mais problemas. Vide:  http://news.php.net/php.internals/48974

Assim estou invalidando o presente ticket, os assuntos relacionados deverão ser tratados em tickets específicos.

comment:14 Changed 13 years ago by niltonneto

  • Version changed from trunk to sandbox
  • Milestone changed from Backlog - Não planejado to Expresso 3.0

comment:15 Changed 13 years ago by rodsouza

Por que esse ticket está sendo alterado? Ele não está fechado, além de ser inválido??!?!?

comment:16 Changed 13 years ago by niltonneto

Tickets finalizados estão sendo realocados para o Marco (milestone) correto. Existe um novo milestone criado para ticket pendentes e ainda não planejados. Apenas isso.

Note: See TracTickets for help on using tickets.