문제

소스 폴더를 주소 표시 줄에 입력하는 코드와 페이지의 일부 (타일) 및 기타 코드 (클래스 등)를 포함하는 폴더를 두 가지로 분리하고 싶습니다. 그래서 모든 PHP 파일이 시작될 때 다음을 추가했습니다.

<?php
// index.php
include("config.php");
include("session.php");
?>

Config는 지금까지 이것을 포함하지만 다른 디렉토리 (로그 등)가 필요한 경우 확장 할 수 있습니다.

<?php
// config.php
$_PATHS["base"]      = dirname(dirname(__FILE__)) . "\\";
$_PATHS["includes"]  = $_PATHS["base"] . "includes\\";
ini_set("include_path", "$_PATHS[includes]");
?>

그리고 세션은 무엇보다도 생성자에서 session_start. 또한 다른 곳에 포함 된 다른 클래스가 필요하므로 세션 포함 전에 구성이 필요합니다. 그러나 나는 오류가 발생합니다

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started ...

해당 특정 오류 주위에 포함을 전환하면 사라지지만 헤더 파일에 링크를 수동으로 시작해야합니다. 어쨌든 디렉토리를 먼저 설정하고 여전히 세션을 사용할 수 있거나 session_start A 파일에 포함 된 첫 번째 일입니까?

도움이 되었습니까?

해결책

이미 이것을 시도했는지는 모르겠지만, 테스트의 수단으로 config.php는 대신 구성 코드를 포함시키고 붙여 넣습니다.

그래서 이거:

<?php
// index.php
include("config.php");
include("session.php");
?>

이것이된다 :

<?php
// config
$_PATHS["base"]      = dirname(dirname(__FILE__)) . "\\";
$_PATHS["includes"]  = $_PATHS["base"] . "includes\\";
ini_set("include_path", "$_PATHS[includes]");
//index
include("session.php");
?>

작동하면 config.php 파일* [아래 참조]에 문제가 있습니다. 그렇지 않은 경우 오류가 여전히 INI_SET 줄을 가리십니까? [위의 주석에서 현재 오류가 가리키는 곳이라고 가정합니다.

*한 번 읽은 것을 기억합니다. 링크를 찾으려고합니다

좋아, UTF-8 및 Session_Start에 관한 버그 보고서를 제출 한 사람을 찾았습니다. 분명히 그것은 버그가 아닙니다. 왜 그런지 조사하지 않았지만 어느 쪽이든 그것은 같은 문제가 아닙니다. UTF-8 인코딩 유형은 쿠키 오류가 아니라 세션 오류를 유발합니다. 관심이 있으시면 여기를 참조하십시오 - UTF -8 오류

다른 팁

그 오류의 나머지는입니다 정확한 비트 그것은 문제가 어디에 있는지 알려줄 것입니다! config.php의 끝에 약간의 후행 공백이있을 가능성이 있습니다.

(또는 Session.php는 전화하기 전에 출력을 보냅니다. session_start(),하지만 나는 지금 정말 추측하고 있습니다 :)

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