web-dev-qa-db-ja.com

PHP 5.4での厳格な標準の無効化

私は現在php 5.4でサイトを運営していますが、これに先立って5.3.8でサイトを運営していました。残念ながら、php 5.4はE_ALLE_STRICTを組み合わせているため、error_reportingの以前の設定は現在機能していません。以前の値はE_ALL & ~E_NOTICE & ~E_STRICTでした。値を1つずつ有効にする必要がありますか?

エラーが多すぎて、修正できないコードがファイルに含まれています。

95
icomrade

コメンターが述べているように、bestオプションはエラーを修正することですが、限られた時間または知識で、それが常に可能であるとは限りません。 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);

それらの1つは、ソフトウェアを使用できるようにするのに役立つはずです。通知と厳密なものは、問題または潜在的な問題の指標であり、PHP 5.4ではコードの一部が正しく機能しないことがあります。

お役に立てれば。

138
David Stockton

.htaccess php_valueは、PHPサーバーAPIをWebサーバーApacheのモジュールとして使用する場合にのみ機能します。 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

仮想ホスト、サーバーレベル。

2
Taras

E_DEPRACATEDも無効にする必要がある場合は、次を使用します。

php_value error_reporting 22527

私の場合、CMS Made Simpleは「E_STRICTがerror_reportingで有効になっている」および「E_DEPRECATEDが有効になっている」と不平を言っていました。その1行を.htaccessに追加すると、両方の設定ミスが解決されました。

1
envision

同時に2つの場所でerror_reportingを設定すると、うまくいきました

PHPコードのどこかに

ini_set('error_reporting', 30711);


および.htaccessファイル

php_value error_reporting 30711
1
Guzik

気をつけて、LAMP、Apache、またはこれを有効にするために使用しているものを再起動する必要があるかもしれません。これについてはしばらく頭を悩ませましたが、おそらくウェブサイトがキャッシュしていたために、サービスが再開されるまで何の影響も与えないようでした。

0
Moon