Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#1 2012-06-21 22:22:04

owl
メンバー
登録日: 2006-02-23
投稿: 8

Re: 質問:PHP5.4.4でnucleus3.64が表示されない(http500)

最新バージョンのインストールを以下の環境(趣味で最新です)でNucleus CMS v3.64を表示させようとしても"HTTP500"のエラーが出ます。
《環境》
• Apache/2.4.2
• PHP/5.4.4
• MySQL5.5.25

ちなみにPHP/5.3.14では何の支障もなく動いていますし、PHP/5.4.4でもインストールしているphpMyAdmin3.5.1、WordPress 3.4ではうまく動作しています。
Nucleusでのconfig.phpあるいは.htaccessファイルをいじる必要がある?はたまた本体ファイルの改編が必要?等々どなたかご教授の程

オフライン

#2 2012-06-21 23:15:42

Mocchi
メンバー
登録日: 2006-11-19
投稿: 438

Re: 質問:PHP5.4.4でnucleus3.64が表示されない(http500)

3.64がもしPHP5.4で動かないのであれば、現在開発中の4.0も同様に動かないことが予想されます。原因の解明にご協力下さい。

/nucleus/lib/globalfunctions.phpの29行目の「$CONF['debug'] = 0;」を「$CONF['debug'] = 1;」とすると、それまで出力が抑制されていたすべての警告メッセージが出力されるようになります。

この中から、スクリプトの実行を止めていそうなものを探して教えてください。

オフライン

#3 2012-06-23 21:50:36

owl
メンバー
登録日: 2006-02-23
投稿: 8

Re: 質問:PHP5.4.4でnucleus3.64が表示されない(http500)

返信遅くなりました。申し訳ありません。

Mocchi さんの発言:

3.64がもしPHP5.4で動かないのであれば、現在開発中の4.0も同様に動かないことが予想されます。原因の解明にご協力下さい。

不確かではありますが、4.0についても同様の結果のようでした。

Mocchi さんの発言:

/nucleus/lib/globalfunctions.phpの29行目の「$CONF['debug'] = 0;」を「$CONF['debug'] = 1;」とすると、それまで出力が抑制されていたすべての警告メッセージが出力されるようになります。
この中から、スクリプトの実行を止めていそうなものを探して教えてください。

理解が及んでいないのかも知れないのですが、上記の「警告メッセージが出力されるようにな」る以前で、初期ページで、"http500"(Windows7,IE9)となります。
引き続き何卒よろしくお願いいたします。

オフライン

#4 2012-06-24 15:33:36

shizuki
Administrator
From: 西播磨
登録日: 2006-03-23
投稿: 900
ウェブサイト

Re: 質問:PHP5.4.4でnucleus3.64が表示されない(http500)

Mocchiさんが書かれていることは試されましたか?
$CONF['debug'] = 0;
の状態では、確かに何かが表示される以前にエラー画面が表示されますが、
$CONF['debug'] = 1;
にすると、ちゃんとPHPのエラーメッセージが表示されませんでしたか?

原因は
/nucleus/libs/MANAGER.php
の429行目です。
この行の

call_user_func(array(&$this->plugins[$listener], 'event_' . $eventName), &$data);

call_user_func(array(&$this->plugins[$listener], 'event_' . $eventName), array(&$data));

に書き換えると解決します。

オフライン

#5 2012-06-24 21:50:35

owl
メンバー
登録日: 2006-02-23
投稿: 8

Re: 質問:PHP5.4.4でnucleus3.64が表示されない(http500)

shizuki さんの発言:

Mocchiさんが書かれていることは試されましたか?
$CONF['debug'] = 0;
の状態では、確かに何かが表示される以前にエラー画面が表示されますが、
$CONF['debug'] = 1;
にすると、ちゃんとPHPのエラーメッセージが表示されませんでしたか?

はい、$CONF['debug'] = 1;へ変更しました。

shizuki さんの発言:

原因は
/nucleus/libs/MANAGER.php
の429行目です。
この行の

call_user_func(array(&$this->plugins[$listener], 'event_' . $eventName), &$data);

call_user_func(array(&$this->plugins[$listener], 'event_' . $eventName), array(&$data));

加えてphp.iniにてdisplay_errors = OffをOnに変えると次のメッセージが表示されました(アドバイス、ありがとうございました)。
大量につきマナー違反かも知れませんが、不慣れ故ご容赦のほど
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\MEMBER.php on line 54
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\MEMBER.php on line 65
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\MANAGER.php on line 69
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\MANAGER.php on line 145
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\MANAGER.php on line 190 Strict Standards: Non-static method MANAGER::instance() should not be called statically in C:\Apache2\htdocs\nucleus\nucleus\libs\globalfunctions.php on line 169 Notice: Use of undefined constant _CHARSET - assumed '_CHARSET' in C:\Apache2\htdocs\nucleus\nucleus\libs\sql\mysql.php on line 75
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\SKIN.php on line 171
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\SKIN.php on line 188
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\SKIN.php on line 189
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\ACTIONS.php on line 736
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\ACTIONS.php on line 737
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\ACTIONS.php on line 743
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\BLOG.php on line 164
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\BLOG.php on line 165
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\BLOG.php on line 318
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\BLOG.php on line 459
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\ITEMACTIONS.php on line 457
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\ITEMACTIONS.php on line 526
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\ITEMACTIONS.php on line 527
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\COMMENTS.php on line 73
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\COMMENTS.php on line 74
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\COMMENTS.php on line 319
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\PAGEFACTORY.php on line 138
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\MANAGER.php(272) : eval()'d code on line 1 Strict Standards: Declaration of NP_Text::doSkinVar() should be compatible with NucleusPlugin::doSkinVar($skinType) in C:\Apache2\htdocs\nucleus\nucleus\plugins\NP_Text.php on line 132 Strict Standards: Declaration of NP_Text::doTemplateVar() should be compatible with NucleusPlugin::doTemplateVar(&$item) in C:\Apache2\htdocs\nucleus\nucleus\plugins\NP_Text.php on line 132
Deprecated: Assigning the return value of new by reference is deprecated in C:\Apache2\htdocs\nucleus\nucleus\libs\MANAGER.php(272) : eval()'d code on line 1 Fatal error: Call-time pass-by-reference has been removed in C:\Apache2\htdocs\nucleus\nucleus\plugins\NP_MultipleCategories.php on line 663

