2010-01-17 4 views
0

다음은 간단한 데이터베이스 클래스입니다. 물론 클래스의 일부분이기 때문에 제 질문과 관련된 부분을 제외한 모든 것을 제거했습니다.PHP로 파일에 쓸 수 없음

기본적으로 페이지로드시 실행 된 모든 쿼리, 실행 된 순서, 총 개수 및 실행 된 실제 SQL로 파일을 빌드 할 수 있습니다. 그것은 매우 좋지만 나는 문제가 있습니다. 나는 파일에 쓸 수 없다. 파일에 쓰여질 값인 $ sss의 값을 화면에 출력한다는 것을 아래에서 볼 수있다. PHP에서 모든 것을 보여주기 위해 오류보고가 설정되어 있고 쓰기 오류나 기타 문제가 발생하지 않습니다. 단지 파일에 쓰지 않습니다. 아마도 잘못된 폴더에 파일이있을 수 있지만 확실하지 않습니다.

그래서 로그 파일에 파일 경로를 설정하고 쓰기를 수행하는 좋은 방법은 무엇입니까? 지금 파일을 찾을 수없는 경우 오류가 발생해야합니까? 모든

<?PHP 
class Database 
{ 
    public $debug = true; 
    public $query_count = 0; 
    public $debug_file = "debug.sql"; 

    public function query($sql){ 
     //start timer stuff for debug logger 
     list($usec, $sec) = explode(" ",microtime()); 
     $time_start = ((float)$usec + (float)$sec); 

     //run mysql query 
     $result = mysql_query($sql); 


     ///debug  
     list($usec, $sec) = explode(" ",microtime()); 
     $time_end = ((float)$usec + (float)$sec); 
     $time = $time_end - $time_start; 
     if($this->debug){ 
      $this->query_count ++; 
      $f = fopen($this->debug_file, "a"); 
      $sss = "# ".$this->query_count."\n ".$time." sec \n\n".$sql."\n#-------------------------------------------------------------------------\n\n"; 

      // I print to screen just for test to see what should be wrriten to the file 
      echo $sss; 

      fputs($f, $sss, strlen($sss)); 
      fclose($f); 
     } 
     //end debug 
    } 
} 
?> 
+0

코드가 정상적으로 보입니다. 파일을 찾을 수 없거나 열리지 않으면 경고 메시지가 나타납니다. error_reporting을 어떻게 설정합니까? 현재 디렉토리에 쓸 수있는 권한이 있습니까? –

답변

3

첫째, 나는 그것이 본질적으로 하나에 모든 전화를 번들 (http://php.net/manual/en/function.file-put-contents.php를) file_put_contents를을 사용하고 오류를 방지 할 수 있습니다.

echo 문이 정상적으로 작동하면 php 로그 파일에 기록 된 오류를 확인하고 php.ini에서 설정을 다시 확인하여 경고를 기록하게합니다.

또한 fopen() 호출의 반환 값을 확인하십시오 (false가 아니어야 함) ... 실패했을 수 있습니까?

+0

감사합니다 훨씬 더 좋네요, 또한 writting, 파일이 다른 폴더에 다음 예상했던 것, 그렇지 않으면 저장하는 파일 경로를 설정해야합니다 그것은 새로운 디렉토리에 파일을 구축 할 것입니다 – JasonDavis

+0

아 - 그래 비슷한 있었 일들이 나 자신 앞에서 일어난다. 차가운, 행운은 앞으로 나아 간다. –

관련 문제