| 投稿者 | メッセージ | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
nazka 登録日: 2009.07.25 記事: 1 |
[環境] Fedora + Apache2 + PHP5.3.0 + nucleusCMS3.3 php5.2.8から更新したところNP_SkinFilesを含めた各種プラグインがWARNINGを吐くようになりました。 アレコレ操作していましたが上手くいかないので資産を捨てて、nucleusCMS3.4.1を入れ直しました。 Fedora + Apache2 + PHP5.3.0 + nucleusCMS3.41 DBもディレクトリも綺麗な状態で3.41をインストールしたのですが管理画面で Warning: Parameter 1 to NP_SkinFiles::event_AdminPrePageHead() expected to be a reference, value given in /home/user/blog/public_html/nucleus/libs/MANAGER.php on line 414 Warning: Parameter 1 to NP_SkinFiles::event_QuickMenu() expected to be a reference, value given in /home/user/blog/public_html/nucleus/libs/MANAGER.php on line 414 が表示されます。 該当するコード部は、 call_user_func(array(&$this->plugins[$listener],'event_' . $eventName), $data); なのですが。 call_user_func(array(&$this->plugins[$listener],'event_' . $eventName), &$data); とする必要があるようです。 以下のコードで挙動を簡単に確認取りましたが <?php class hoge { function chg( &$data ){ $data=$data+10; } } $c = new hoge(); $i = 10; $c->chg($i); echo "CHK1: $i \n"; call_user_func( array($c,"chg"), $i ); echo "CHK2: $i \n"; call_user_func( array($c,"chg"), &$i ); echo "CHK3: $i \n"; [php5.2.8] CHK1: 20 CHK2: 20 CHK3: 30 [php5.3.0] CHK1: 20 Warning: Parameter 1 to hoge::chg() expected to be a reference, value given in /home/user/blog/public_html/nucleus/libs/test.php on line 10 CHK2: 20 CHK3: 30 という結果でした。 5.2.9, 5.2.10 を私が入れてなかったので確認してませんでしたが expected to be a reference や MANAGER で それらしい話題が見つからなかったので報告します。 # 追伸: php5.2.8でも warning出ないだけだけで参照アクセスできないけど。 問題なかったのだろうか……。 _________________ Chiether, Aklzki with Nazka. |
||||||||
|
|
|||||||||
|
shizuki モデレーター ![]() 登録日: 2006.03.23 記事: 891 所在地: 西播磨 |
この問題、つい先日も本家の方で別のプラグインで出てました。
そもそもなぜ此処で参照渡しなのかがわからない。
PHP5.3でE_DEPRECATEDにするとさらに愉快になれます。 これ何とかしたいんだけどなぁ…… |
||||||||
|
|
|||||||||
|
shizuki モデレーター ![]() 登録日: 2006.03.23 記事: 891 所在地: 西播磨 |
えーと。 中途半端なまま放置したような形になっててごめんなさい。 上で書いた
ここまで読んで 「「非表示にしたら解決」って、それってどうよ?」 って思ったのをそのまま書いてしまいました。 その後、nazkaさんの書かれた方法
ただし、デフォルト状態だと
さすがに、元のコードのままじゃなくて、
|
||||||||
|
|
|||||||||
|
Mocchi 登録日: 2006.11.19 記事: 143 |
ほぼ1年前の投稿ですが、うちの環境でも再現しました。 Ubuntu Server Ediition 10.05 + PHP 5.3.2 + MySQL 5.1.41 + Nucleus CMS 3.31SP3 きっかけは、プラグインがAdminPrePageHeadとBookmarkletExtraHeadでコードを出力しなかったことでした。参照した変数に追記する形で利用しているので、変数の参照が返されていないのが原因。 以下のようにして対応しました。
Nucleus 3.41では修正されてますね。まだ3.31系を使っている方は要注意です。 |
||||||||
|
|
|||||||||
|
Nucleus(JP)フォーラム Forum Index -> インストール時の問題 -> [事前解決済] MANAGER.php の expected to be a reference に、ついて。 |
|||||||||
|
All times are GMT + 9 Hours
新規投稿: 不可 Powered by phpBB © 2001, 2002 phpBB Group |
|||||||||