Laravel очищает внешние данные веб-сайта, используя ошибку Goutte

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. Я не могу на всю жизнь понять, что происходит. Я пробовал разные пакеты, удаляя их, добавляя снова. Ваша помощь, которую он оценил!


person Tim Rowley    schedule 24.02.2020    source источник


Ответы (1)


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

В symfony/dom-crawler версии 5.0.0 метод Crawler::createSubCrawler() был обновлен, чтобы иметь подсказку типа возвращаемого значения object. Он также обновил зависимость версии PHP до ^7.2.5, поэтому эта версия не будет установлена, если версия PHP, на которой запущен композитор, не >= ^7.2.5.

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

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

person patricus    schedule 24.02.2020
comment
Благодарю вас! У меня был XAMPP, я только что скачал его более позднюю версию, и теперь он работает без сбоев! - person Tim Rowley; 24.02.2020