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



我是PHP的新手,我想启动我从另一个源复制的laravel项目。我错了500。如果我试着调试公共文件夹中的index.php,我会得到一个奇怪的行为,即如果代码中的内核行在那里,die函数就不起作用。我不明白,我以为die函数会停止执行。

<?php
die ('hi'); //this die
use IlluminateContractsHttpKernel;
use IlluminateHttpRequest;
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错误消息后,我发现我的PHP版本是5.6而不是7.4,这是一个问题。谢谢大家的帮助!这对我帮助很大。laravel在公用文件夹中有.htaccess文件。此文件已将PHP版本覆盖为默认的PHP 5.6版本。

我认为这是因为PHP没有逐行解释您的代码,但它必须首先将其转换为适合运行时引擎的格式。

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

服务器甚至在代码执行开始之前就返回500个代码。如果在";die(("方法如果";使用"命令它将在准备阶段崩溃。

最新更新