オフライン

#6 2012-06-24 22:28:04

shizuki
Administrator
From: 西播磨
登録日: 2006-03-23
投稿: 900
ウェブサイト

Re: 質問:PHP5.4.4でnucleus3.64が表示されない(http500)

display_errorsがoffだったんですね。すみません。 :oops:
いっぱいエラー出てますが、現状処理が停止している原因は、NP_MultipleCategoriesのようですが、手元のバージョンだと表示されている行は

}

だけなので、owlさんが使用中のNP_MultipleCategories.phpの663行目がどういった記述になってるか教えてください。

オフライン

#7 2012-06-25 21:44:26

owl
メンバー
登録日: 2006-02-23
投稿: 8

Re: 質問:PHP5.4.4でnucleus3.64が表示されない(http500)

shizuki さんの発言:

display_errorsがoffだったんですね。すみません。 :oops:
いっぱいエラー出てますが、現状処理が停止している原因は、NP_MultipleCategoriesのようですが、手元のバージョンだと表示されている行は

}

だけなので、owlさんが使用中のNP_MultipleCategories.phpの663行目がどういった記述になってるか教えてください。

とりあえずNP_MultipleCategories.phpの663行目について報告します。
Line 659 case 'link':
Line 660  if ($params[0] != 'item') return;
Line 661  $item = $this->_getItemObject(intval($itemid));//
Line 662  if ($item) {
Line 663    $this->doTemplateVar(&$item);

オフライン

#8 2012-06-28 00:14:21

shizuki
Administrator
From: 西播磨
登録日: 2006-03-23
投稿: 900
ウェブサイト

Re: 質問:PHP5.4.4でnucleus3.64が表示されない(http500)

$this->doTemplateVar(&$item);

$this->doTemplateVar($item);

にすれば動くようになると思います。
あと

	function doTemplateCommentsVar(&$item, &$comment, $what='') {
		if ($what == 'itemlink') {
			$this->doTemplateVar(&$item, $what);
		}
	}

この部分の

			$this->doTemplateVar(&$item, $what);

も、同様に

			$this->doTemplateVar($item, $what);

にしておいたほうがいいでしょう。

オフライン

#9 2012-06-28 12:20:13

Mocchi
メンバー
登録日: 2006-11-19
投稿: 438

Re: 質問:PHP5.4.4でnucleus3.64が表示されない(http500)

とりあえずここまでで判明している問題を整理すると
1. コアのManagerクラスのバグ
2. NP_MultipleCategoriesのバグ

調べるといずれの問題も、PHPの文法に違反していたのが原因でした。

参照渡しで引数を作成する > 関数の引数 @ jp2.php.net
http://jp2.php.net/manual/ja/functions. ... -reference

これを見ると、参照を付与した変数に関して以下のことがわかります。
A. 関数・メソッド定義の引数に記述することはできる
B. 関数・メソッド呼び出しの引数には記述できない

すなわち以下のルールが成り立ちます。
A. function hoge(&$data){;}はOK
B. hoge(&$data)はダメ

バグ修正ですが、1.に関しては、開発中の4.0に修正を反映しました。なお、書き込みのあったshizukiさんの修正案は、先述した文法に違反しており不適切ですので、別な修正を加えました。
http://git.sourceforge.jp/view?p=nucleu ... d58755cb3a

2.に関してはこのスレッドではなく、NP_MultipleCategoriesのスレッドにフィードバックしておくと、他の方も見つけやすいかと思います。

オフライン

#10 2012-06-30 08:38:07

owl
メンバー
登録日: 2006-02-23
投稿: 8

Re: 質問:PHP5.4.4でnucleus3.64が表示されない(http500)

Mocchi さんの発言:

とりあえずここまでで判明している問題を整理すると
1. コアのManagerクラスのバグ
2. NP_MultipleCategoriesのバグ
調べるといずれの問題も、PHPの文法に違反していたのが原因でした。
(中略)
バグ修正ですが、1.に関しては、開発中の4.0に修正を反映しました。なお、書き込みのあったshizukiさんの修正案は、先述した文法に違反しており不適切ですので、別な修正を加えました。
http://git.sourceforge.jp/view?p=nucleu ... d58755cb3a

PHPが現Nucleusに適用できない原因がわかって何よりでした。ちょっと要修正箇所が多く迷いますが、まあNucleus4.0を待つ方が無難かな、とも存じます。取り敢えず本質問は終わりということで、お付き合いいただきありがとうございました。

オフライン

Board footer