Кажется, что мои включения не работают, когда я загрузил файлы на рабочий сервер - PullRequest
0 голосов
/ 28 февраля 2010

Они все отлично работали на моей песочнице XAMMP, но теперь ничего.

Что-то я делаю не так.

Вот код:

index.php

Содержит массовое включение, которое в основном содержит все включения.

<?php

//Starting session

session_start();

//Includes mass includes containing all the files needed to execute the full script
//Also shows homepage elements without customs

include ("includes/mass.php");

//Login Form

$login = 


         "<form id='signin' action = 'login.php' method = 'POST'>
         Username<input type= 'text' name= 'username'>
         Password<input type= 'password' name= 'password'>
         <input type= 'submit' value='login' name='submit'>
         </form>";

//Calculate number of users online

$num_users_sql = mysql_query("SELECT * FROM user WHERE loggedin = '1' ", $con);

$num_online_users = mysql_num_rows($num_users_sql);

//user bash link

$user = "<a href='user.php'>User</a><br>";  

//Register Form Link     

$registerlink = "<a id='signup' href='register.php'>Sign Up</a>";

//Logged In User Links 

$logoutlink   = "<a id='logoutlink' href='logout.php'>Log out</a>";

$message = "<div id='welcome'>"."Hello"." ".$_SESSION['username']."!"."</div>";

$num_users_online = "<div id='users_online'><h2>There are ".$num_online_users." Users On Readnotes Right nw!</h2>"."</div>";

         if (isset($_SESSION['username']))

          //If user is logged in

            {

                echo $message;

                echo $user;

                echo "</br>";

                echo $num_users_online;

                echo $logoutlink;

            }

         //If user is logged out

         else

            {   
                echo $login;

                echo $registerlink;  

            }


?>

Масса включает

содержит все мои включает

<?php

/*Mass include - mass.php*
*Includes all thing needed for operations to start*/


//Grab Header design & details

    require("header.html");

//Grab Footer design & details

    require("footer.html");

//Grab include to connect to the database!

    require("dbcon.php");


?>

Thanx.

Ответы [ 2 ]

1 голос
/ 28 февраля 2010

Довольно распространенная причина проблем в том, что " не работает " при смене серверов:

  • Вы разработали на компьютере с Windows, и ваш рабочий сервер является машиной с Linux; имена файлов и пути к ним чувствительны к регистру в Linux
    • Это означает, что вы должны проверить, соответствуют ли строчные и прописные буквы в именах ваших файлов и каталогов тому, что вы используете.
  • Другая проблема - файлы не найдены ...


По поводу второй проблемы две идеи:

  • Используйте require вместо include; вы получите фатальную ошибку, если требование не работает
    • И включите error_reporting и display_errors, чтобы увидеть сообщение об ошибке.
  • Всегда используйте абсолютные пути, чтобы указать на файлы, которые вы включаете, и никогда не относительные
    • Конечно, вы не хотите вводить абсолютные пути в своем коде
    • Итак, вы можете использовать функцию dirname, примерно так:


В вашем файле "main" (и эту же идею следует использовать для всех остальных включений) :

require dirname(__FILE__) . '/includes/mass.php';

Обратите внимание, что dirname(__FILE__) всегда даст вам абсолютный путь к каталогу, в котором находится файл, в который вы записываете.


Что касается «включения отчетов об ошибках и отображения», поскольку у вас, вероятно, нет доступа к файлам конфигурации вашего сервера, самый простой способ - поместить что-то подобное в верхнюю часть основного сценария:

error_reporting(E_ALL);
ini_set('display_errors', 'On');

При этом ошибки должны отображаться в браузере - их будет немного легче увидеть, чем просматривать журнал ошибок сервера.

0 голосов
/ 28 февраля 2010

Рабочий сервер может не иметь . в include_path. Чтобы это исправить, добавьте его в список включений, например, ./header.html.

...