🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir a incompatibilidade do Tutor LMS com PHP 8.3

Time Full Services Time Full Services
Tipo Erro de PHP
Nome do erro Incompatibilidade do Tutor LMS com PHP 8.3 EN: Tutor LMS PHP 8.3 compatibility error
Severidade Grave
Descrição A incompatibilidade do Tutor LMS com PHP 8.3 acontece quando uma versão do plugin escrita para PHP 7.4 roda num servidor já no PHP 8.3, gerando avisos de Deprecated e, em alguns casos, erro fatal ao salvar cursos ou abrir o construtor de quiz. A documentação oficial homologa o plugin a partir do PHP 7.4.

O que é a incompatibilidade do Tutor LMS com PHP 8.3?

A incompatibilidade do Tutor LMS com PHP 8.3 é o conjunto de avisos e erros que aparece quando uma versão antiga do plugin de cursos roda num host já atualizado para o PHP 8.3. A documentação do Tutor LMS exige PHP 7.4 ou superior e a versão 2.6.0 confirmou compatibilidade até o PHP 8.2; o 8.3 ficou fora dessa homologação. Por isso, construções do plugin anteriores ao suporte ao 8.3 disparam avisos de Deprecated (como criação de propriedade dinâmica em classe e passagem de null para parâmetro que não aceita null) e, em pontos específicos do editor de cursos e do construtor de quiz, podem evoluir para erro fatal que derruba a tela. O site segue funcionando para o visitante na maioria dos casos; o problema concentra-se no painel e nas telas do próprio Tutor LMS.

Como identificar

  • Avisos repetidos no formato “Deprecated: Creation of dynamic property” citando uma classe do diretório wp-content/plugins/tutor, gravados no debug.log.
  • Mensagem “Deprecated: trim(): Passing null to parameter #1 of type string is deprecated” ou variações com strlen, explode e htmlspecialchars apontando arquivos do Tutor LMS.
  • Erro fatal “Uncaught TypeError” ou tela branca ao salvar um curso, publicar uma aula ou abrir o construtor de quiz do Tutor LMS.
  • O painel de cursos do Tutor LMS carrega quebrado ou em branco logo após o host migrar o plano para o PHP 8.3.
Antes de começar: Faça backup completo do site, ou ao menos do banco e da pasta wp-content, antes de atualizar plugins ou trocar a versão do PHP. Nunca edite arquivos do Tutor LMS direto: qualquer remendo some na próxima atualização. Desligar WP_DEBUG_DISPLAY apenas oculta o aviso do visitante; a correção real é atualizar o plugin para a versão compatível com o PHP 8.3.

Como prevenir

  • Antes de migrar o host para uma versão nova do PHP, confira em Saúde do Site se os plugins ativos, incluindo o Tutor LMS, declaram suporte àquela versão
  • Mantenha o Tutor LMS Free, o Tutor LMS Pro e todos os addons sempre na mesma geração e atualizados juntos
  • Em produção, deixe WP_DEBUG_DISPLAY como false e acompanhe o debug.log para pegar avisos de Deprecated antes que virem erro fatal
  • Teste a troca de versão do PHP primeiro num ambiente de staging, com o construtor de cursos e o de quiz, antes de aplicar no site no ar

Causa

  • Versão do Tutor LMS anterior ao suporte ao PHP 8.3 rodando num servidor já no PHP 8.3, enquanto a documentação homologa apenas até o PHP 8.2.
  • Servidor configurado em PHP 8.3 com WP_DEBUG e WP_DEBUG_DISPLAY ligados, expondo na tela cada aviso de Deprecated emitido pelo plugin.
  • Tutor LMS Pro ou um addon do Tutor LMS em versão desatualizada, incompatível com a versão Free já atualizada e com o PHP 8.3.
  • Criação de propriedade dinâmica em classes do plugin, que o PHP 8.2 marcou como Deprecated e o PHP 8.3 mantém, comum em código escrito para o PHP 7.4.
  • Funções de string do plugin recebendo null onde o PHP 8.3 espera string, como em campos de curso ou de aula deixados vazios.

