* PHP  5.3 でエラーが出るようになった [#t05a3902]

- ページ: [[BugTrack2]]
- 投稿者: 名無しさん
- 優先順位: 重要
- 状態: 提案
- カテゴリー: 本体バグ
- 投稿日: 2009-08-01 (土) 17:11:31
- バージョン: 

** メッセージ [#v97c81b4]
これまでのバージョンでは特に問題がなかったのですが、PHP 5.3 にするといくつかエラーが出てくるようになりました。
+date 関数などで、Warning が発生する
--今まではWarning が出なかったのですが、PHP 5.3 にしたとたん出るようになりました。date.timezone のphp.ini 設定かdate_default_timezone_set 関数を使えと言ってきますが、これらはPHP 5.1.0 以降でないと使えないので、サポート対象のPHP を変えないのであればエラー抑制するしかないと思います。(デフォルトがerror_reporting(E_ERROR | E_PARSE); なんで、必要がないのかもしれませんが・・・)
+tracker_list プラグインのソートが機能しない
--[[official:質問箱4/480]] で少し話が挙がっていますが、array_multisort 関数でWarning が発生します。
 Warning: Parameter 1 to array_multisort() expected to be a reference
error_reporting(0); にしてエラー出力をOFF にすると表示はできるんですが、ソートが機能してくれません。

とりあえず、今気がついているのはこれだけです。

新設されたE_DEPRECATED レベルはE_STRICT レベルと同様に出力しないようにしないと、PHP 4 でも動作するように書かれている部分でエラーが出てしまう((& 演算子を使ってクラスを呼び出す所が、E_DEPRECATED レベルのエラーになってました))ので、あえて記述してません。

--------
- [[cvs:plugin/tracker.inc.php]] (r1.123) を修正して、動くのは確認
  			// One column set (one-dimensional array, sort type, and sort order)
  			// for array_multisort()
 -			$params[] = $columns[$fieldname];
 -			$params[] = $types[$fieldname];
 -			$params[] = $orders[$fieldname];
 +			$params[] = & $columns[$fieldname];
 +			$params[] = & $types[$fieldname];
 +			$params[] = & $orders[$fieldname];
  		}
  		if (! empty($orders) && ! empty($this->rows)) {
  			$params[] = & $this->rows;	// The target
PHP 4.4.9, 5.2.10, 5.3.0 で簡易確認しただけなので、見落としがあるかもしれませんが・・・ --  &new{2009-08-13 (木) 00:57:43};
- 関連: [[BugTrack/632]] --  &new{2009-08-13 (木) 12:37:01};
- BIOSやファイルシステムがタイムゾーン無しでローカルタイムを返すのかUTCを返すのかとかで必要度が変わるかもしれませんけど、
 define('LOCALZONE', date('Z'));
は@でエラーを抑制してdate関数を実行して、
 if (version_compare(PHP_VERSION, '5.1.0', '>=')) {
 	date_default_timezone_set('UTC');
 }
をその後に実行しておくとか? --  &new{2012-11-30 (金) 18:16:02};

#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.072 sec.

SourceForge