문제

저는 다음과 같은 특이한 점을 발견했습니다.

$handle = fopen(realpath("../folder/files.php"), "r");

파일을 읽을 수는 없지만 파일에서 PHP 태그를 제거하자마자 읽을 수있게되며 내 스크립트는 페이지에 비어 있지 않은 파일 컨텐츠를 인쇄합니다.그리고 file.php는 한번도 실행된 적이 없는데 왜 문제가 되는지 궁금합니다.

내 생각에 Apache나 PHP는 PHP 태그 PHP가 포함된 파일을 텍스트로 읽을 수 없는 것 같습니다.

내 특정 파일에 대해 어떻게 활성화할 수 있습니까? (물론 전역적으로 수행하는 것은 안전하지 않습니다.)

PHP 5.2.x 및 Apache 2.0 사용

도움이 되었습니까?

해결책

알겠어요.나는 페이지를 디버깅하기 위해 Google 크롬을 사용하고 있었는데, 소스를 볼 때 Chrome이 어떤 이유로 PHP 태그를 숨긴다는 것을 깨달았습니다.Firefox에서 동일한 테스트를 실행했는데 소스를 보면 모든 것이 괜찮은 것으로 나타났습니다.

테스트 세부정보는 다음과 같습니다.

암호:

$fh = fopen("test.php","r");
while ($line = fgets($fh)){
echo $line;
}

읽을 파일(test.php):

testing <?php testing2 ?> testing3

렌더링(Chrome 및 Firefox 모두):

testing  testing3

소스 보기(firefox 사용):

testing <?php testing2 ?> testing3

소스 보기(Chrome 사용 - 내 실수의 소스):

testing  testing3

다른 팁

출력을 올바르게 해석하고 있습니까?파일 내용을 페이지 출력에 직접 인쇄하면 브라우저는 태그라고 생각하기 때문에 꺾쇠 괄호 안에 텍스트를 표시하지 않습니다.콘텐츠를 다음과 같이 제공하세요. text/plain, 또는 브라우저의 "소스 보기" 명령을 사용하여 브라우저가 표시하기로 선택한 것뿐만 아니라 실제로 무엇이 있는지 확인하세요.

흠 file_get_contents()가 저에게 효과적입니다.fopen에서만 문제가 되나요?

편집하다:정확히 어떤 오류가 발생합니까?

와디 M.문제를 해결했습니다.PHP 태그는 태그로 묶인 전체 PHP 소스 출력을 브라우저에서 숨기지만 소스 보기에서는 이를 표시합니다.감사해요!

나는 사용하고있다 htmlspecialchars($line);

문제가 해결되었습니다.

파일 이름을 변경 읽기 데이터를 변경하게 만듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top