Como resolver

  1. Confirme a versão do PHP do servidor: antes de tudo, identifique em qual versão o host está rodando. Crie um arquivo de teste na raiz ou use a Saúde do Site do WordPress, em Ferramentas, para ver a versão ativa do PHP.
    wp-admin -> Ferramentas -> Saúde do site -> Informações -> Servidor
  2. Atualize o Tutor LMS e o Tutor LMS Pro: a correção principal é usar a versão do plugin que já trata o PHP 8.3. Atualize o Tutor LMS Free e, se existir, o Tutor LMS Pro e os addons, para a versão mais recente, sempre com backup antes.
    wp-admin -> Plugins -> Atualizações disponíveis
    wp plugin update tutor
    wp plugin update tutor-pro
  3. Esconda os avisos do visitante enquanto corrige: se os avisos estão aparecendo na tela em produção, registre-os no log e remova a exibição para o público. Edite o wp-config.php acima da linha que pede para parar de editar.
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_DISPLAY', false );
    define( 'WP_DEBUG_LOG', true );
    @ini_set( 'display_errors', 0 );
  4. Identifique o arquivo exato no debug.log: abra o log de depuração e localize as linhas que citam o diretório do Tutor LMS. Elas apontam a classe ou a função que dispara o Deprecated ou o erro fatal, o que confirma se a origem é o Free, o Pro ou um addon.
    wp-content/debug.log
  5. Use o PHP 8.2 como medida temporária se a tela ainda quebrar: se a versão atualizada ainda não cobrir o PHP 8.3 e uma tela continuar dando erro fatal, volte o servidor para o PHP 8.2, que é a versão homologada na documentação, pelo painel do host. Mantenha como ponte até a próxima atualização do plugin.
    Painel do host -> Selecionar versão do PHP -> 8.2
PHP
// Snippet de tema/site que ALIMENTA o Tutor LMS e dispara Deprecated no PHP 8.3
// quando o valor chega null (campo de curso vazio). Proteja antes de passar a funcoes de string.

// ANTES (Deprecated: trim(): Passing null to parameter #1 ... no PHP 8.3):
$resumo = trim( get_post_meta( $course_id, '_tutor_course_summary', true ) );

// DEPOIS — coalescencia nula garante string antes do trim():
$resumo = trim( (string) ( get_post_meta( $course_id, '_tutor_course_summary', true ) ?? '' ) );

// Para silenciar SO os avisos de Deprecated em producao, sem esconder erros fatais:
add_action( 'init', function () {
    if ( ! WP_DEBUG_DISPLAY ) {
        error_reporting( error_reporting() & ~E_DEPRECATED & ~E_USER_DEPRECATED );
    }
} );

Perguntas frequentes

O Tutor LMS funciona no PHP 8.3?
A documentação oficial homologa o Tutor LMS a partir do PHP 7.4 e a versão 2.6.0 confirmou compatibilidade até o PHP 8.2. O PHP 8.3 ainda não está nessa homologação, então versões antigas do plugin podem disparar avisos de Deprecated e, em telas como o construtor de quiz, erro fatal. Use a versão mais recente do plugin.
Esse erro derruba todo o site?
Na maioria dos casos, não. Os avisos de Deprecated não são fatais e o visitante continua navegando. O problema se concentra no painel e nas telas do Tutor LMS, onde pode haver erro fatal ao salvar um curso ou abrir o quiz. Se uma tela específica fica branca, é ali que o conflito com o PHP 8.3 acontece.
Atualizar o plugin resolve sozinho?
Na maioria das vezes, sim. A versão do Tutor LMS que trata o PHP 8.3 já protege os acessos que disparavam o aviso. Atualize também o Tutor LMS Pro e os addons na mesma geração, porque uma parte desatualizada pode continuar emitindo o Deprecated mesmo com o Free já atualizado.
Por que o erro só apareceu depois que o host atualizou o PHP?
Porque o código do plugin não mudou; a versão do PHP que o avalia ficou mais rígida. Padrões que o PHP 7.4 aceitava, como criar propriedade dinâmica numa classe, viraram Deprecated no PHP 8.2 e seguem assim no 8.3. A migração do host expôs avisos que já estavam latentes.
Posso voltar para uma versão antiga do PHP para resolver?
Voltar para o PHP 8.2 é uma medida temporária válida, já que é a versão homologada na documentação. Serve de ponte enquanto você atualiza o plugin. Não trate como solução final: rodar versões antigas do PHP por muito tempo deixa o site sem correções de segurança da linguagem.
Como sei se o erro vem do Tutor LMS ou de outro plugin?
Abra o wp-content/debug.log e procure as linhas que citam o diretório wp-content/plugins/tutor. Se o caminho do arquivo aponta para essa pasta, a origem é o Tutor LMS ou um addon dele. Caminhos de outras pastas indicam que o conflito com o PHP 8.3 vem de outro plugin.
Preciso mexer no código do plugin para corrigir?
Não, e não deve. Editar arquivos do Tutor LMS é desaconselhado porque a alteração é perdida na próxima atualização. A correção correta é atualizar o plugin para a versão compatível com o PHP 8.3. Em código próprio, como um snippet de tema, é que vale checar valores nulos antes de passá-los a funções de string.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes