2011-01-31 2 views
0

나는 콘솔 ("php -q"명령)에서 cron이 호출하는 "A"라는 파일을 가지고있다. 그 PHP 파일은 PHP 파일 "B"를 필요로합니다. 파일 "B"는 프로젝트의 여러 위치에서 사용되며 if(!isset($_SESSION)) session_start();으로 시작합니다. 브라우저에서는 잘 작동하지만 cron에서 사용할 때는 "A"파일에 "B"파일이 필요하고 "B"파일에서 세션을 시작하려고합니다. "session headers sent"통지. 나는 나중에 require_once("B") (그리고 물론, ob_clean()) 이전에 파일 "A"에 ob_start()을 넣으려고했으나 오류는 계속 발생합니다!ob_start()가 포함 된 파일과 필수 파일에 영향을 미칠 수 있습니까?

내가 뭘 잘못하고 있니? 어떻게하면 ("A"파일에서) 파일 "B"가 콘솔에 아무것도 보내지 못하게 할 수 있습니까?

+2

세션을 명령 줄에서 사용할 수 없으며 쿠키를 보낼 브라우저가없고 단 한 번의 요청 만하므로 아무런 의미가 없습니다. –

+0

무엇이 보내 졌다고 생각하십니까? 그리고 * 콘솔에 아무것도 보내지 않는 것이 무엇입니까? –

+0

@ 단 - 알아,이 게시물의 요점은 :) @ 콜. 파일 "B"가 세션을 열려고 할 때 "error_log"에 오류가 기록되기 때문에 – guest86

답변

2

ini_set() 또는 php.ini 구성을 통해 CLI PHP 스크립트에서 session.use_cookies을 비활성화하십시오. 이렇게하면 session_start() 쿠키를 보내지 마십시오. 세션에 대한 캐시 설정을 확인하고 session_start() 캐시에도 HTTP 헤더를 보내야합니다.

ini_set('session.use_cookies', 0); // disable using cookies for session ID (cookies = headers) 
session_cache_limiter(false);  // disable sending cache headers 
// ... 
session_start(); 
+0

조언을 주셔서 고마워요,하지만 "PHP에서 use_cookies"를 비활성화 할 수 있습니까? 파일 "A"가 호출 될 때에 만? 내 사이트의 서버에서 php.ini에 액세스 할 수 없습니다. \ – guest86

+0

@ guest86 : 예, 말했듯이 : "... via ini_set() 또는 via ...". – Progman

+0

니스! 그래서 "require_once"전에 "ini_set"use_cookies를 해제하고 다시 설정해야합니까? 또는 서버가 나중에 기본값으로 되돌립니다. – guest86

0

$ _SESSION은 주로 CLI에 모든 출력하기 전에 호출 할

+0

알아! 나는 브라우저 사용을 위해 만들어진 표준 PHP 파일 (B)을 사용하지는 않지만, 어떻게해서든지 (파일 A를 통해) 세션을 열지 못하도록 막는다! 그래서 "require_once (B)"앞에 "ob_start"를 배치하고 "require_once"다음에 "ob_clean"이라고 부릅니다. – guest86

+0

이렇게하면 이해할 수 있습니다. 일반적인 변수를 다음과 같이 선언하십시오. $ sessionCheck = 1; 이제 B 파일에서 if (! isset ($ _ SESSION, $ sessionCheck)) – dynamic

0

위한 ob_start()를 가지고 작업 할 수 있도록 쿠키를 기반으로합니다. 그래서, 파일 "A"의 맨 위에.

또한 $ _SESSION은 수퍼 글로벌이며 항상 설정되므로 if (! isset ($ _ SESSION))는 아무 것도 수행하지 않을 수도 있습니다.

+0

파일 "A"맨 위에 있습니다! – guest86

+0

'$ _SESSION'은 세션이로드되거나 시작될 때만 존재합니다. – Progman

0

$ _SESSION = true; 파일 "A"에서 var를 설정하게하고 세션을 시작하지 않습니다. 그것은 더럽지 만 효과가 있습니다.

+0

이 소리는 쉽습니다! 누구든지이 접근 방식에 잘못된 점을 알고 있습니까? – guest86

관련 문제