PHP:在PHP/Laravel中的"die"函数之后执行代码

PHP: Execution of code after "die" function in PHP/Laravel

我是 PHP 的新手,我想开始我从其他来源复制的 laravel 项目。我收到 500 错误。如果我尝试调试 public 文件夹中的 index.php,我会得到一个奇怪的行为,即如果代码中的内核行存在,die 函数将无法运行。我不明白,我认为 die 函数停止执行。

<?php

die ('hi'); //this die

use Illuminate\Contracts\Http\Kernel;
use Illuminate\Http\Request;

define('LARAVEL_START', microtime(true));

if (file_exists(__DIR__.'/../storage/framework/maintenance.php')) {
    require __DIR__.'/../storage/framework/maintenance.php';
}



require __DIR__.'/../vendor/autoload.php';

$app = require_once __DIR__.'/../bootstrap/app.php';

//If I comment out kernel line "die" on top doesn't return 'hi'. The response is 500 html code.
//$kernel = $app->make(Kernel::class);
/*
$response = tap($kernel->handle(
    $request = Request::capture()
))->send();

$kernel->terminate($request, $response);
*/

编辑:从服务器访问日志中获取的日志是:

"GET /index2.php HTTP/2.0" 500 86 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36"

我在错误日志中没有收到任何错误。 所以我激活了 PHP-错误日志。我收到此错误消息:

[24-Sep-2020 11:00:39 Europe/Berlin] PHP Parse error:  syntax error, unexpected T_CLASS, expecting T_STRING or T_VARIABLE or '$' in /usr/.../inertia/public/index2.php on line 44

我认为是因为PHP不是逐行解释你的代码,而是必须先将其转换为运行时引擎的suitable格式。

  1. 忽略评论
  2. 解析变量、函数名称等并创建符号 table
  3. 构建程序的抽象语法树
  4. 写字节码

服务器 returns 500 代码甚至在代码执行开始之前。如果在“die();”之后出现任何语法错误,也会发生同样的情况。方法。如果“使用...”命令有问题,它会在准备阶段崩溃。

因此,在谷歌搜索 PHP 错误消息后,我发现我的 PHP 版本是 5.6 而不是 7.4,这是一个问题。谢谢大家的帮助!这对我帮助很大。 laravel 在 public 文件夹中有 .htaccess 文件。此文件已将 PHP-Version 覆盖为默认 PHP-Version 5.6.