【问题标题】:Blade PHP Variable undefined in Local Laravel Project but not Production?Blade PHP 变量在本地 Laravel 项目中未定义但不是生产?
【发布时间】:2017-08-06 22:24:46
【问题描述】:

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

简单的代码是:

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

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

带有消息“未定义变量:类”的异常“ErrorException”

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

服务器设置:

  • CentOS 6.8 VPS
  • Laravel 版本Laravel Framework version 5.2.45
  • PHP 版本PHP 5.6.30 (cli) (built: Mar 11 2017 08:42:18)
  • Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

本地设置:

  • Windows 10
  • 宅基地虚拟机
  • Laravel 版本Laravel Framework version 5.2.45
  • PHP版本PHP 5.6.15-1+deb.sury.org~trusty+1 (cli)
  • Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies with Xdebug v2.3.2, Copyright (c) 2002-2015, by Derick Rethans with blackfire v1.6.0, https://blackfire.io, by Blackfireio Inc.

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

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

【问题讨论】:

  • &lt;?$class = 'abc';?&gt; 可能是问题所在,&lt;? 是一个简短的开放标签,默认情况下未启用(不要与 &lt;?= 混淆,后者是一个简短的回显标签,已启用默认情况下) - 尝试 进行测试。或者它的缓存/编译问题:laracasts.com/discuss/channels/laravel/undefined-variable-error
  • @Steve 是的,如果我将其更改为 &lt;?php $class=... 它适用于我的本地项目。这是怎么回事?以及如何设置我的本地 PHP 以允许短打开标记?

标签: php laravel zend-framework blade


【解决方案1】:

要将我的评论扩展为答案,&lt;?$class = 'abc';?&gt; 可能是问题所在,&lt;? 是一个简短的开放标签,默认情况下未启用(不要与&lt;?= 混淆,后者是一个简短的回显标签,并且默认启用)。

如果是这种情况,那么您应该编辑您的 php.ini:

short_open_tag = On

以匹配您的实际环境,或在整个项目中用&lt;?php 替换所有&lt;? 实例(包括尾随空格,这样您就不会捕捉到完全有效的&lt;?=)。

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

无论哪种方式都是一致的。

【讨论】:

  • 谢谢,你拯救了我的一天 :) !!
【解决方案2】:

您可能无法在本地环境中使用短标签&lt;?。检查本地 php.ini 文件中的 short_open_tag 值。

来自文档:PHP 还允许使用短打开标记

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

或者直接使用

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

而不是

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2020-11-30
      • 2021-06-14
      • 2021-08-03
      • 2017-08-05
      • 2014-12-09
      • 2017-01-26
      • 2020-03-03
      • 1970-01-01
      • 2018-07-01
      相关资源
      最近更新 更多