Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Erro count(): Argument #1 ($value) must be of type Countable - array, null given

More
3 hours 20 minutes ago #272614 by perrang
Meu form possui um link de ativação (token) que é enviado ao e-mail do usuário quando esse se inscreve. Porém, ao clicar no link (anexo) o seguinte erro é apresentado.

500: Internal Server Error
count(): Argument #1 ($value) must be of type Countable|array, null given


Pesquisando, li que isso acontece porque a partir das versão 7.2 do PHP a linguagem passou a determinar que a função count() e algumas operações que esperam array ou objeto Countable não aceitam mais null. 

Considerando que esse formulário foi criado há alguns anos atrás e nós não temos para curto prazo a opção de atualizar nosso sistema, onde poderia eu encontrar uma maneira de inserir um pequeno remendo pra resolver esse bug temporariamente?

Por favor, ajude-nos a ajudá-lo e preencha os seguintes campos:.
A sua versão do LimeSurvey: Versão 3.25.21+210407
Servidor próprio ou LimeSurvey Cloud: servidor próprio
Modelo de desenho utilizado: vanilla
==================

Please Log in to join the conversation.

More
3 hours 14 minutes ago #272615 by holch
Meu deus, que coisa antiga, kkkk

A sua instalação foi lançada dia 07/04/2021, quase 4,5 anos atras.

A versão 3.x já é EOL ha um bom tempo.

Provavelmente teria que reverter a versão do PHP, que não recomendo.

Fazer um upgrade para a versão LS 6.x seria bem mais fácil, eu acho.

Help us to help you!
  • Provide your LS version and where it is installed (own server, uni/employer, SaaS hosting, etc.).
  • Always provide a LSS file (not LSQ or LSG).
Note: I answer at this forum in my spare time, I'm not a LimeSurvey GmbH employee.

Please Log in to join the conversation.

More
2 hours 26 minutes ago #272616 by perrang
É... eu sei. Entrei na empresa há pouco tempo e não tinha trabalhado até então com o Lime Survey. Aqui eles vão replicando os dados e não mexem naquilo que está funcionando até que um belo dia para de funcionar e joga a bomba na mão de quem está entrando. Eu, no caso.

A solução que vc deu é a que eu pensei. Fazer o downgrade do PHP não é possível. Nossa hospedagem só permite atualizar e não regredir. Portanto, seria o caso de atualizar o Lime Survey. Mas... como estamos em plena campanha, não considero por hora essa atualização sem antes saber se terei mais problemas quanto a pegar um aplicativo com formulários criados 4 anos atrás (ou mais, vai saber...) e ter que lidar com mais problemas ainda.

Em determinado momento até pensei em procurar esse count() e colocar um if antes dele pra garantir que o valor que chega nele não seja null, mas a verdade é que eu estaria fazendo mais uma gambiarra pra consertar essa situação.

Please Log in to join the conversation.

More
12 minutes ago #272617 by holch

A solução que vc deu é a que eu pensei. Fazer o downgrade do PHP não é possível. Nossa hospedagem só permite atualizar e não regredir. Portanto, seria o caso de atualizar o Lime Survey.

Para ser honesto, também não recomendo. Se lembro bem, uma das razões porque LS 3 é EOL é porque não suporta uma versão de PHP atual.

Mas... como estamos em plena campanha, não considero por hora essa atualização sem antes saber se terei mais problemas quanto a pegar um aplicativo com formulários criados 4 anos atrás (ou mais, vai saber...) e ter que lidar com mais problemas ainda.


Geralmente o update/upgrade não causa grandes problemas. Mas claro, não da para garantir, especialmente em um upgrade de uma versão principal para outra como de LS3 para LS6.

Se vocês não tiverem algumas modificações (workarounds) nos questionários, geralmente a chance de problemas maiores é minimo.


[/quote]
Em determinado momento até pensei em procurar esse count() e colocar um if antes dele pra garantir que o valor que chega nele não seja null, mas a verdade é que eu estaria fazendo mais uma gambiarra pra consertar essa situação.
[/quote]

Isso é uma opção que poderia funcionar. A gambiarra você já tem com uma instalação LS3 instalada em um servidor com uma versão de PHP que não parece compativel.

O que eu recomendo: Instala o LS6 em paralelo, exporta o questionário como LSS (ou faz uma copia da versão atual da base de dados e instala a LS6 encima disso. Ai você tem um abiente de teste e você pode ver se tem problemas com os questionários na versão nova.

A instalação no seu servidor proprio é gratis e a instalação é bastante rapida e simples. Então acho que vale a pena. Se tudo estiver tranquilo na instalação de teste, você faz um backup da LS3 (arquivos, base de dados, etc.) e faz um update/upgrade. Se contra toda a expectativa tiver algum problema maior do que você está enfrentando agora, você volta a anterior.

Contratando o Comfort Update pode facilitar os updates e salvar tempo (mas não espere que te protege de eventuais problemas, podem occorer também com o Comfort Update. O Comfort Update oferece o que o nome diz: mais comforto ao fazer updates e upgrade, mas não te salva de fazer testes se tudo ainda está compativel. Como falei, se você usa só recursos padrão "out of the box" as chances de dar errado não são muito grande, mas como você herdeu o sistema, você não sabe se não tem algum workaround ou customização via CSS e Javascript foi implementado).

Mas de qualquer maneira, seja o que for: Eu recomendo mudar para o LS6 pouco a pouco. LS mudou bastante desde 2021. Uma opção é instalar LS6 em paralelo e mudar os questionários pouco a pouca para a nova instalação. Termina as pesquisas na LS3 e qualquer nova começa no LS6.

Help us to help you!
  • Provide your LS version and where it is installed (own server, uni/employer, SaaS hosting, etc.).
  • Always provide a LSS file (not LSQ or LSG).
Note: I answer at this forum in my spare time, I'm not a LimeSurvey GmbH employee.

Please Log in to join the conversation.

Moderators: holchtpartner

Lime-years ahead

Online-surveys for every purse and purpose