2017-11-07 1 views
0

PHP에서 사용되지 않는 오류 표시 사용 안함에 한 가지 문제가 있습니다. 내 프로젝트에서 많은 비추천 함수가 사용됩니다. 이것은 매우 큰 프로젝트이므로,이 함수를 현재 비 지원되지 않는 함수로 대체 할 수는 없습니다.PHP에서 무음 E_DEPRECATED

이 함수의 경우 : mcrypt_create_iv "Message mcrypt_create_iv()가 권장되지 않습니다."라는 메시지와 함께 ErrorException이 발생합니다.

어떻게 비활성화 할 수 있습니까? 나는 많은 방법을 시도하고,이 던지는되지 않은 경우에만 ==에게 error_reporting를 0

때 오류보고는 다음과 같습니다

error_reporting(E_ALL^(E_DEPRECATED | E_USER_DEPRECATED | E_NOTICE | E_STRICT | E_CORE_ERROR | E_PARSE | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_WARNING | E_USER_WARNING | E_USER_ERROR | E_COMPILE_WARNING | E_CORE_WARNING | E_ERROR)); 

everythink 노력하고 있습니다,하지만 난 단 하나 개의 플래그를 제거하면 나는 볼 수 있습니다 내 화면에 오류가 있습니다.

아이디어를 알고 있습니까?

나는 PHP 7.1을 사용하고 있습니다 :

PHP 7.1.10 (cli) (built: Oct 10 2017 01:30:46) (NTS) 
Copyright (c) 1997-2017 The PHP Group 
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies 
    with Zend OPcache v7.1.10, Copyright (c) 1999-2017, by Zend Technologies 
+4

사용하지 않는 경고가 향후 삭제된다는 표시이기 때문에 사용하지 않는 경고는 무시하지 않는 것이 좋습니다. – Jer

답변

0

먼저, error_reporting() 구성은 나에게 조금 이상한 것 같다. E_ALL을 사용하도록 설정했으나 을 모두 제거하면? 모든 것을 제외하는 대신보고 싶은 목록 만 나열하는 것이 좋습니다. 이것이 너무 민감한 이유 중 하나 일 수 있습니다.

둘째, 오류보고를 남겨두고 other error-related settings을 조정하는 것이 좋습니다. 검토를 위해 오류 만 로그 파일에 표시되도록하십시오. 보기 : 모든 사람이 실패하면 http://php.net/manual/en/errorfunc.configuration.php

error_reporting=E_ALL 
display_errors=no 
log_errors=yes 
error_log=/var/log/php/errors.log 

마지막으로, 당신은 @ suppression를 사용하여이 경고를 피할 수 있습니다. 이것은 좋은 생각이 아닙니다. 왜냐하면이 문제가 존재하고 결국 PHP의 향후 릴리스에서이 비추천 함수가 제거됨에 따라 완전히 중단 될 것이라는 것을 잊을 것이기 때문입니다. 또한 오류를 억제함으로써 비추천 경고보다 중요한 다른 문제를 놓칠 가능성이 있습니다.


http://php.net/manual/en/migration71.deprecated.php

Mcrypt 라이브러리 확장

@mcrypt_create_iv(...); // Suppress errors. 
// Last-ditch, last resort. Refrain from using. 

는 이제 거의 10 년에 대한 밴던하고, 또한 사용하기 매우 복잡했다. 따라서 OpenSSL이 PHP 7.2에서 코어 및 PECL로 제거 될 것이므로 OpenSSL을 사용하지 않을 것입니다.

+0

예 E_ALL을 활성화하고 테스트에서만 all을 비활성화했습니다. –

+0

'@'은 단순히 비추천 알림뿐만 아니라 그 호출에서 발생할 수있는 오류 메시지를 표시하지 않습니다. 진짜 나쁜 생각이야. – Sammitch