PHP 5.4에서 엄격한 표준 비활성화


95

나는 현재 php 5.4에서 사이트를 운영하고 있는데, 그 전에는 5.3.8에서 내 사이트를 운영하고있었습니다. 불행하게도, PHP 5.4을 결합 E_ALL하고 E_STRICT, 수단 내 이전 설정은 error_reporting이제 작동하지 않습니다. 내 이전 값은 E_ALL & ~E_NOTICE & ~E_STRICT한 번에 하나씩 값을 활성화해야합니까?

오류가 너무 많고 파일에 수정하기에 너무 많은 코드가 포함되어 있습니다.


11
조언 ... 코드를 수정하거나 버그는 디버깅보다 더 어려워 얻을 것
바바

7
s / Unfortunately / Fortunately
NikiC

96
조언을 해주셔서 감사하지만 전체 jfusion phpbb3 플러그인을 다시 작성하는 데 필요한 지식이 부족합니다. 그래도 겸손 해 주셔서 감사합니다.
icomrade 2012

12
나는 당신이 오류를 고쳐야한다는 우리 친구들의 의견에 동의합니다. 그들은 와서 당신의 발목을 물고 모든 오류를 숨기면 디버그하기가 어렵습니다. 하지만 저는 또한이 외로운 질문에 대한 포스터를 판단하는 것이 공정하지 않다고 생각합니다. 고객이 전화를 걸어 태어나지 않은 자녀에게 전화를 걸어 IT를 충분히 사용하지 않았기 때문에 끔찍한 작업을 작성하지 않아도된다면
Jonathan 도스 산토스

7
이것은 완벽하게 합리적인 질문입니다. 그리고 예 @icomrade-당신은 여기에서 겸손과 풍자에 대해 옳습니다. StackOverflow의 덜 매력적인 특성 중 하나입니다. 즉, 나는 당신이 받고있는 경고 중 적어도 몇 가지를 다룰 것을 권장합니다.
halfer

답변:


139

댓글 작성자가 말했듯이 최선의 선택은 오류를 수정하는 것이지만 제한된 시간이나 지식으로 항상 가능한 것은 아닙니다. php.ini 변경 사항

error_reporting = E_ALL

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT

php.ini에 액세스 할 수없는 경우 잠재적으로 .htaccess 파일에 넣을 수 있습니다.

php_value error_reporting 30711

이것은 E_ALL 값 (32767)이고 E_STRICT (2048) 및 E_NOTICE (8) 값 제거입니다.

.htaccess 파일에 대한 액세스 권한이 없거나 활성화되지 않은 경우 브라우저 호출에서로드되는 모든 스크립트의 PHP 섹션 상단에이 파일을 배치해야합니다.

error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);

그중 하나는 소프트웨어를 사용할 수 있도록 도와줍니다. 주의 사항과 엄격한 내용은 문제 또는 잠재적 문제의 표시기이며 일부 코드가 PHP 5.4에서 올바르게 작동하지 않을 수 있습니다.


11
나는 PHP 5.4.5를 사용하고 있으며 위의 모든 것을 시도했지만 엄격한 알림을 비활성화 할 수 없었습니다. (다른 아이디어가 있습니까?
ro ko

2
error_reporting ()에 다른 부분과 함께 & ~ E_DEPRECATED를 넣을 수 있습니다. 어떤 메시지가 표시됩니까?
데이비드 스탁턴

4
@roko 귀하의 코드가 어딘가에 이것을 재정의 할 수 있습니까? php.ini에서 비활성화 한 후에도 여전히 엄격한 오류가 발생했습니다. 그 다음에는 Drupal을 사용하는 일부 웹 사이트에서만 해당 값이 코드에 설정되어 있음을
깨달았습니다

1
@AndrewSpear 이상합니다. 이론적으로 error_reporting 설정은 오류가 표시되는 모든 위치에 표시되는 오류에 영향을 미칩니다. display_errors 설정은 출력 (PHP 페이지에서)에 오류가 있는지 여부에 영향을 미치고 error_log는 오류가 로그에 기록되는 위치에 영향을 미칩니다. display_errors가 켜져 있으면 로그에서와 동일한 오류가 화면에 표시되어야합니다.
데이비드 스탁턴

4
+1은 StackOverflow Smuglord ™로 전환하지 않고 간단한 답변으로 간단한 질문에 답변합니다.
Joshua Pech

2

.htaccess php_value는 웹 서버 Apache의 모듈로 PHP Server API를 사용하는 경우에만 작동합니다. IfModule 구문을 사용하십시오.

# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
    php_value error_reporting 30711
</IfModule>

PHP Server API CGI / FastCGI를 사용하는 경우

ini_set('error_reporting', 30711);

또는

error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);

PHP 코드 또는 PHP 구성 파일 .user.ini | php.ini 수정 :

error_reporting = E_ALL & ~E_STRICT & ~E_NOTICE

가상 호스트, 서버 수준에서.


1



PHP 코드의 어딘가 에서 동시에 두 곳에서 error_reporting을 설정하면 저에게 효과적이었습니다.

ini_set('error_reporting', 30711);


.htaccess 파일

php_value error_reporting 30711

php.ini에 액세스하지 않고 나를 위해 일한 유일한 것, 위의 다른 것 중 하나는 자체적으로 작동하지 않고 500 오류 만 반환했습니다. 둘 다 함께 베이비 !!!
Jamie Hutber 2014-08-15

1

E_DEPRACATED도 비활성화해야하는 경우 다음을 사용하십시오.

php_value error_reporting 22527

필자의 경우 CMS Made Simple은 "E_STRICT가 error_reporting에서 활성화 됨"과 "E_DEPRECATED가 활성화 됨"이라고 불평했습니다. .htaccess에 한 줄을 추가하면 두 가지 잘못된 구성이 모두 해결되었습니다.


0

알림을 받으려면 LAMP, Apache 또는이를 적용하기 위해 사용하는 모든 것을 다시 시작해야 할 수 있습니다. 이것에 대해 잠시 동안 우리의 두뇌를 긁어 모았고, 아마도 웹 사이트가 캐싱했기 때문에 서비스가 다시 시작될 때까지 아무런 영향을 미치지 않는 것처럼 보였습니다.


아니. Apache가 PHP 설정을 다시로드해야하기 때문입니다. 이것은 서비스가 시작될 때만 수행되는 AFAIK입니다.
svin83
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.