Blade PHP 变量在本地 Laravel 项目中未定义,但在生产环境中未定义?

Blade PHP Variable undefined in Local Laravel Project but not Production?

我的 Laravel 项目中有一个非常奇怪的错误。我的 Blade 视图文件中的一些代码在服务器上运行完美,但在我的本地项目 VM 上运行失败。

简单代码为:

<?$class = 'abc';?>
<p><?=$class?></p> /* My local project fails here */

在我的本地 Laravel 项目中我收到错误:

exception 'ErrorException' with message 'Undefined variable: class

为什么不同?我真的很想知道为什么这会在服务器上运行但在本地失败。

服务器设置:

本地设置:

编辑: 根据史蒂夫的建议。如果我将代码更改为下面的代码,它就可以工作。怎么回事?

<?php $class = 'abc';?>
<p><?=$class?></p

可能是您无法在本地环境中使用短标记 <?。检查本地 php.ini 文件中的 short_open_tag 值。

来自文档:PHP 还允许使用短开放标签

http://php.net/manual/en/language.basic-syntax.phptags.php

或者直接使用

<?php $class = 'abc'; ?>

而不是

<?$ $class = 'abc'; ?>

为了将我的评论扩展为答案,<?$class = 'abc';?> 可能是问题,<? 是一个简短的开放标签,默认情况下不启用(不要与 [=12= 混淆) ] 这是一个简短的回显标签,默认情况下启用)。

如果是这种情况,那么您应该使用以下内容编辑您的 php.ini:

short_open_tag = On

以匹配您的实时环境,或用 <?php 替换 <? 的所有实例(包括尾随 space,因此您不会捕捉到完全有效的 <?=)在整个项目中。

通常禁用短开放标签,因为它们会导致阅读问题xml,所以我个人会选择第二个选项。

无论哪种方式都要保持一致。

我遇到了同样的问题,经过半天的工作终于发现了这个问题。检查组件文件夹应该以大写开头!