Laravel自定义指令导致HTTP错误500

时间:2018-12-27 01:03:35

标签: php laravel laravel-blade

不在本地Web服务器上发生,仅在主机PHP 7.1上发生。除了空白的500错误页面,线索,日志中什么也没得到。

我有几个自定义的Blade指令,可用于仅为下载按钮生成HTML,并为中的最后修改日期生成HTML,用于列出大量下载的下载页面。

AppServiceProvider.php中的指令:

    Blade::directive('fileDate', function ($file) {
        if(file_exists($file)) {
            $timestamp = filemtime(str_replace(["'", '"'], "", $file));
            return view('components.file-date', ['timestamp' => $timestamp]);
        }

        return '-';
    });

    Blade::directive('downloadButton', function($file) {
        return view('components.download-button', ['link' => asset(trim($file, "'"))]);
    });

它所引用的视图:

file-date.blade.php:

<span class="filedate">{{ date('d/m/Y H:i', $timestamp) }}</span>

download-button.blade.php

<a href="{{ $link }}" class="button secondary">Download</a>

在模板中这样使用:

<td>                         
   @fileDate('media/file1.zip')
   @downloadButton('media/file1.zip')
</td>

在另一页上进行单独下载时,它可以很好地工作,但是由于某种原因导致它落在了主下载页面上,我根本无法从错误页面上获得任何信息。

我尝试注释掉部分内容,但只是不想在此特定页面上使用。

有什么建议吗?也许以某种方式可以获取有关该错误的更多信息?据我所知,调试模式已完全启用。

2 个答案:

答案 0 :(得分:0)

一些建议:

  1. 检查Web服务器日志。您可以在配置文件中的“ error_log”字段中找到日志路径。

  2. 此外,如果您使用它,也可以检查php-fpm日志。

  3. 并且,laravel框架日志。拒绝storage/logs

  4. 最后,您可以使用try catch,尝试使用“问题代码”并捕获它,然后将其打印或记录到文件中。

答案 1 :(得分:0)

也许您可以尝试在.env文件中打开调试模式,以查看是否可以获得任何有用的错误消息

APP_DEBUG=true