Lumen 5.7: приложение генерирует неработающие ссылки в представлении (перестал работать без причины) - PullRequest
0 голосов
/ 14 декабря 2018

Мое полное приложение Lumen внезапно перестало работать через год без проблем в производственной системе (исключение почти на любой странице).Поскольку я не менял код (по крайней мере, не осознанно), я полагаю, что это может быть связано с изменениями фона в среде хостинга.

Все началось с NotFoundHttpException:

(1/1) NotFoundHttpException
in RoutesRequests.php (line 226)
at Application->handleDispatcherResponse(array(0))
in RoutesRequests.php (line 164)
at Application->Laravel\Lumen\Concerns\{closure}()
in RoutesRequests.php (line 413)
at Application->sendThroughPipeline(array(), object(Closure))
in RoutesRequests.php (line 166)
at Application->dispatch(null)
in RoutesRequests.php (line 107)
at Application->run()
in index.php (line 32)

После некоторого исследования я нашел решение этой проблемы в SO: NotFoundHttpException с Lumen

Похоже, проблему можно решить с помощью добавления:

$app->run(
    $app->make('request')
);

в индекс.php.

Однако теперь все мои ссылки в представлениях не работают - примеры:

<link rel="icon" type="image/png" sizes="96x96" href="https://:/images/app/favicon-96x96.png">
<link rel="stylesheet" href="https://:/css/base.css">

URL генерируются в Lumen / src / helpers.php:

/**
 * Generate a url for the application.
 *
 * @param  string  $path
 * @param  mixed   $parameters
 * @param  bool    $secure
 * @return string
 */
function url($path = null, $parameters = [], $secure = null)
{
    return app('url')->to($path, $parameters, $secure);
}

Кажется, что все параметры переданы правильно: $ path, например, /images/app/apple-icon-57x57.png, в то время как остальные пустые / нулевые.

Обновление: после поиска в течение некоторого времени я узнал, что:

namespace Symfony \ Component \ HttpFoundation;

class Request
{
// ...

    /**
     * Gets the scheme and HTTP host.
     *
     * If the URL was called with basic authentication, the user
     * and the password are not added to the generated string.
     *
     * @return string The scheme and HTTP host
     */
    public function getSchemeAndHttpHost()
    {
        return $this->getScheme().'://'.$this->getHttpHost();
    }

// ...
}

... поставляет неверную схему (без SSL) и пустой хост.Но все же я не знаю, почему это происходит.

После поисков в течение некоторого времени я все еще не представляю, откуда это может исходить.Кто-нибудь сталкивался с подобной проблемой или может помочь мне в этом?

1 Ответ

0 голосов
/ 17 декабря 2018

После обновления с Lumen 5.5 до Lumen 5.7 и обновления PHP с 7.0 до 7.2.9 проблема частично исчезла.Тем не менее мне пришлось удалить:

    $app->make('request')

Решение от NotFoundHttpException с Lumen не работает в моем случае, и все еще есть некоторые исключения.Лучшие решения или объяснения все еще приветствуются!

...