2011-12-06 9 views
0

빈 페이지로 실행 중입니다. 모든 오류를보고하도록 PHP에 요청했지만 아직 구문 오류가 있다고 생각하는 부분이 없습니다. 나는 그것이 무엇인지 알 수 없다. 여기 PHP : 빈 페이지, 오류보고 기능이 작동하지 않습니다.

나는 스크립트를 일하고있다 :

test.php

<?php 
ini_set('display_errors', '1'); 
require('database.php'); 

print("hello"); 

$config = new Config("lessons.db","data/"); 
$db = new Database($config, array('first', 'second', 'third', 'fourth'), true); 

print_r($db->dumpToArray()); 
?> 

database.php

<?php 
    class Config { 
     private 
      $_db 
      $_file, 
      $_directory, 
      $_delimiter, 
      $_columns; 

     public function __construct(string $file, string $directory = null, string $delimiter = "|") { 
      $_db = $directory.$file; 
      $_directory = $directory; 
      $_delimiter = $delimiter; 
     } 
     public function db() { 
      return $_db; 
     } 
     public function delimiter() { 
      return $_delimiter; 
     } 

    }  
    class Database { 
     private 
      $_config, 
      $_columns, 
      $_rows, 
      $_pointer; 

     public function __construct(Config $config, array $constants = null, boolean $caseInsensitive = false) { 
      $_config = $config; 
      is_readable ($_config->db()) 
       or exit ("The database cannot be read"); 
      if(!is_null($constants)) 
       $this->defineColumns($constants, $caseInsensitive); 
      return; 
     } 

     private function connect(string $method) { 
      if (!($_pointer = @fopen($_config->db(), $method)) or printf("Unable to connect to database"); 
     } 

     private function disconnect() { 
      fclose($_pointer); 
     } 

     private function defineColumns($constants, $caseInsensitive) { 
      for (var $i=0;$i<count($constants);$i++) 
       define($constants[i], $i, $caseInsensitive);     
     } 

     public function dumpToArray() { 
      $arrayDump = explode($_config->delimiter(), file($_config->db(), FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)); 
      return $arrayDump; 
     } 

     public function getRowByValue($column, $value) { 
      $this->connect('r'); 
      $rowNumber = 0; 
      while (!feof($_Pointer)) { 
       $row = explode($_config->delimiter(), fgets($dbPointer, 1024)); 
       if ($row[$column] == $value) { 
        $this->disconnect(); 
        return $row; 
       } 
       $rowNumber++; 
      } 
      $this->disconnect(); 
      return false; 
     }  
    } 
?> 

사람이 원인이 될 수 무엇을 볼 수 있습니까?

언뜻
+0

아파치 로그를보세요 ... – Flukey

+0

먼저 구문 문제가 아닌지 확인하기 위해'php -l '을 사용해 보겠습니다. – hafichuk

+0

@Flukey는 그들에게 접근 할 수 없다. 나는 이상한 기업체에있다. –

답변

1

내가 require(database.php);require('database.php');해야한다고 생각에게 기대

$db = new Database($config, ["first","second","third","fourth"], true); 

비행하지 않습니다.

그 변경 시도하고, 당신은 내가 너무 확실하지 않다,

좋아

return $arrayDump 

편집에 세미콜론이 누락 또한

을 할 수 있는지,하지만 시도 함수의 매개 변수에서 형변환을 제거합니다.

그래서 ...

public function __construct(Config $config, array $constants = null, boolean $caseInsensitive = false) 

public function __construct($config, $constants = null, $caseInsensitive = false) { 

내가 PHP에서 많이 OOC을하지 않는 것이지만, 또 다른 총을 복용.

+0

당신은 맞습니다.하지만 여전히 뭔가를 고집하고 있습니다. –

+0

나는 누락 된 세미콜론 – nine7ySix

+0

을 발견했다. 와우 고마워 독수리 눈, 여전히 흰색 검진. 업데이트 된 출처. –

1

...이 데이터베이스 클래스가 배열

$db = new Database($config, array('first', 'second', 'third', 'fourth'), true); 
+0

그가 배열을 만들고 싶다고 생각합니다. – jprofitt

+0

@jprofitt 맞습니다. 나는 그의 Database 클래스를 읽은 후에 깨달았다. –

+0

고마워, 많은 ActionScript를 해왔고 거기에 혼란스러워하는 구문을 가지고 있지만 여전히 작동하지 않습니다. –

2

누구나 원인을 알 수 있습니까?

오류를 가장 잘못 찾고 비효율적으로 찾는 방법입니다.
연령대에 관계없이 코드를 쳐다 보거나 다른 사람들에게 아무런 성공도하지 말라고 요청할 수 있습니다.

정확한 오류 메시지를 읽지 않는 이유는 무엇입니까?
당신은 바른 길을 가고 있었지만 포기했습니다.

Fluke가 언급 한 바에 따르면 은 오류 로그를 확인하기 위해이 있으며, 기본적으로 웹 서버 오류 로그로 표시됩니다.

코드를 수정하는 유일한 방법은 실제 오류를 보는 것입니다.

+0

나는 보통 나의 현재 환경에서 나는 할 수 없다, 그것은 옳지 않을 수도 있지만 그것이 바로 지금해야 할 일이다. –

+1

오류보고와 함께이 코드를 실행할 수있는 서버가 없다고 말하지 마십시오. –

+0

다른 서버 (doh, duh!)에 업로드되었으며 오류를 통해 진행중입니다. –

0

php.ini에는 다른 오류보고 수준이 있습니다.이 오류를 조사하고 싶을 수도 있습니다.

+0

나는 모든 오류를 표시하도록 설정했습니다 –

0

오류 로그를 볼 수 없으므로 코드에 일련의 인쇄 문을 던지고 스크립트를 죽이는 줄을 확인하십시오. 그것이 database.php 스크립트에서 죽이는다면, 거기 저기에 지문을 던져라.

<?php 
ini_set('display_errors', '1'); 
require('database.php'); 
print "Test1"; 
print("hello"); 
print "Test2"; 
$config = new Config("lessons.db","data/"); 
print "Test3"; 
$db = new Database($config, array('first', 'second', 'third', 'fourth'), true); 
print "Test4"; 

print_r($db->dumpToArray()); 
?> 
+0

왜 downvote? 이것은 오류를 볼 수 없으면 디버그 할 수있는 합법적 인 방법입니다. – Catfish

1

당신이 구문 오류를 가지고있는 유일한 방법은 당신이 error_reporting은 변경할 수있는 상황에있는 경우/display_errors를 설정 스크립트 자체에, 당신은 여전히 ​​작동 할 수 있습니다.

트릭은 구문 오류가없는 다른 스크립트를 만들고 해당 스크립트에서 구성 옵션을 설정하는 것입니다. 다음에는 잘못된 스크립트로 의심되는 부분이 포함되어 있습니다.

<?php 
error_reporting(-1); // show all 
ini_set('display_errors', 1); 
require 'file_with_parse_error.php'; 

여전히 이러한 설정은 php.ini 또는 웹 서버 설정 파일에서 변경할 수 있어야합니다. 그리고 어떤 경우든지 볼 수있는 오류 로그가 있어야합니다.

그런 다음 웹 브라우저에서 새 스크립트의 URL을 요청하십시오.

관련 문제