php未定义变量规范错误

时间:2015-05-13 20:57:16

标签: php apache

Severity: Notice

Message: Undefined variable: canonical

Filename: views/header.php

Line Number: 19


 <? if(isset($canonical) && $canonical) { ?>
    <link rel="canonical" href="<?= $canonical ?>" />
  <? } ?>

php.ini中是否有设置我需要打开才能解决问题?

2 个答案:

答案 0 :(得分:3)

最好解决问题,而不是取消警告信息。

问题是这一行:

if(isset($canonical) && $canonical)

isset($canonical)的使用很好,但是您在同一范围内直接使用相同的变量,这会导致消息。

将其更改为:

<?php if( isset( $canonical ) ): ?>
    <link rel="canonical" href="<?= $canonical ?>" />
<?php endif; ?>

您不需要额外的&& $canonical,假设您没有将$canonical变量初始化为空或空状态的代码。

其他提示: 1.使用<?php代替<?&#34;短标签&#34;因为符号与XML声明冲突。我理解默认情况下,较新版本的PHP禁用了短标签。请注意,始终允许使用<?= ?>简写(echo)。 2.使用if: endif;语法使页面呈现代码更容易理解。

答案 1 :(得分:1)

首先让我警告你,你正在使用short open tag进行编码,这不是一个好习惯。请试试这个: -

问题也在你的情况下,也在你的链接代码中,所以试试这个: -

 <?php if(isset($canonical) && !empty($canonical)) { ?>
    echo "<link rel="canonical" href=" .$canonical ." />";
  <?php  } ?>

注意: - 为什么我上面说的是因为你可以启用short open tag的设置,但是如果它们没有启用则在其他系统上启用它将无效。