0

このエラーを回避するために、E_NOTICE および E_STRICT エラー レベルを削除しようとしています。

Runtime Notice: Only variables should be passed by reference

php.ini を変更しようとしましたが、うまくいきませんでした。error_reporting は常に -1 です。次に、現在のアクションで動的に設定してみましたが、うまくいきました。次に、 app_dev.php の最初の行でも同じことを試しましたが、うまくいきませんでした。これは、Symfony2 がどこかに動的に設定していることを意味します。

私は何をすべきか?

編集

エラーに慣れていない人のために:

$user = $this->('security.context')->getToken()->getUser();

$first = reset($user->getRoles()); // error

$roles = $user->getRoles();
$first = reset($roles); // works fine
4

2 に答える 2

3

通知は「遅れる」わけではありませんが、これは他のコンテキストでは妥当な質問です: これはカーネルインスタンスで設定され、app_dev.php (または app.php) でインスタンス化されます。

コンストラクトの 2 番目のパラメーターはブール値のデバッグ フラグで、その場合trueerror_reporting-1 とdisplay_errors1 に設定され、それ以外の場合はそれぞれデフォルトと 0 に設定されます。

$kernel = new AppKernel('dev', false);

symfonyのドキュメント

お役に立てれば。

于 2012-11-28T10:36:01.883 に答える
2

次のシナリオで同じエラーが発生しました。

シナリオ: 既存の LIVE プロジェクトの開発環境を失いました。しかし、GIT リポジトリからコード全体を取得し、新しい開発環境に symfony 2.4.2 (LIVE サイトと同じバージョン) をインストールしました。その後、LIVE サイトで動作している Web アプリケーションのページが新しい DEV 環境で壊れていることがわかりました。

解決策: なぜ問題なのかを理解するのに多くの時間を費やしました。

composer.phar を使用して開発環境に symfony 2.4.2 をインストールすると、開発環境に新しいweb/app_dev.phpファイルが作成され、それをオフにする次のエントリがあります。

Debug::enable() ;

上記の行にコメントするだけで、php の通知がオフになり、通知を受け取っていたすべてのページが修正されます。

私と同じように悩んでいる人の参考になれば幸いです。幸運を!

乾杯。

PS: ただし、新しい開発プロジェクトで上記の行を有効にして、PHP 通知を表示し、開発中に削除できるようにすることをお勧めします。

于 2014-07-24T23:46:13.460 に答える