Nucleus(JP)フォーラム

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

ログインしていません。

#1 2012-11-04 00:47:36

Carlo
メンバー
登録日: 2006-06-08
投稿: 30

Re: MANAGER.phpは

お世話になります。

3.51から3.65へアップグレードをしたところ、アイテムが表示されずに焦っています。

とりあえずMANAGER.phpを旧バージョンのものに差し替えると表示はされるんですが、それでは根本的な問題の解決ができません。

どなたか詳しい方、お調べ願えないでしょうか?

サーバ さくらインターネット
PHP 5.2.17
MySQL 4.0.27


追記

文字コードまわりも少し変です。
「???」になっているところはアラビア文字なのですが、
ユニコード特有の文字がおかしくなるようです。

編集画面では正しくなっているので、
データベースからの受け渡しで、何か変わったのでしょうか。

オフライン

#2 2012-11-05 14:05:15

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

Re: MANAGER.phpは

3.65にアップグレードしたことで以下の2つの問題が発生したと整理しました。
1.ウェブページが表示されなくなった。MANAGER.phpを3.51のものにしたら表示されるようになった。
2.非ASCII文字のうち、日本語文字はちゃんと表示されるが、アラビア文字が「?」で表示される

プラグインの問題を疑ってみたいのですが、お使いのプラグインを列挙していただけますでしょうか?

オフライン

#3 2012-11-05 16:09:34

Carlo
メンバー
登録日: 2006-06-08
投稿: 30

Re: MANAGER.phpは

Mocchi さんの発言:

プラグインの問題を疑ってみたいのですが、お使いのプラグインを列挙していただけますでしょうか?

  • NP_SimpleParagraphs 0.6pre2

  • NP_ShowBlogs 2.7

  • NP_NoRobotComment 2.521

  • NP_Blacklist 1.3.1

  • NP_HideCommentMailAddr 1.0

  • Chopped description 0.7

  • RecentItems 0.51

  • NP_CommentTree 2.1

  • NP_MediaFiles 1.01.8

  • NP_znItemCache 0.024

  • NP_TitleList 0.35

  • SkinFiles 2.032

  • NP_StopAutoSavingDraft 0.3

  • NP_Calendar 0.75-ja_holiday

  • NP_SEOSitemaps 1.2

  • NP_Ping 1.81JP

以上でございます。

ちなみにフッターにマルCマークを入れていますが、文字化けしています。
他言語も一部文字化けしています。
アラビア文字限定ということではありません。

オフライン

#4 2012-11-06 09:33:01

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

Re: MANAGER.phpは

ありがとうございます。

それでは次に、デバッグ出力を取得したいと思います。globalfunctions.phpのはじめにある「 $CONF['debug'] = 0;」を「 $CONF['debug'] = 1;」にしてページを出力して下さい。おそらくたくさんのWARNING/DEPRECATEDが出力されますが、FATALという出力に注目して、その内容を教えて下さい。

オフライン

#5 2012-11-06 12:33:48

Carlo
メンバー
登録日: 2006-06-08
投稿: 30

Re: MANAGER.phpは

Mocchiさん、いつもお世話になっております。

出力された内容は以下のとおりです。

Notice: Undefined variable: res in /home/●●●/www/nucleus/libs/sql/mysql.php on line 379
HTTPヘッダは送信済みです

/home/●●●/www/nucleus/libs/sql/mysql.php の 379 行目ですでにページのHTTPヘッダが送出されており、Nucleusが正常に動作しなくなる可能性があります。

config.phpやランゲージファイル、その他プラグインのファイルの終わりに、余分な改行や文字列がないか確認してもういちどアクセスしてみてください。

根本的な解決をせずにこのメッセージを表示させなくするには、globalfunctions.phpの冒頭の$CONF['alertOnHeadersSent']を0に設定します。

これしか出ません。どうでしょうか?

オフライン

#6 2012-11-07 09:32:43

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

Re: MANAGER.phpは

Carrlo さんの発言:

根本的な解決をせずにこのメッセージを表示させなくするには、globalfunctions.phpの冒頭の$CONF['alertOnHeadersSent']を0に設定します。

こちらの変更をして、再度出力を得てみてください。

オフライン

#7 2012-11-07 12:12:00

