/ / php未定義変数の標準エラー-php、apache

php未定義の変数標準エラー - 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に設定はありますか?

回答:

回答№1は1

まず、使用していることを警告します short open tag コーディングには適していません。これを試してください:

問題はあなたの状態にもあり、リンクコードにもありますので、これを試してください:

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

注:-の設定を有効にしたので大丈夫だから、上記のように言う理由 short open tag しかし、他のシステムでは有効になっていないと機能しません。


回答№2の場合は3

警告メッセージを抑制するよりも、問題に対処することをお勧めします。

問題はこの行です:

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

の用法 isset($canonical) ただし、同じスコープ内で同じ変数を直接使用しているため、メッセージが表示されています。

これに変更してください:

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

余分なものは必要ありません && $canonical あなたが「初期化するコードを持っていない」と仮定する $canonical nullまたは空の状態の変数。

その他のヒント: 1.使用する <?php その代わりに <? シンボルがXML宣言と競合するため、「短いタグ」。デフォルトでは、PHPの新しいバージョンでは短いタグが無効になっています。ことに注意してください <?= ?> 略記 echo)は常に許可されます。 2.を使用します if: endif; ページレンダリングコードを追跡しやすくする構文。