Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

SSL CA bundle not found: false

Estou com esse erro na execução do buscar-cursos.php e não consigo resolver.

Erro:

PHP Fatal error:  Uncaught RuntimeException: SSL CA bundle not found: false in /<path>/Cursos/Alura/Avancando-PHP/buscador-cursos-alura/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php:490
Stack trace:
#0 /<path>/Cursos/Alura/Avancando-PHP/buscador-cursos-alura/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php(297): GuzzleHttp\Handler\StreamHandler->add_verify()
#1 /<path>/Cursos/Alura/Avancando-PHP/buscador-cursos-alura/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php(58): GuzzleHttp\Handler\StreamHandler->createStream()
#2 /<path>/Cursos/Alura/Avancando-PHP/buscador-cursos-alura/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php(35): GuzzleHttp\Handler\StreamHandler->__invoke()
#3 /<path>/Cursos/Alura/Avancando-PHP/buscador-cursos-alura/vendor/guzzlehttp/guzzle/src/Middleware.php(31): GuzzleHttp\PrepareBodyMiddleware->__invoke()
#4 /<path>/Cursos/Alura/Avancando-PHP/buscador-cursos-alura/vendor/guzzlehttp/guzzle/src in /home/contass/Dropbox2/Cursos/Alura/Avancando-PHP/buscador-cursos-alura/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 52

Arquivo buscar-cursos.php:

<?php

require_once 'vendor/autoload.php';
require_once 'src/Buscador.php';

use Alura\BuscadorDeCursos\Buscador;
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;

$client = new Client(['base_uri' => 'https://www.alura.com.br/', 'verify' => 'false']);
$crawler = new Crawler();

$buscador = new Buscador($client, $crawler);
$cursos = $buscador->buscar('/cursos-online-programacao/php');

foreach ($cursos as $curso){
    echo $curso . PHP_EOL;
}

Classe Buscador.php:

<?php

namespace Alura\BuscadorDeCursos;

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

class Buscador
{
    private ClientInterface $httpClient;
    private Crawler $crawler;

    public function __construct(ClientInterface $httpClient, Crawler $crawler)
    {
        $this->httpClient = $httpClient;
        $this->crawler = $crawler;
    }

    public function buscar(string $url): array
    {
        $resposta = $this->httpClient->request('GET', $url);
        $html = $resposta->getBody();

        $this->crawler->addHtmlContent($html);

        $elementosCursos = $this->crawler->filter('span.card-curso__nome');
        $cursos = [];

        foreach ($elementosCursos as $elemento) {
            $cursos[] = $elemento->textContent();
        }

        return $cursos;
    }
}
5 respostas

no seu arquivo buscar-cursos.php

nesta linha $client = new Client(['base_uri' => 'https://www.alura.com.br/', 'verify' => 'false']);

tira as ' ' da palavra false , pra ficar como abaixo:

'verify'=> false]);

e ve se resolve...

Olá Cristina. Realmente essas aspas passaram despercebido, porém removendo as aspas retorno para um erro inicial (pois é, esse trecho dessa linha já tinha sido aplicado para corrigir esse primeiro erro). Veja: Erro:

PHP Fatal error:  Uncaught Error: Call to undefined method DOMElement::textContent() in /<path>/Cursos/Alura/Avancando-PHP/buscador-cursos-alura/src/Buscador.php:30
Stack trace:
#0 /<path>/Cursos/Alura/Avancando-PHP/buscador-cursos-alura/buscar-cursos.php(13): Alura\BuscadorDeCursos\Buscador->buscar()
#1 {main}
  thrown in /<path>/Cursos/Alura/Avancando-PHP/buscador-cursos-alura/src/Buscador.php on line 30

Arquivo buscar-cursos.php:

<?php

require_once 'vendor/autoload.php';

use Alura\BuscadorDeCursos\Buscador;
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;

$client = new Client(['base_uri' => 'https://www.alura.com.br/', 'verify' => false]);
$crawler = new Crawler();

$buscador = new Buscador($client, $crawler);
$cursos = $buscador->buscar('/cursos-online-programacao/php');

foreach ($cursos as $curso){
    echo $curso . PHP_EOL;
}
solução!

Elvio,

Estou sem o computador ligado agora pra testar e comparar com o meu, mas dei uma olhada rapida no erro e aparece que está na linha 30 do Buscador.php tira os parenteses apos textContent( ) pra ficar como abaixo:

$elemento->textContent;

olha se resolve este erro

Olá Cristina,

Realmente isso resolveu o problema. Valeuzão demais aí. Apesar de ter lido várias vezes, não tinha me atentado pra esse detalhe (acho que já estava "submerso" demais no problema rss).

Que bom que deu certo Elvio..... é assim mesmo.... : )