Carlo
メンバー
登録日: 2006-06-08
投稿: 30

Re: MANAGER.phpは

毎日すみません。

Notice: Undefined variable: res in /home/●●●/www/nucleus/libs/sql/mysql.php on line 379
Notice: Undefined variable: res in /home/●●●/www/nucleus/libs/sql/mysql.php on line 379
Notice: Undefined variable: currPage in /home/●●●/www/nucleus/plugins/NP_ShowBlogs.php on line 524
Notice: Undefined variable: currPage in /home/●●●/www/nucleus/plugins/NP_ShowBlogs.php on line 525

Notice: Undefined property: NP_ShowBlogs::$maxamount in /home/●●●/www/nucleus/plugins/NP_ShowBlogs.php on line 667
Notice: Undefined variable: buf in /home/●●●/www/nucleus/plugins/NP_ShowBlogs.php on line 691

と出力されています。

オフライン

#8 2012-11-07 20:17:11

Reine
Administrator
From: 大阪
登録日: 2006-06-27
投稿: 80

Re: MANAGER.phpは

Carloさんこんばんわ。
途中から失礼します。

こちらでも確認してみたところ、恐らく、最新版のManagerクラスのnotify関数の第二引数へarray関数を定義できなくなったことに起因していると思います。

対処法としては、プラグイン内のコードで$manager->notify()を呼び出す際に第二引数にarray()を直渡ししている場合、直前でarray()を変数に格納するようにし、$manager->notify()へは変数を渡すようにします。

NP_ShowBlogsでは致命的なエラーが見当たらなかったので、他のプラグインでアイテムの表示に関与しそうなものを当たっていたらNP_znItemCacheが怪しそうです。

NP_znItemCache.phpの227行を

			$manager->notify('PreItem', array('blog' => &$data['blog'], 'item' => &$data['item']));

下記に修正

			$param = array('blog' => &$data['blog'], 'item' => &$data['item']);
			$manager->notify('PreItem', $param);

上記と同じ要領で、
241行(上記修正後は242行)を下記に、

		$param = array('blog' => &$data['blog'], 'item' => &$data['item']);
		$manager->notify('PreItem', $param);

253行(上記修正後は255行)を下記に
(241行の変数が生きているので$paramの定義は不要です)

		$manager->notify('PreItem', $param);

上記修正を加えて確認お願いできますでしょうか?

他のプラグインでもnotifyにarray()を渡しているものがあれば同じようにページ出力が途中で止まってしまう可能性があります。
修正しても表示できない場合は他のプラグインのコードも確認してみてください。

オフライン

#9 2012-11-07 21:08:24

Carlo
メンバー
登録日: 2006-06-08
投稿: 30

Re: MANAGER.phpは

Reineさん、ありがとうございます。

ご指摘の作業をやりました。ShowBlog云々は出ますが、MANAGER.phpを最新版にしても表示されるようになりました。

ユニコードの文字化けについても、改善されています。

$CONF['alertOnHeadersSent']を1に戻しましたが、大丈夫なようです。
解決したのかすらわかりませんが、一応使用できそうです。

<追記>
ああ、でもNP_znItemCache.phpは悪さをしますね。
アイテムを編集したら、データベースからうまく受け渡してくれず、編集内容が更新されませんでした。
プラグインを外したら直りました。

オフライン

#10 2012-11-10 10:55:11

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

Re: MANAGER.phpは

Reine さんの発言:

こちらでも確認してみたところ、恐らく、最新版のManagerクラスのnotify関数の第二引数へarray関数を定義できなくなったことに起因していると思います。

この変更に関しては以下を参照して下さい。PHP4とPHP5の言語仕様の違いを受けたコアの変更です。この変更なしでは、Nucleus CMSはPHP5(正確にはPHP5.4以降)ではまともに動きません。

http://sourceforge.jp/projects/nucleus- ... 01141.html

プラグインの多くが未だPHP4に基づくコードを含んでいるということも考慮しておいてください。すなわち、サーバーシステムのアップデートが今回のような出来事を起こす可能性も十分あるということです。

一番の、そして唯一の対策は、プラグインを更新しPHP5に適したコードにすることです。こればかりは、コア開発者がどうこうすることはできません。それぞれのプラグイン開発者の配慮に期待するほかありません。

オフライン

Board footer