C: \\ xampp \\ htdocs \\ portal \\ index.php (55): Подсветка дескриптора \\ Foundation \\ Http \\ Kernel-> (Object (Подсветка \\ Http \\ Запрос)) - PullRequest
1 голос
/ 04 ноября 2019

Я занимаюсь разработкой веб-портала с использованием Laravel-5.8. Кроме того, я использую guzzlehttp / guzzle-6.3 для использования внешнего API и сохранения его в своей локальной базе данных.

.env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=portal
DB_USERNAME=testing
DB_PASSWORD=password

app \ Console \ Commands \ travelupdate.php

class travelsupdate extends Command {

    protected $signature = 'command:travelsupdate';

    protected $description = 'travelsupdate';

    public function __construct() {
        parent::__construct();
    }
    public function handle() 
    {
    try{
         $client = new Client();

        $res = $client->request('GET','https://api.abcdef.net/travels/v4/sample');
        $trips = json_decode($res->getBody());

        foreach($trips as $trip) {
            Trip::updateOrCreate([
                'trip_id' => $trip['trip_id']  
            ],
            [
                'trip_number' => $trip['trip_no'],
                'truck_no' => $trip['t_no'], 
                'truck_reg_no' => $trip['reg_no'],
                'trailer_no' => $trip['trailer_no'],
                'contract_no' => $trip['contract_no'],
                'contract' => $trip['contract_name'],
                'driver_id' => $trip['driver_id'],
                'driver_name' => $trip['driver_name'],
                'loading_date' => date_format($trip['loading_date'], "Y-m-d"),
                'loading_from' => $trip['loading_from']
            ]);
        } 
        } catch (\Exception $e){
            \Log::error($e->getMessage());
        }             
    }
}

app \ Console \ Kernel.php

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use App\User;
use App\Activity;
use Avatar;
use Storage;
use Mail;
use App\Travel;
use App\Audit;
use Carbon\Carbon;
// use \Carbon\Carbon;

class Kernel extends ConsoleKernel
{
    protected $commands = [
        'App\Console\Commands\travelsupdate',
    ];

    protected function schedule(Schedule $schedule)
    {
         $schedule->command('command:travelsupdate')
            ->hourly();
    }

    protected function commands()
    {
        // $this->load(__DIR__.'/Commands');

        require base_path('routes/console.php');
    }
}

Чего я хочу добиться, так это использовать внешний API с помощью запроса Guzzle GET. Затем сохраните его в локальной базе данных. Если данные уже существуют (используя trip_id), они обновляются. Я устанавливаю задание cron на каждый час.

Я наблюдаю, что ничего не происходит, и никакие данные не сохраняются в локальной базе данных.

Когда я проверил журнал, я обнаружил эту ошибку:

[2019-11-04 10:15:18] local.ERROR: file_put_contents(C:\xampp\htdocs\portal\storage\framework/cache/data/b8/55/b85503ed5c2bc216ecbc86c82005e92d6a01c97f): failed to open stream: Permission denied {"userId":3,"exception":"[object] (ErrorException(code: 0): file_put_contents(C:\\xampp\\htdocs\\portal\\storage\\framework/cache/data/b8/55/b85503ed5c2bc216ecbc86c82005e92d6a01c97f): failed to open stream: Permission denied at C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Filesystem\\Filesystem.php:122)
[stacktrace]
#0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(2, 'file_put_conten...', 'C:\\\\xampp\\\\htdocs...', 122, Array)
#1 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Filesystem\\Filesystem.php(122): file_put_contents('C:\\\\xampp\\\\htdocs...', '1572862577i:157...', 2)
#2 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Cache\\FileStore.php(65): Illuminate\\Filesystem\\Filesystem->put('C:\\\\xampp\\\\htdocs...', '1572862577i:157...', true)
#3 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Cache\\Repository.php(211): Illuminate\\Cache\\FileStore->put('77de68daecd823b...', 1572862577, 60)
#4 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Cache\\Repository.php(316): Illuminate\\Cache\\Repository->put('77de68daecd823b...', 1572862577, 60)
#5 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Cache\\RateLimiter.php(60): Illuminate\\Cache\\Repository->add('77de68daecd823b...', 1572862577, 60)
#6 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Middleware\\ThrottleRequests.php(57): Illuminate\\Cache\\RateLimiter->hit('77de68daecd823b...', 60)
#7 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): Illuminate\\Routing\\Middleware\\ThrottleRequests->handle(Object(Illuminate\\Http\\Request), Object(Closure), 60, '1')
#8 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Auth\\Middleware\\Authenticate.php(43): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#9 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): Illuminate\\Auth\\Middleware\\Authenticate->handle(Object(Illuminate\\Http\\Request), Object(Closure), 'api')
#10 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(105): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#11 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(682): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#12 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(657): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#13 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(623): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#14 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(612): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#15 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(176): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#16 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(130): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#17 C:\\xampp\\htdocs\\portal\\app\\Http\\Middleware\\CORS.php(18): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#18 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): App\\Http\\Middleware\\CORS->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#19 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#20 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#21 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#22 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#23 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#24 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#25 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode.php(62): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#26 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#27 C:\\xampp\\htdocs\\portal\\vendor\\fideloper\\proxy\\src\\TrustProxies.php(57): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#28 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): Fideloper\\Proxy\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#29 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(105): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#30 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(151): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#31 C:\\xampp\\htdocs\\portal\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#32 C:\\xampp\\htdocs\\portal\\index.php(55): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#33 {main}
"} 
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);

Из приведенного выше кода в index.php это строка 55 в index.php

$ request = Illuminate \ Http \ Request :: capture ()

Как мне решить?

1 Ответ

0 голосов
/ 05 ноября 2019

Похоже, ваш каталог хранения недоступен для записи. Это может быть вызвано несколькими причинами.

Сначала вы можете проверить уровень разрешений каталога. Я не очень знаком с xampp и с тем, как он работает, но в linux вы бы хотели, чтобы он был настроен на что-то вроде 775. Существует довольно подробное объяснение разрешений, установленных в в этом ответе .

Следующим шагом будет определение того, какой пользователь используется во время работы cron. Если ваше приложение работает нормально вне функций cron, это может быть проблемой. Например, если вы настроили свой cron как user1, но папка принадлежит user2, вы не сможете писать в нее, потому что папка не принадлежит user1.

...