2017-11-07 8 views
0

私はphpで廃止予定の表示を無効にすることに1つの問題があります。 私のプロジェクトでは廃止された機能が多く使われています。これは非常に大きなプロジェクトですので、私はこの機能を廃止されていないものと置き換えることはできません。沈黙PHP内のE_DEPRECATED

この関数の場合: mcrypt_create_iv エラー "Message mcrypt_create_iv()は推奨されていません"というエラーメッセージが表示されます。

どうすれば無効にできますか? 私は多くの方法を試みたが、これが唯一のエラー報告があるときは== 0

をerror_reportingの場合投げされていません。

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が動作しているが、私は唯一の1つのフラグを削除した場合、私は見ることができます私の画面でエラーが発生しました。

あなたはアイディアを知っていますか?私は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を有効にしていますが、すべてを削除すると、?すべてを除外するのではなく、見たいものだけをリストする方がいいでしょう。これはそれがとても親切である理由の1つかもしれません。

第2に、エラー報告を残して、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のリリースであることを忘れてしまうからです。また、エラーを抑制することにより、非推奨の警告よりも重要な他の問題を潜在的に逃してしまう可能性があります。

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

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

mcrypt拡張モジュールは現在、10年近くアバンダン、また使用することはかなり複雑でしたされています。そのため、OpenSSLが推奨されていません。OpenSSLはPHP 7.2でコアからPECLに削除されます。

+0

はいE_ALLを有効にして、すべてのテストを無効にしました。 –

+0

'@'は、非推奨の通知だけでなく、その呼び出しで発生する可能性のあるエラーメッセージを抑制します。本当に悪い考え。 – Sammitch

関連する問題