/ / 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 но на друга система, ако не са активирани, няма да работи.


3 за отговор № 2

По-добре е да се обърне внимание на проблема, отколкото да се премахне предупредителното съобщение.

Въпросът е този ред:

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

Използването на isset($canonical) е добре, но вие използвате директно същата променлива в същия обхват, който причинява съобщението.

Променете го на следното:

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

Нямате нужда от допълнително && $canonical ако приемем, че нямате код, който някога ще инициализира $canonical променлива до нула или празно състояние.

Други съвети: 1. Използвайте <?php вместо <? "къси тагове" заради конфликт на символи с XML декларации. Разбирам по подразбиране по-новите версии на PHP са деактивирани. Имайте предвид, че <?= ?> стенография (за echo) винаги е разрешено. 2. Използвайте if: endif; синтаксис за улесняване на проследяването на кода за визуализиране на страници.