2011-09-08 2 views
9

register_globalsmagic_quotes_gpc이 필요한 기존 앱이 있습니다. error_reportingE_ALL & ~E_DEPRECATED으로 설정 했는데도 여전히 경고가 나타나기를 원하기 때문입니다. 나는 PHP CLI를 실행하면경고로 표시되는 PHP 5.3 사용 중단 메시지

내가 얻을 다음

$ php -d "error_reporting=E_ALL & ~E_DEPRECATED" -v 
PHP Warning: Directive 'register_globals' is deprecated in PHP 5.3 and greater in Unknown on line 0 
PHP Warning: Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0 
PHP 5.3.3 (cli) (built: Mar 30 2011 13:51:41) 
Copyright (c) 1997-2010 The PHP Group 
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies 
    with Xdebug v2.1.2, Copyright (c) 2002-2011, by Derick Rethans 
왜 경고로 중단 메시지를 보여주고있다

? 그들은 E_DEPRECATED 레벨에 있어야하지 않습니까?

내가 그들을 멀리

$ php -d "error_reporting=E_ALL & ~E_WARNING" -v 
PHP 5.3.3 (cli) (built: Mar 30 2011 13:51:41) 
Copyright (c) 1997-2010 The PHP Group 
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies 
    with Xdebug v2.1.2, Copyright (c) 2002-2011, by Derick Rethans 

error_reportingE_ALL & ~E_DEPRECATED & ~E_WARNING로 바꿀 수 가야하지만 내 웹 애플리케이션에 대한 경고를 표시하지 않을 얻을 경고를 보여주지해야 할 것 같다. 어떤 제안? CLI에 별도의 php.ini을 사용해야합니까?

+0

E_WARNING으로 프로그래밍되었습니다. 그리고 그것이 바로 그 것입니다. (Btw, 두 경고는 쉽게 고칠 수 있습니다.) – mario

+1

두 지시문을 모두 해제해야합니다. 그들은 나쁜 생각입니다. –

+0

@ Ondřej Mirtes가 OP를 인용 한 것입니다. 첫 번째 행을 놓친 것 같습니다. "register_globals 및 magic_quotes_gpc가 활성화되어야하는 기존 앱이 있습니다." –

답변

0

둘 중 하나를 사용하지 않는 것이 좋습니다. 그들은 E_WARNING입니다. 왜냐하면 그것들은 개발자가 선택한 오류 유형이기 때문에 (해당 수준에서 다른 것을 사용하는 것은 임의적입니다).

구성에서 해당 기능이 해제되어 있는지, 또는 피할 수없는 경우 구성에서 이러한 유형의 경고를 해제하는 것이 좋습니다. 그렇지 않으면 AJAX 요청이 망가질 위험이 있습니다. 우리 모두는 그것에 대처해야합니다.

0

display of startup errors을 끄는 것이 도움이 될 수 있습니다. 오류는 여전히 오류 로그에 기록되어야하지만 응용 프로그램의 출력에는 표시되지 않습니다.

+0

나는'display_startup_errors = Off'를 가지고 있고 여전히 경고를 받는다. – ejunker

0

당신은

set_error_handler("myFunc"); 

하여 오류 처리기를 등록 시도 할 수 및 MYFUNC 뭔가 같다 : 문자열 "register_globals의"가 발견되지 않는 경우

myFunc($errno,$errstr) { 
    return strpos($errstr,"register_globals")===false ? false : true; 
} 

때문에, FUNC 거짓과 표준 오류 처리를 반환 그렇지 않으면 true를 반환하고 아무 일도 일어나지 않습니다.

1

LMGTFY

가장 좋은 REPLY

[2009-09-07 세계 협정시 08시 42분] [email protected] 예. 그것은 E_DEPRECATED가 아니며 E_WARNING이고 변경되지 않습니다.

[2010-03-23 ​​14:26 UTC] [email protected] esoft dot dk에서 확인하십시오> 실제로 문서에 그 내용이 나와 있으면 이미 닫힌 보고서를 부딪 치지 않고 별도의 문제로보고하십시오.

어떻게 행동하는지 받아 들여야합니다.
변경 사항은 v6에만 적용됩니다.

2

변경 error_reporting에서 E_ALL & ~E_DEPRECATED & ~E_WARNING으로 변경하십시오.

그런 다음 코드 세트의 시작 부분에 :

error_reporting(E_ALL | E_STRICT); 

초기 PHP 검사에 합격 한 지금 당신은 당신의 완전한 오류보고 환경을 가지고있다. :)