流明5.7:应用程序在视图内生成断开的链接(无故停止工作)

时间:2018-12-14 15:46:37

标签: php laravel url routing lumen

我的完整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 with Lumen

看起来问题可以通过以下方式解决:

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

进入index.php。

但是现在我在视图中的所有链接都已断开-示例:

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

网址在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,而其他参数为空/空。

更新:搜索一段时间后,我意识到:

命名空间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 :(得分:0)

从Lumen 5.5更新到Lumen 5.7 并将 PHP从7.0更新到7.2.9 后,问题已部分消失。仍然我必须删除:

    $app->make('request')

在我的情况下,NotFoundHttpException with Lumen的解决方案不起作用,并且仍然存在一些异常。仍然非常欢迎更好的解决方案或解释!