Класс Laravel не найден на производстве, но работает в местной среде - PullRequest
0 голосов
/ 26 октября 2018

У меня странная проблема.

Я установил пакет через composer (https://packagist.org/packages/evert/sitemap-php) в моем приложении laravel 5.7 и вызвал команду composer dump-autoload

Пакет находится в моем каталоге поставщиков (в локальной и prod env), но работа, которую я запускаю, работает только в локальной.

вот трассировка стека ошибки (отлов через таблицу failed_jobs)

Symfony \ Component \ Debug \ Exception \ FatalThrowableError: Класс 'SitemapPHP \ Sitemap' не найден в /home/forge/u-corsu.com/app/Jobs/CreateSitemap.php:60 Трассировка стека:

Вот мой код:

<?php

namespace App\Jobs;

use Storage;
use SitemapPHP\Sitemap;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

class CreateSitemap implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

protected $path;
protected $ping;
protected $sitemapIndex;

/**
 * Create a new job instance.
 *
 * @return void
 */
public function __construct($ping)
{
    $this->sitemapIndex = env('APP_URL').'/storage/sitemap-index.xml';
    $this->path = storage_path().'/app/public/';
    $this->ping = $ping;
}

/**
 * Execute the job.
 *
 * @return void
 */
public function handle()
{
    $this->cleanFiles();

    $this->generateSitemap();
}

private function cleanFiles()
{
    $files = Storage::files('public');
    foreach ($files as $file) {
        if (str_contains($file, 'sitemap')) {
            Storage::delete($file);
        }
    }
}

private function generateSitemap()
{
    $sitemap = new Sitemap(env('APP_URL'));

/*MY CODE*/

    if ($this->ping) {
        $this->pingGoogle();
    }
}

public function pingGoogle()
{
    $client = new \GuzzleHttp\Client();
    $request = $client->request('GET', 'https://www.google.com/ping?sitemap='.$this->sitemapIndex);
}
}

Как я могу решить эту проблему?

Спасибо

1 Ответ

0 голосов
/ 26 октября 2018

Я наконец нашел свою проблему. Я забыл перезапустить работника очереди, чтобы он использовал старую версию кода.

...