Ticket #646 (closed defeito: invalid)
Erro ao criar usuário no ExpressoAdmin
Reported by: | wmerlotto | Owned by: | alguem |
---|---|---|---|
Priority: | grave | Milestone: | Expresso 2.0 |
Component: | ExpressoAdmin | Version: | trunk |
Severity: | Keywords: | ||
Cc: | WorkGroup: |
Description
Fui criar um novo usuário pelo ExpressoAdmin e após acessar a interface de "Contas de usuários" a tag "Carregando..." no canto superior direito não saía e ainda não conseguia selecionar os grupos para o novo usuário. Nos logs do apache/php só apareceu isso:
PHP Fatal error: Call to undefined function lang() in /var/www/html/trunk/phpgwapi/inc/class.common.inc.php on line 329
Estou utilizando CentOS-5.3 com php-5.2.6 e navegador firefox-3.5.
Change History
comment:2 follow-up: ↓ 4 Changed 15 years ago by rodsouza
Isso não é problema diretamente ligado ao ExpressoLivre?.
comment:3 in reply to: ↑ 1 Changed 15 years ago by wmerlotto
Replying to niltonneto:
Só nessa distribuição ocorre o problema?
Não pude testar em outras distribuições, mas também está ocorrendo com outras versões do PHP.
comment:4 in reply to: ↑ 2 Changed 15 years ago by wmerlotto
Replying to rodsouza:
Isso não é problema diretamente ligado ao ExpressoLivre?.
Ok, pode não ser, mas então onde está o problema?
comment:5 follow-ups: ↓ 6 ↓ 22 Changed 15 years ago by niltonneto
Testei aqui no Ubuntu 8.10 e Debian Lenny, PHP 5.2.6 em ambos, e funcionou normalmente. Talvez haja alguma diferença no seu php.ini. Dá uma olhada e compare com php.ini da dist Debian....
comment:6 in reply to: ↑ 5 Changed 15 years ago by wmerlotto
Replying to niltonneto:
Testei aqui no Ubuntu 8.10 e Debian Lenny, PHP 5.2.6 em ambos, e funcionou normalmente. Talvez haja alguma diferença no seu php.ini. Dá uma olhada e compare com php.ini da dist Debian....
Está estranho... Revisei toda a configuração do php.ini e aumentei os logs. O problema ainda persiste, e estes são os logs registrados no servidor:
PHP Notice: Undefined index: _action in /var/www/expresso/expressoAdmin1_2/controller.php on line 4 PHP Notice: Undefined offset: 2 in /var/www/expresso/expressoAdmin1_2/controller.php on line 19 PHP Notice: Undefined offset: 1 in /var/www/expresso/expressoAdmin1_2/controller.php on line 19 PHP Notice: Undefined index: _action in /var/www/expresso/expressoAdmin1_2/controller.php on line 4 PHP Notice: Undefined offset: 2 in /var/www/expresso/expressoAdmin1_2/controller.php on line 19 PHP Notice: Undefined offset: 1 in /var/www/expresso/expressoAdmin1_2/controller.php on line 19 PHP Notice: Undefined index: _action in /var/www/expresso/expressoAdmin1_2/controller.php on line 4 PHP Notice: Constant PHPGW_INCLUDE_ROOT already defined in /var/www/expresso/expressoAdmin1_2/inc/class.db_functions.inc.php on line 2 PHP Notice: Constant PHPGW_API_INC already defined in /var/www/expresso/expressoAdmin1_2/inc/class.db_functions.inc.php on line 3 PHP Notice: Undefined index: _action in /var/www/expresso/expressoAdmin1_2/controller.php on line 4 PHP Notice: Undefined index: _action in /var/www/expresso/expressoAdmin1_2/controller.php on line 4 PHP Notice: Constant PHPGW_INCLUDE_ROOT already defined in /var/www/expresso/expressoAdmin1_2/inc/class.db_functions.inc.php on line 2 PHP Notice: Constant PHPGW_API_INC already defined in /var/www/expresso/expressoAdmin1_2/inc/class.db_functions.inc.php on line 3 PHP Notice: Undefined variable: _SESSION in /var/www/expresso/expressoAdmin1_2/inc/class.ldap_functions.inc.php on line 26 PHP Notice: Undefined variable: _SESSION in /var/www/expresso/expressoAdmin1_2/inc/class.ldap_functions.inc.php on line 27 PHP Notice: Undefined index: phpgw in /var/www/expresso/phpgwapi/inc/class.common.inc.php on line 324 PHP Notice: Trying to get property of non-object in /var/www/expresso/phpgwapi/inc/class.common.inc.php on line 324 PHP Fatal error: Call to undefined function lang() in /var/www/expresso/phpgwapi/inc/class.common.inc.php on line 329
Alguém tem uma dica?
comment:7 follow-up: ↓ 8 Changed 15 years ago by niltonneto
Desligue o notice. Em php.ini: error_reporting = E_ALL & ~E_NOTICE
comment:8 in reply to: ↑ 7 Changed 15 years ago by wmerlotto
Replying to niltonneto:
Desligue o notice. Em php.ini: error_reporting = E_ALL & ~E_NOTICE
Então, ativei o notice justamente para ver se ajudava... Sem o notice o erro continua o mesmo descrito no ticket.
comment:9 Changed 15 years ago by niltonneto
Humm, você está com problema de bind no LDAP. Não está deixando nem logar como anonimo. Mas no ExpressoAdmin, por causa disso, você descobriu um bug quando há esse tipo de problema realmente. Pelo código que vi, acho que a chamada ajax não está incluindo o PHP que contém a função lang(), gerando esse erro. Agora sim, vou tentar reproduzi-lo aqui. E você, dá uma olhada no teu setup. Pode ter alguma configuração do LDAP errada lá....
comment:10 follow-up: ↓ 12 Changed 15 years ago by niltonneto
Consegui reproduzir o erro. Em setup, configurações, você ter preenchido o item "If using LDAP replication" errado. Se você utiliza o mesmo ldap para leitura e escrita, deixa tudo em branco. Em relação ao bug "PHP Fatal error: Call to undefined function lang()", vou verificar.
comment:11 Changed 15 years ago by wmerlotto
Replying to niltonneto:
Humm, você está com problema de bind no LDAP. Não está deixando nem logar como anonimo.
É apareceram algumas mensagens relacionadas ao bind mesmo...
ldap_bind() [<a href='function.ldap-bind'>function.ldap-bind</a>]: Unable to bind to server: Invalid credentials in /var/www/expresso/setup/index.php on line 422
Mas no ExpressoAdmin, por causa disso, você descobriu um bug quando há esse tipo de problema realmente. Pelo código que vi, acho que a chamada ajax não está incluindo o PHP que contém a função lang(), gerando esse erro. Agora sim, vou tentar reproduzi-lo aqui.
Ok!
E você, dá uma olhada no teu setup. Pode ter alguma configuração do LDAP errada lá....
Cara, revisei o setup e está ok. Tanto que acesso o menu "Organizações" do módulo ExpressoAdmin sem problemas.
Só para confirmar, não é necessário configurar o servidor master do LDAP, correto?
comment:12 in reply to: ↑ 10 ; follow-up: ↓ 14 Changed 15 years ago by wmerlotto
Replying to niltonneto:
Consegui reproduzir o erro. Em setup, configurações, você ter preenchido o item "If using LDAP replication" errado. Se você utiliza o mesmo ldap para leitura e escrita, deixa tudo em branco.
Então, sempre esteve em branco... Não alterei estas opções.
Em relação ao bug "PHP Fatal error: Call to undefined function lang()", vou verificar.
comment:13 Changed 15 years ago by niltonneto
Só consegui reproduzir esse problema salvando, e de forma errada, as configurações do ldap master. Se eu salvo em branco (utilização padrão), saio e entro novamente no Expresso, então ele funciona sem erros.
comment:14 in reply to: ↑ 12 ; follow-ups: ↓ 15 ↓ 16 Changed 15 years ago by niltonneto
Corrigido em [1414]. Refere-se ao bug "PHP Fatal error: Call to undefined function lang()". Verifique no Firebug ou no console Javascript, qual erro de LDAP bind retornado.
comment:15 in reply to: ↑ 14 Changed 15 years ago by wmerlotto
Replying to niltonneto:
Corrigido em [1414]. Refere-se ao bug "PHP Fatal error: Call to undefined function lang()".
Maravilha! Agora os erros do bind estão mais visíveis:
PHP Warning: ldap_bind() [<a href='function.ldap-bind'>function.ldap-bind</a>]: Unable to bind to server: Can't contact LDAP server in /var/www/expresso/expressoAdmin1_2/inc/class.ldap_functions.inc.php on line 100 PHP Warning: ldap_list(): supplied argument is not a valid ldap link resource in /var/www/expresso/expressoAdmin1_2/inc/class.ldap_functions.inc.php on line 690 PHP Warning: ldap_sort() expects parameter 1 to be resource, boolean given in /var/www/expresso/expressoAdmin1_2/inc/class.ldap_functions.inc.php on line 691 PHP Warning: ldap_get_entries(): supplied argument is not a valid ldap link resource in /var/www/expresso/expressoAdmin1_2/inc/class.ldap_functions.inc.php on line 693
Verifique no Firebug ou no console Javascript, qual erro de LDAP bind retornado.
No console do javascript este erro é retornado:
Error: Can't bind to LDAP server (anonymous bind): <p>ADONewConnection: Unable to load database driver ''</p><p>ADONewConnection: Unable to load database driver ''</p><p>ADONewConnection: Unable to load database driver ''</p>s:0:"";
comment:16 in reply to: ↑ 14 ; follow-up: ↓ 17 Changed 15 years ago by wmerlotto
Replying to niltonneto:
Corrigido em [1414]. Refere-se ao bug "PHP Fatal error: Call to undefined function lang()". Verifique no Firebug ou no console Javascript, qual erro de LDAP bind retornado.
Nilton, vc sabe me dizer quais parâmetros o ExpressoAdmin consulta no banco de dados para daí efetuar o login no LDAP? Acho que o problema está no banco...
comment:17 in reply to: ↑ 16 ; follow-up: ↓ 18 Changed 15 years ago by niltonneto
Replying to wmerlotto:
Replying to niltonneto:
Corrigido em [1414]. Refere-se ao bug "PHP Fatal error: Call to undefined function lang()". Verifique no Firebug ou no console Javascript, qual erro de LDAP bind retornado.
Nilton, vc sabe me dizer quais parâmetros o ExpressoAdmin consulta no banco de dados para daí efetuar o login no LDAP? Acho que o problema está no banco...
Percebi que no teu caso, ele está caindo no "if" do bind anônimo. Isso quer dizer que o ldap_master está em branco na base de dados, que é o correto. Resta saber porque teu ldap está recusando binds anônimos....Dá uma olhada no log dele, no momento de carregar essa tela.
comment:18 in reply to: ↑ 17 Changed 15 years ago by wmerlotto
Replying to niltonneto:
Percebi que no teu caso, ele está caindo no "if" do bind anônimo. Isso quer dizer que o ldap_master está em branco na base de dados, que é o correto. Resta saber porque teu ldap está recusando binds anônimos....Dá uma olhada no log dele, no momento de carregar essa tela.
Cara, o pior de tudo é que meu LDAP está aceitando bind anônimo. Acabei de testar pelo phpLDAPadmin.
Debugando com o firebug, percebi que quando ele executa esta requisição .../index.php?menuaction=expressoAdmin1_2.uiaccounts.add_users, no cookie a variável ConfigPW=xxxxx está com uma senha que não tem nada haver com a senha do LDAP. Nilton, vc saberia me dizer de onde ele pega esta senha?
comment:19 Changed 15 years ago by wmerlotto
Bom, ignorem meu último comentário... Não tem nada haver... Mas enfim, fiquei procurando o problema e a autenticação sempre falhava na linha expressoAdmin1_2/inc/class.ldap_functions.inc.php:101:
$ldap_connection = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); if ($ldap_connection) { ldap_set_option($ldap_connection,LDAP_OPT_PROTOCOL_VERSION,3); ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, true); if ( ldap_bind($ldap_connection, $GLOBALS['phpgw_info']['server']['ldap_root_dn'], $GLOBALS['phpgw_info']['server']['ldap_root_pw']) ) return $ldap_connection; <= AQUI
Substituí as GLOBALS pelos valores correspondentes do LDAP e funcionou. Ao menos não é reportado mais erro neste ponto, mas sim em outros:
PHP Warning: ldap_list(): supplied argument is not a valid ldap link resource in /var/www/expresso/expressoAdmin1_2/inc/class.ldap_functions.inc.php on line 690 PHP Warning: ldap_sort() expects parameter 1 to be resource, boolean given in /var/www/expresso/expressoAdmin1_2/inc/class.ldap_functions.inc.php on line 691 PHP Warning: ldap_get_entries(): supplied argument is not a valid ldap link resource in /var/www/expresso/expressoAdmin1_2/inc/class.ldap_functions.inc.php on line 693 PHP Warning: ldap_list(): supplied argument is not a valid ldap link resource in /var/www/expresso/expressoAdmin1_2/inc/class.ldap_functions.inc.php on line 1764 PHP Warning: ldap_get_entries(): supplied argument is not a valid ldap link resource in /var/www/expresso/expressoAdmin1_2/inc/class.ldap_functions.inc.php on line 1765
Alguém tem alguma ideia do que pode estar acontecendo?
comment:20 follow-up: ↓ 21 Changed 15 years ago by niltonneto
O session.auto_start tá ligado no php.ini?
comment:21 in reply to: ↑ 20 ; follow-up: ↓ 24 Changed 15 years ago by wmerlotto
- Status changed from new to closed
- Resolution set to invalid
Replying to niltonneto:
O session.auto_start tá ligado no php.ini?
Resolvido! O session.auto_start não estava ativo... Acabei comentando esta linha nas configurações. Desculpe pela falha.
Estou encerrando o ticket. Valeu!
comment:22 in reply to: ↑ 5 ; follow-up: ↓ 23 Changed 15 years ago by niltonneto
Replying to niltonneto:
Testei aqui no Ubuntu 8.10 e Debian Lenny, PHP 5.2.6 em ambos, e funcionou normalmente. Talvez haja alguma diferença no seu php.ini. Dá uma olhada e compare com php.ini da dist Debian....
E eu ainda falei para comparar o php.ini !!!! HE HE HE!! Mas tudo bem, pelo menos resolveu aí. Abraço.
comment:23 in reply to: ↑ 22 Changed 15 years ago by wmerlotto
Replying to niltonneto:
Replying to niltonneto:
Testei aqui no Ubuntu 8.10 e Debian Lenny, PHP 5.2.6 em ambos, e funcionou normalmente. Talvez haja alguma diferença no seu php.ini. Dá uma olhada e compare com php.ini da dist Debian....
E eu ainda falei para comparar o php.ini !!!! HE HE HE!! Mas tudo bem, pelo menos resolveu aí. Abraço.
Pois é, eu deixo estas configurações no apache, via php_value session.auto_start 1 e acabei comentando a linha sem querer... Valeu!
comment:24 in reply to: ↑ 21 ; follow-up: ↓ 25 Changed 15 years ago by rodsouza
Replying to wmerlotto:
Replying to niltonneto:
O session.auto_start tá ligado no php.ini?
Resolvido! O session.auto_start não estava ativo... Acabei comentando esta linha nas configurações. Desculpe pela falha.
Estou encerrando o ticket. Valeu!
ESSA CONFIGURAÇÃO NÃO DEVE ESTAR COMO 'ON'....
DEVE ESTAR 'OFF'...
comment:25 in reply to: ↑ 24 Changed 15 years ago by wmerlotto
Replying to rodsouza:
Replying to wmerlotto:
Replying to niltonneto:
O session.auto_start tá ligado no php.ini?
Resolvido! O session.auto_start não estava ativo... Acabei comentando esta linha nas configurações. Desculpe pela falha.
Estou encerrando o ticket. Valeu!
ESSA CONFIGURAÇÃO NÃO DEVE ESTAR COMO 'ON'....
DEVE ESTAR 'OFF'...
Bom, então vamos entrar em um consenso. Neste comentário do ticket #559, está dito para deixar o sessio.auto_start e session.use_cookies como 0, OFF, desativado. E fiz isso desde que esta alteração foi recomendada, em 02/07/09.
Até então, não tinha testado completamente o ExpressoAdmin e ontem, quando fui utilizá-lo encontrei os problemas relatados acima neste ticket.
Após o comentário do Nilton, de ativar o session.auto_start, verifiquei no arquivo de instalação do Debian e o mesmo está ativo.
Lembrando que o ExpressoAdmin só voltou a funcionar corretamente após ativar esta opção no php.ini ou mesmo no apache.
Então, qual é a forma correta??
comment:26 Changed 15 years ago by niltonneto
Realmente, quando desativo a diretiva "session.auto_start", no meu ambiente Debian, esse problema aparece. Se session.auto_start e use_cookies devem ficar desativados como foi dito, sugiro que o ticket #552 seja reaberto e somente fechado até que se corrija isso no ExpressoAdmin, e em todos os outros lugares. Do contrário, mantemos esses valores em "1" e pronto.
comment:27 Changed 15 years ago by wmerlotto
Ok! Vou reabrir o ticket #552 e este ficará como fechado/inválido.
comment:28 Changed 15 years ago by niltonneto
Opa, escrevi errado. É o ticket #559.
Só nessa distribuição ocorre o problema?