2016-09-19 2 views
1

나는 PHP 서버의 모든 파일을 링크로 표시하는 루프를 가지고 있습니다. 링크를 클릭하면 다음과 같은 fopen을 사용하여 파일을 엽니 다fopen()의 파일 이름에 대한 PHP 변수입니다. 파일 이름은 비워 둘 수 없습니다. 오류

<?php 
    echo"<ol>"; 
    if ($handle = opendir('saves/')) { 
     while (false !== ($entry = readdir($handle))) { 
      if ($entry != "." && $entry != "..") { 
       echo '<li style"display:block"><a href="#codeword">'.$entry.'</a></li><br>'; 


    } 
} 
closedir($handle); 
    } 
    echo"</ol>"; 
    echo'<div id="codeword">'; 
    $file = $entry; 
    $f = fopen($entry, "r") or exit("Unable to open file!"); 
    // read file line by line until the end of file (feof) 
    while(!feof($f)) 
    { 
    echo fgets($f)."<br />"; 
    } 

    fclose($f); 
    echo"</div>"; 



    ?> 

을하지만 난 그것을 실행할 때 나는 오류를 얻을

는 fopen() [function.fopen] : 파일 이름은 비워 둘 수 없습니다

fopen 대신 $entry을 반향하려고하는데 예상대로 나타납니다. 그래서 문제는 아마도 파일 경로 일 것입니다. 어떤 파일 경로를 사용해야하나요? 미리 감사드립니다.

+1

때까지 당신이 게시 코드에서 – arkascha

+0

그밖에 또 무엇이있을 수 있습니다. 올바른 파일 이름이 div에 전송됩니다. @arkascha –

+0

나는 그것을 의심합니다. 앵커는'href = "# codeword"'를 참조합니다. 거기에 _no_ 파일 이름이 있습니다. 이 문제는 하나의 파일에서 여러 부분의 논리를 코딩하는 실수를 저질렀 기 때문에 발생합니다. 하지마. 하나의 로직을 사용하여 목록을 작성하고 하나는 클릭을 처리하십시오. – arkascha

답변

0

fopen()http://php.net/manual/en/function.fopen.php에 대한 PHP 설명서에서 알 수 있듯이 첫 번째 매개 변수는 파일 이름입니다.

아마도 $entry 값이 null이거나 비어있을 수 있습니다. (가 않는 경우가되지 않음) 또는 undefined (가 while를 입력하는 경우) while 루프가 끝이 없을 것 같은이 오류 메시지가 false

+0

처음에는 생각 했었지만 div에 echo하는 것은 정확한 파일 이름이었습니다. 그래서 그것은 비어 있지 않습니다. –

+0

이것은 전혀 대답이 아닙니다. 그것은 OP가 이미 질문에서 언급 한 명백한 것을 제외하고는 아무 것도 말하지 않았지만 그것은 논평일지도 모른다. – arkascha

+0

'$ entry'의 유형을 확인 했습니까? – MounirOnGithub

0

, $entry 항상 false 될 것입니다 정확한. 이것은 경로 문제가 아니며 "파일을 찾을 수 없음"오류를 발생시킵니다.
+0

올바르지 않습니다. 폴더가 끝까지 읽히 자마자 루프가 종료됩니다. 그 외에도 ... 무한 루프가 변수의 내용에 영향을주는 이유는 무엇입니까? 그리고 ... 그 오류 아래의 코드 줄에 오류가 throw됩니다, 그래서 어떻게 루프 끝없는 수 있습니까? – arkascha

+0

이 루프는 나를 위해 꽤 괜찮아. 그래서 나는 문제가 있다고 생각하지 않는다. –

+1

@arkascha 루프 while (false! == ($ entry = readdir ($ handle)))'은 $ entry가 false로 설정된 경우에만 종료됩니다. – Eiko

관련 문제