5
respostas

Erro na Listagem dos cursos

Segue meu arquivo principal buscar-cursos.php

<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;

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

$html = $resposta->getBody();

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

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

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

Segue arquivo json:

{
    "name": "phpcaseiro/buscador-cursos",
    "description": "Buscador que busca os cursos no site da Alura",
    "type": "library",
    "authors": [
        {
            "name": "Anderson Santos",
            "email": "anderson.santos.silva@live.com"
        }
    ],
    "require": {
        "guzzlehttp/guzzle": "^6.5",
        "symfony/dom-crawler":"^4.2",
        "symfony/css-selector": "^4.4"
    }
}

Segue erro na saída do Terminal:

PS C:\xampp\htdocs\alura\composer\buscador-curso-alura> php buscar-cursos.php
PHP Fatal error:  Uncaught GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) in C:\xampp\htdocs\alura\composer\buscador-curso-alura\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:201
Stack trace:
#0 C:\xampp\htdocs\alura\composer\buscador-curso-alura\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(155): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array)
#1 C:\xampp\htdocs\alura\composer\buscador-curso-alura\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(105): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#2 C:\xampp\htdocs\alura\composer\buscador-curso-alura\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), in C:\xampp\htdocs\alura\composer\buscador-curso-alura\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 201

Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) in C:\xampp\htdocs\alura\composer\buscador-curso-alura\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:201
Stack trace:
#0 C:\xampp\htdocs\alura\composer\buscador-curso-alura\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(155): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array)
#1 C:\xampp\htdocs\alura\composer\buscador-curso-alura\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(105): GuzzleHttp\Handler\CurlFactory#2 C:\xampp\htdocs\alura\composer\buscador-curso-alura\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), in C:\xampp\htdocs\alura\composer\buscador-curso-alura\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 201
PS C:\xampp\htdocs\alura\composer\buscador-curso-alura> php buscar-cursos.php{
>>     "name": "phpcaseiro/buscador-cursos",
>>     "description": "Buscador que busca os cursos no site da Alura",
>>     "type": "library",
>>     "authors": [
>>         {
>>             "name": "Anderson Santos",
>>             "email": "anderson.santos.silva@live.com"
>>         }
>>     ],
>>     "require": {
>>         "guzzlehttp/guzzle": "^6.5",
>>         "symfony/dom-crawler":"^4.2",
>>         "symfony/css-selector": "^4.4"
>>     }
>> }
No linha:2 caractere:11
+     "name": "phpcaseiro/buscador-cursos",
+           ~
Token ':' inesperado na expressão ou instrução.
No linha:7 caractere:19
+             "name": "Anderson Santos",
+                   ~
Token ':' inesperado na expressão ou instrução.
No linha:10 caractere:6
+     ],
+      ~
Argumento ausente na lista de parâmetros.
No linha:12 caractere:28
+         "guzzlehttp/guzzle": "^6.5",
+                            ~
Token ':' inesperado na expressão ou instrução.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordExceptionRecordException
    + FullyQualifiedErrorId : UnexpectedToken
5 respostas

Estou com um erro semelhante, inclusive executei o projeto disponível para download no curso e o erro ocorre nele também.

Aguardando posição da Alura, a propósito estou com alguns cursos iniciados e não concluídos, quando chego em um ponto que da erro ou algo não ficou entendido paro para não perder tempo e começo a estudar outra coisa que interessa minhas Skills. Sendo assim Grupo Alura aguardando respostas.

Boa tarde Anderson, eu acabei de executar o projeto exatamente como você disponibilizou e a listagem ocorreu corretamente, gerando a seguinte saída:

Curso PHP e MySQL: Introdução a uma webapp
Curso Introdução ao PHP: Primeiros passos com a linguagem
Curso Avançando com PHP: Arrays, Strings, Função e Web
Curso PHP Strings: Operações e expressões regulares
Curso PHP: Manipulando coleções com Arrays
Curso PHP: Dominando as Collections
Curso Orientação a Objetos com PHP: Classes, métodos e atributos
Curso Avançando com Orientação a Objetos com PHP: Herança, Polimorfismo e Interfaces
Curso PHP Brasil: Validação de dados no padrão nacional
Curso PHP Composer: Dependências, Autoload e Publicação
Curso PHP Exceptions: Tratamento de erros.
Curso PHP I/O: Trabalhando com arquivos e streams
Curso MVC com PHP: Entenda o padrão Model-View-Controller
Curso CodeIgniter I: Programando elegantemente para a web
Curso CodeIgniter II: Mais técnicas e boas práticas
Curso Laravel parte 1: Produtividade no desenvolvimento web
Curso Laravel parte 2: Trabalhando com Autenticação, Relacionamentos e Testes
Curso CakePHP I: Acelere o desenvolvimento web
Curso CakePHP II: Validação, emails e mais recursos
Curso Zend Framework: Seu desenvolvimento PHP acelerado
Curso Zend Framework: Mais prática do seu framework predileto
Curso PHP com PDO parte 1: Persistindo os bancos de dados

Sugiro, no terminal, executar um composer install no diretório do projeto. Em seguida, tente executar novamente o php buscar-cursos.php.

Ps: não tenho certeza, mas me parece que você está executando o comando php buscar-cursos.php em uma pasta que não é a do projeto. Na saída do terminal tem "buscador-curso-alura" e no composer.json tem "buscador-cursos". Será que não é isso?

Aqui o mesmo problema. Resolvido com a inclusão manual no composer.json da linha:

>>         "symfony/css-selector": "^4.4"

E, após a inclusão, realizar o comando composer update. No entanto, o script roda trazendo os resultados apenas via linha de comando; se realizada requisição via navegador, recebo erro 500.

Boa tarde. Eu tive o mesmo problema e consegui resolver ele lendo este artigo: https://github.com/googleapis/google-cloud-php/issues/1821. Espero ter ajudado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software