2016-04-07 4 views
0

Я довольно новичок в PHP, моя главная проблема заключается в том, что при запуске локального сервера с MAMP страница сайта работает нормально, но при размещении на удаленном репо полное содержимое header.php получает набитый в <body>, а не <head>. Мой код выглядит следующим образом:PHP добавляет <Head> файлов в <Body>

<?php 
    $pageName = "This is my page title"; 
    $isHomeStyle = true; 
    $mainjs = true; 
    $flexisel = false; 
    $lazyload = false; 

    include("includes/header.php"); 
    include("includes/navbar.php");?> 

<body> 
... 
</body> 

Когда я загрузить его на локальном хосте, голова появляется там, где она должна быть, и все прекрасно работает, когда я вижу его в Интернете, однако, код выглядит следующим образом;

<head></head> 
<body> 
    <div class="navbar"></div> 
    <title>This is my Page title</title> 
    <link rel="stylesheet" href="project/css/home.css" /> 
    <link rel="stylesheet" href="project/css/styles.css" /> 

... 

<body> 

Очевидно, что это неправильно, что мне не хватает?

EDIT: Файл head.php выглядит следующим образом:

<!doctype html> 
<html class="no-js" lang="en"> 
    <head> 
    <meta charset="utf-8" /> 
    <title>Page Name | <?= $pageName ?></title> 
    <? if (true == $isHomeStyle): ?> 
     <link rel="stylesheet" href="project/css/home.css" /> 
    <? endif; ?> 
    </head> 

Устранена Вопрос был мое использование сокращённых тегов, по-видимому, он не полностью поддерживается во всем мире. Спасибо вам всем!

+0

Должен ли навигатор находиться в корпусе? –

+0

Вы удалили кеш? –

+1

Пожалуйста, покажите нам файл 'header.php', который выдает этот вывод. Возможно, вы потеряете некоторые теги. – 4castle

ответ

1

По PHP Pear Docs:

Всегда используйте <?php ?> разграничить PHP код, а не <? ?> стенографии. Это необходимо для соответствия PEAR и также является самым переносимым способом включения PHP-кода в различные операционные системы и настройки.

Это, скорее всего, причина, по которой он работает на локальном хосте, но не на вашем онлайн-репо.

Также не забудьте переместить include("includes/navbar.php"); внутрь метки <body>.

+0

Спасибо, это звучит как проблема. Я предполагаю, что такие переменные, как $ pageName, были бы '' Также правильными? –

+0

Добро пожаловать :) На самом деле это будет '' – 4castle

2

Вы не закрываете свой <head> в HTML. Некоторые браузеры (наверняка, Chrome) пытаются разумно манипулировать DOM для исправления синтаксических ошибок HTML. В этом случае, я считаю, что ваш браузер автоматически помещает вывод из вашего контента прямо в тело. Добавьте закрывающий тег </head> перед открытием тега <body>, и все должно быть в порядке. Кроме того, я уверен, что ваш include("includes/navbar.php"); должен находиться в самом теле.

+0

Я переместил PHP в заголовок, вместо того, чтобы теги заголовка были закрыты внутри шаблона, я также переместил навигационную панель в тело. Когда он загружается на удаленном сервере, голова отображается там, где она должна быть, но мой PHP рассматривается как комментарий. Я предполагаю, что это проблема с моей установленной версией PHP? –

+0

Можете ли вы уточнить? Я не уверен, как это будет так. Вы уверены, что на сервере действительно установлен и работает PHP? – samrap

+0

yeap, мы используем PHP на этом сервере уже более двух лет, и я просто пытаюсь изменить это изменение шаблонов, поэтому я так отброшен. В принципе, шаблон header.php имеет оператор if (см. Выше), и он отображается в браузере как комментарий html, хотя остальная часть PHP работает правильно (т. Е. Включая navbar). –

Смежные вопросы