Laravel Scrap внешних данных веб-сайта с помощью ошибки Goutte - PullRequest
0 голосов
/ 24 февраля 2020

https://github.com/FriendsOfPHP/Goutte

composer. json:

"php": "^7.1.3",
        "fabpot/goutte": "^4.0",
        "fideloper/proxy": "^4.0",
        "guzzlehttp/guzzle": "^6.5",
        "laravel/framework": "^6.2",
        "laravel/passport": "^8.4",
        "laravel/tinker": "^2.0",
        "laravel/ui": "^1.2",
        "symfony/translation": "4.3.8"

Контроллер:

use Illuminate\Http\Request;
use App\Http\Requests;
use Goutte\Client;
use Symfony\Component\HttpClient\HttpClient;



class getStuff extends Controller
{
    public function get(Request $request) {

      $client = new Client();
      $crawler = $client->request('GET', 'https://www.symfony.com/blog/');

      return '';
}

Ошибка:

Symfony\Component\Debug\Exception\FatalThrowableError
Return value of Symfony\Component\DomCrawler\Crawler::createSubCrawler() must be an instance of Symfony\Component\DomCrawler\object, instance of Symfony\Component\DomCrawler\Crawler returned

Он всегда ломается при достижении $crawler = $client->request. Я не могу за свою жизнь понять, что происходит. Я пробовал разные пакеты, удаляя его, добавляя снова. Вашу помощь он оценил!

1 Ответ

0 голосов
/ 24 февраля 2020

Я предполагаю, что на вашем компьютере установлено две версии PHP. Похоже, что ваша версия командной строки (которая запускает composer) -> = PHP 7.2, но версия PHP, запускаемая вашим веб-сервером, -

In symfony/dom-crawler , версия 5.0.0 обновила метод Crawler::createSubCrawler(), добавив подсказку типа возврата object. Также обновлена ​​зависимость версии PHP до ^7.2.5, поэтому эта версия не будет установлена, если версия PHP, работающая composer, не будет> = ^ 7.2.5.

Однако версия PHP, запущенный веб-сервером, похоже, не понимает подсказку типа object, поэтому он ищет фактический класс с именем Symfony\Component\DomCrawler\object. Поскольку PHP не понимает подсказку типа, это означает, что версия, выполняющая код, <7.2.0. </p>

Вам необходимо убедиться, что версия PHP, используемая веб-сервером для запустить код той же версии PHP, которая запускает composer для установки зависимостей.

...