내 PHP 서버에서 갑자기 세션 오류가 발생합니다.

내 PHP 서버에서 갑자기 세션 오류가 발생합니다.

기본적으로 Windows용 LAMP 설정인 Xampp을 실행하고 있습니다. 저는 수년간 아무 문제 없이 사용해왔는데 갑자기 PHP 세션을 사용하는 모든 사이트 페이지에서 다음과 같은 오류가 발생합니다...

경고: session_start() [function.session-start]: 세션 캐시 제한기를 보낼 수 없습니다. 헤더가 이미 C:\webserver\htdocs\friendproject2\labs\2.php:1에서 C:\webserver\htdocs로 전송되었습니다. 3행의 \friendproject2\labs\2.php

나는 이것이 일반적으로 2가지 중 1가지에서 발생한다는 것을 알고 있습니다.

  1. session_start() 함수가 호출되기 전에 화면에 공백이 인쇄되면 때때로 이런 일이 발생할 수 있습니다.
  2. session_start()가 호출되기 전에 화면/브라우저에 인쇄된 내용이 있는 경우.

이제 내 문제는 다릅니다. 오늘 밤 이전에는 세션을 사용하는 수백 개의 파일이 있었는데 그 중 어느 것도 이러한 오류를 표시하지 않았습니다. 사용자 오류를 간과한 것은 단지 하나의 파일이 아니라 모든 파일에 영향을 미치기 시작한 것입니다. 나는 오늘 밤이나 최근에 내 컴퓨터를 변경한 적이 없으며 기억합니다.

이 문제의 원인은 무엇입니까? 그것은 나를 미치게 만들고 있으며 왜 이런 일이 일어나기 시작했는지 아무도 모르는 것 같습니다. 서버 관련인거 같은데

파일을 만들어 내 서버 웹의 폴더에 넣고 이 bvelow와 같은 간단한 파일로 만들 수도 있지만 위에 표시된 오류가 계속 발생합니다....

<?PHP
session_start();

$_SESSION['test'] = 'test value';

echo $_SESSION['test'];
?>

답변1

모든 파일이 UTF-8 인코딩으로 저장되었는지 확인하세요. UTF-8로 인코딩된 파일에는 빅 엔디안/리틀 엔디안 바이트 순서의 차이를 알려주는 BOM(바이트 순서 표시)이 포함될 수 있습니다. PHP는 BOM을 이해하지 못하며 파일 시작 부분에 도달하면 데이터를 처리한다고 가정하고 전송합니다. 그때쯤이면 헤더를 수정하기에는 너무 늦습니다.

해결책은 파일을 ANSI로 저장하는 것입니다. IDE/편집기를 구성하십시오.

도움이 되길 바랍니다.

편집하다:

이 경우 변환해야 할 파일이 많을 것입니다. iconv를 사용하는 이 bash 쉘 코드를 사용해 볼 수 있습니다(다음에서 수정됨:https://stackoverflow.com/questions/1182037/osx-change-file-encoding-iconv-recursive)

for files in /mydisk/myfolder/*.php
  do
    iconv -f UTF-8 -t ISO-8859-1 "$files" "${files%.php}"
done

관련 정보