2
respostas

PHP Fatal error: Uncaught Error: Class 'DOMDocument' not found

Olá. Quando eu rodo o meu script buscar-cursos.php é gerado este erro:

PHP Fatal error:  Uncaught Error: Class 'DOMDocument' not found in /home/nljunior/Documentos/cursos/buscador-cursos-alura/vendor/symfony/dom-crawler/Crawler.php:1120
Stack trace:
#0 /home/nljunior/Documentos/cursos/buscador-cursos-alura/vendor/symfony/dom-crawler/Crawler.php(194): Symfony\Component\DomCrawler\Crawler->parseXhtml('<!DOCTYPE html>...', 'UTF-8')
#1 /home/nljunior/Documentos/cursos/buscador-cursos-alura/buscar-cursos.php(16): Symfony\Component\DomCrawler\Crawler->addHtmlContent(Object(GuzzleHttp\Psr7\Stream))
#2 {main}
  thrown in /home/nljunior/Documentos/cursos/buscador-cursos-alura/vendor/symfony/dom-crawler/Crawler.php on line 1120
`
<?php

require 'vendor/autoload.php';

use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;

$client = new Client();
$response = $client->request('GET', 'https://www.alura.com.br/cursos-online-programacao/php');

echo $response->getStatusCode() . PHP_EOL;

$html = $response->getBody();

$crawler = new Crawler();
$crawler->addHtmlContent($html);

$cursos = $crawler->filter('span.card-curso_nome');

foreach ($cursos as $curso) {
  echo $curso->textContent . PHP_EOL;
}
2 respostas

Oi Nilo, tudo bom?

Pelo erro:

Uncaught Error: Class 'DOMDocument' not found in ...

Significa que a classe DOMDocument não foi encontrada.

Essa é uma classe que o crawler do Symfony consome para realizar as operações nos elementos da página. Se ela não foi encontrada é porque a biblioteca dela não está instalada no seu PHP. Tenta habilitar a extensão dom do PHP. No linux você pode pedir no terminal pelo comando:

sudo apt-get install php-xml php-dom

Abraço

Fala, Nilo.

A classe DOMDocument é uma classe do próprio PHP, ou seja, não é de nenhum outro framework ou ferramenta.

O pulo do gato é: Ela pertence à extensão DOM. Essa extensão normalmente já vem habilitada por padrão (https://www.php.net/manual/en/dom.installation.php). Estranho você ter esbarrado nesse problema.

Qual o seu sistema operacional? Como você fez a instalação do PHP?