Ticket #1869 (closed バグ指摘: 修正済)

Opened 8 years ago

Last modified 8 years ago

ファイル管理> PHP5.4環境下でシステムエラー

Reported by: shutta Owned by: shutta
Priority: Milestone: EC-CUBE2.12.1
Component: 管理画面 Version: 2.12.0
Keywords: Cc:
修正済み: yes

Description

コミュニティーにて下記報告を頂いた。

[PHP5.4]コンテンツ機能>ファイル管理にてエラー

PHP5.4.3にてeccube2.11.5を使用しています。
管理画面「コンテンツ機能」⇒「ファイル管理」を開こうとすると
Fatal error: Cannot re-assign auto-global variable _POST in /home/xxxxx/data/class/pages/admin/contents/LC_Page_Admin_Contents_FileManager.php on line 286
とエラーが表示されます。

PHP5.4から、関数のパラメータにスーパーグローバル変数と同名を使用することができないよう変更されている事が原因です。
参照:https://bugs.php.net/bug.php?id=54657

当方、下記のようにソースコードを修正して動作する事を確認済みです。
(LC_Page_Admin_Contents_FileManager.php L.286 & L.287)
// function createSetParam($_POST) {
 function createSetParam($fnc) {
// $setParam = $_POST;
 $setParam = $fnc;

関数の呼び出し元が正しく$_POSTを渡していないとエラーが出る恐れがあるかもしれませんが、目視で確認した限りでは大丈夫に見受けられました。

eccube 2.12.0の当該ソースも拝見しましたが、同様の記載がありますので、上記対応にて問題ないようであれば、同様の修正されたほうがよろしいのではないかと思います。

Change History

comment:1 Changed 8 years ago by shutta

  • Owner changed from somebody to shutta
  • Status changed from new to assigned

r21922 にて修正。

comment:2 Changed 8 years ago by shutta

  • 修正済み set

comment:3 follow-up: ↓ 4 Changed 8 years ago by shutta

同様に、関数の引数にグローバル変数名を指定しているものが無いか調べてみた。

grep -r "function " *  | grep "\$_"

宣言が2行に分かれているものがあればチェックできないが、とりあえず上記のチェックでは他に該当するものが無いことを確認。

comment:4 in reply to: ↑ 3 Changed 8 years ago by h_yoshimoto

  • Status changed from assigned to closed
  • Resolution set to 修正済

shutta さまへの返信

ご対応ありがとうございます!

問題なさそうですので閉じさせて頂きます。

Note: See TracTickets for help on using tickets.