2011-07-27 3 views
0

이것은 내 첫 번째 게시물이므로 설정이 종류가 다양하지 않은 경우 사과드립니다.예기치 않은 PHP 경고 오류

MySQL과 PHP를 사용하여 기사 데이터베이스를 작성하는 중입니다.

저자가 작성한 모든 기사가 표시되는 페이지가 있습니다. 일부 PHP if statements으로 페이지 리디렉션의 상단에 링크가 있으므로 아직 로그인하지 않은 경우 사용자가 로그인해야합니다. 사용자가 이미 로그인 한 경우 (데이터베이스에 사용자를 추가하기위한 PHP 스크립트가없는 경우) 리디렉션은 새 기사를 제출하기위한 양식을로드합니다.

컨트롤러 (index.php에)

<?php 
include_once $_SERVER['DOCUMENT_ROOT'] . 
     '/includes/magicquotes.inc.php'; 
require_once $_SERVER['DOCUMENT_ROOT'] . 
     '/includes/access.inc.php'; 

if (isset($_GET['add'])) 
    if (!userIsLoggedIn()) 
{ 
     include '/Test/articles/login.html.php'; 
     exit(); 
} 
    else 
{ 
     include 'form.html.php'; 
     exit(); 
} 
         :::PHP code left out for sake of example::: 
include 'articles.html.php'; 
?> 

access.inc.php

userIsLoggedIn()access.inc.php (자명)의 함수

인 사용자 이름/패스워드를 입력하고 유지하기위한 SESSION()$sql enrty 스크립트를 포함 login.html.php은 내 로그인 양식입니다.

form.html.php 내 데이터베이스에서 모든 기사를 표시하는 페이지 새로운 기사

articles.html.php를 제출 실제 형태입니다

내 문제입니다 내 로그인 폼으로 리디렉션 링크의 if statement을 구현할 때 사용자가 아직 로그인하지 않은 경우 경로가 /Test/articles/login.html.php에 맞고 내가 뭘해야할지 확신이 없기 때문에 클릭하지 않으면 PHP 경고가 표시됩니다.

경고 :

Warning: include(/Test/articles/login.html.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\Test\articles\index.php on line 10 

Warning: include() [function.include]: Failed opening '/Test/articles/login.html.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\Test\articles\index.php on line 10 

도와주세요? 나는 완전히 손해를보고있다.

답변

1

$_SERVER['DOCUMENT_ROOT']은 신뢰할 수 없기 때문에 폴더 구조를 결정할 때 거의 결코 좋은 선택이 아닙니다.

대신 dirname(__FILE__)을 사용하십시오.

if (!defined('DS')) { 
    define('DS', DIRECTORY_SEPARATOR); 
} 
define('APP_FOLDER', dirname(__FILE__) . DS); 

    include_once APP_FOLDER . 'includes/magicquotes.inc.php'; 
    require_once APP_FOLDER . 'includes/access.inc.php'; 

if (isset($_GET['addjoke'])) 
    if (!userIsLoggedIn()) 
{ 
     include APP_FOLDER . 'Test/articles/login.html.php'; 
     exit(); 
} 
    else 
{ 
     include APP_FOLDER . 'form.html.php'; 
     exit(); 
} 

은 BTW, 당신의 진짜 실수는 당신이 웹 서버의 루트 레벨에있는 폴더에 액세스하려는 것을 나타내는 시험 ( /Test/...) 전에 슬래시를 포함 것이 었습니다.

+0

글쎄 고마워요.하지만 여전히 OP에서 같은 오류가 발생하고 있습니다. (include_path = '.; C : \ xampp \ php \ PEAR')와 관련이 있다고 생각하고 있습니다. – rumspringa00

+0

절대적으로 모두 포함하고있는 파일은 실제로 존재합니까? PEAR 포함 경로에 대해 걱정하지 마십시오. 이것이 무시할 수있는 기본 설정입니다 (포함 할 파일을 찾을 때의 최후의 수단). – brezanac

+0

알았어, XAMPP PHP 시스템 변수에 문제가있어 .. 왜 다르게 configd 되었는데도 제대로 작동하도록 만들었지 만, 도움을 주셔서 감사합니다! – rumspringa00

관련 문제