Малко помощ с Laravel и cURL

vinsbg

Registered
Здравейте,

опитвам се да използвам cURL и да дърпам инфо от един сайт, но хвърля някаква грешка, която не я разбирам.. Съвсем в началото с Laravel съм и не знам точно от какво се опалва в случая.. Може ли малко помощ..
Код:
class API
{
   function get_curl_content($url) {
       $curl = curl_init();
       curl_setopt($curl, CURLOPT_URL, $url);
       curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
       curl_setopt($curl, CURLOPT_HEADER, false);
       $result = curl_exec($curl);
       curl_close($curl);
       return $result;
   }

   const CACHE_KEY = 'rate';

   public static function getRate() {
       if (Cache::has(self::CACHE_KEY)) {
           return Cache::get(self::CACHE_KEY);
       }

       $oneHourTimestamp = \Carbon\Carbon::now()->addHours(1);
       $tenMinutesTimestamp = \Carbon\Carbon::now()->addMinutes(10);

       $result = $this->get_curl_content('https://example.com/');
       $rates = json_decode($result, TRUE);
       if (!$rates) {
          Cache::put(self::CACHE_KEY, '-', $tenMinutesTimestamp);
          return '-';
       }

       $Rate = @$rates['1']['2'];
       if (!$Rate) {
          Cache::put(self::CACHE_KEY, '-', $tenMinutesTimestamp);
          return '-';
       }

       Cache::put(self::CACHE_KEY, $Rate, $oneHourTimestamp);
       return $Rate;
    }
 }
Това е кода.. с file_get_contents() работи, но на сървъра е забранено и не подлежи на пускане.. затова се налага използването на curl..

Грешката, която излиза в app/storage/logs/laravel.log е:
Код:
Production.ERROR: Symfony\Component\Debug\Exception\FatalErrorException: Uncaught TypeError: Argument 1 passed to Illuminate\Exception\PlainDisplayer::display() must be an instance of  Exception, instance of Error given, called in    /var/www/vendor/laravel/framework/src/Illuminate/Exception/Handler.php on line 280 and defined in /var/www/vendor/laravel/framework/src/Illuminate/Exception/PlainDisplayer.php:15
 
Fakeheal каза:
Един съвет. Ползвай този пакет:
https://packagist.org/packages/guzzlehttp/guzzle

Коя версия на PHP ползваш?
Това виждам, че го имам в една от папките на Laravel: Vendor/guzzlehttp/psr7 но нямам идея как да го имплементна в този код..

версията е
 
Кодът някъде ти дава грешка, би трябвало да го има по-нагоре в логовете, това, което си дал, просто показва, че има някакъв проблем с показването на грешки в laravel и php7
 
lam3r4370 каза:
Кодът някъде ти дава грешка, би трябвало да го има по-нагоре в логовете, това, което си дал, просто показва, че има някакъв проблем с показването на грешки в laravel и php7

До колкото знам Laravel 5.x не се справя добре като цяло с някакви промени по php7 и няма да променят 5-тата версия, защото не мога да запазят backward compatibility.

Така че или чакаш версия 6, защото php7 ти е essential или слагаш по-стара версия на PHP-то и продължаваш с ларавел.
 
Изкарах цялата cURL функция извън класа и изглежда се оправи...
Код:
function get_curl_content($url) {
       $curl = curl_init();
       curl_setopt($curl, CURLOPT_URL, $url);
       curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
       curl_setopt($curl, CURLOPT_HEADER, false);
       $result = curl_exec($curl);
       curl_close($curl);
       return $result;
   }
class API 
{
...
}
 
Fakeheal каза:
lam3r4370 каза:
Кодът някъде ти дава грешка, би трябвало да го има по-нагоре в логовете, това, което си дал, просто показва, че има някакъв проблем с показването на грешки в laravel и php7

До колкото знам Laravel 5.x не се справя добре като цяло с някакви промени по php7 и няма да променят 5-тата версия, защото не мога да запазят backward compatibility.

Така че или чакаш версия 6, защото php7 ти е essential или слагаш по-стара версия на PHP-то и продължаваш с ларавел.
Четох в github, че са оправили подобна грешка в 5.2, но не знам дали са я пушнали в master
 
lam3r4370 каза:
Fakeheal каза:
lam3r4370 каза:
Кодът някъде ти дава грешка, би трябвало да го има по-нагоре в логовете, това, което си дал, просто показва, че има някакъв проблем с показването на грешки в laravel и php7

До колкото знам Laravel 5.x не се справя добре като цяло с някакви промени по php7 и няма да променят 5-тата версия, защото не мога да запазят backward compatibility.

Така че или чакаш версия 6, защото php7 ти е essential или слагаш по-стара версия на PHP-то и продължаваш с ларавел.
Четох в github, че са оправили подобна грешка в 5.2, но не знам дали са я пушнали в master

Може ли линк? Защото наистина последно като гледах сило не се препоръчва използването на PHP7 с ларавел5.

А иначе към @vinsbg, ако започваш с ларавел, ползвай по-използвана конфигурация (5.6 с ларавел 5) има повече ресурси и проблемите,които ще ти изникнат има по-голяма вероятност да намериш решение лесно. :)
 

Back
Горе