質問 > 管理機能 > ダウンロードしたテンプレートの登録ができない |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
kazz_oga |
投稿日時: 2013/8/8 11:51
対応状況: −−−
|
一人前 登録日: 2013/8/5 居住地: 東京都北区赤羽西 投稿: 144 |
ダウンロードしたテンプレートの登録ができない [EC-CUBE]EC-CUBE2.12.5
[レンタルサーバ]local環境 [OS] MacOSX10.7.5 [PHP]5.5.0 [データベース]PostgreSQL、9.2 [WEBサーバ]Apache、2.2.22(Unix) [ブラウザ]Safari、6.0.5 (7536.30.1) [現象] 『EC-CUBE公式ガイドブック(基本編)』に沿って、確認中です。 テンプレートをダウンロードして、登録しようとしていますが、 「※ テンプレートファイルの解凍に失敗しました。」と出てきて、 登録ができません。 ダウンロードしたファイルをアーカイブユティリティにかけると 解凍ができます。過去のスレッドの事象と違うようです。 |
kazz_oga |
投稿日時: 2013/8/8 23:46
対応状況: −−−
|
一人前 登録日: 2013/8/5 居住地: 東京都北区赤羽西 投稿: 144 |
Re: ダウンロードしたテンプレートの登録ができない 「※ テンプレートファイルの解凍に失敗しました。」のメッセージを出しているのがLC_Page_Admin_Design_UpDown.phpのように察します。
この処理ではダンロードファイルのチェック時、実際の解凍の段階でメッセージをだしているようです。実際の解凍の直前に格納場所のデレクトリーを作成する処理になっているようです。 デレクトリの作成を確認するとec-cube2.12.5/html/.../data/Smarty/templateにデレクトリが作られていますが、中身がありません。また、admin.logを見ると、次のメッセージがでています。 2013/08/08 23:31:06 [/eccube-2.12.5/html/admin/design/up_down.php] /Applications/XAMPP/xamppfiles/htdocs/eccube-2.12.5/html/../data/Smarty/templates/tpl20130808/tpl_package_default_20130808094054 が存在しません. from ::1 tpl20130808:指定したテンプレートコード tpl_package_default_20130808094054.tar:選択したテンプレートファイル |
kazz_oga |
投稿日時: 2013/8/12 9:17
対応状況: 確認中
|
一人前 登録日: 2013/8/5 居住地: 東京都北区赤羽西 投稿: 144 |
Re: ダウンロードしたテンプレートの登録ができない 再度、登録を行い、出てくるログのメッセージを再確認してみました。
admin.logからは解凍のアクションまで行っている。しかし、解凍結果のフォルダーが作られていない。 error.logでは、Tar.php内でのfile_exits()のパラメータを正しいと思って処理する(すなわち不安がある)。 MacOS環境として、特別なパラメータの渡り方がされているようですね。 <admin.log> 2013/08/12 08:47:29 [/eccube-2.12.5/html/admin/design/up_down.php] tpl_package_default_20130808094054.tar -> /Applications/XAMPP/xamppfiles/htdocs/eccube-2.12.5/html/upload/temp_template/tpl_package_default_20130808094054.tar from ::1 2013/08/12 08:47:29 [/eccube-2.12.5/html/admin/design/up_down.php] 解凍:/Applications/XAMPP/xamppfiles/htdocs/eccube-2.12.5/html/../data/Smarty/templates/tpl20130808/tpl_package_default_20130808094054.tar->/Applications/XAMPP/xamppfiles/htdocs/eccube-2.12.5/html/../data/Smarty/templates/tpl20130808/tpl_package_default_20130808094054 from ::1 2013/08/12 08:47:29 [/eccube-2.12.5/html/admin/design/up_down.php] /Applications/XAMPP/xamppfiles/htdocs/eccube-2.12.5/html/../data/Smarty/templates/tpl20130808/tpl_package_default_20130808094054 が存在しません. from ::1 <error.log> 2013/08/12 08:47:29 [/eccube-2.12.5/html/admin/design/up_down.php] Warning(E_WARNING): file_exists() expects parameter 1 to be a valid path, string given on [/Applications/XAMPP/xamppfiles/htdocs/eccube-2.12.5/data/module/Archive/Tar.php(1609)] from ::1 |
kazz_oga |
投稿日時: 2013/8/14 11:44
対応状況: 確認中
|
一人前 登録日: 2013/8/5 居住地: 東京都北区赤羽西 投稿: 144 |
Re: ダウンロードしたテンプレートの登録ができない <午前中に報告したことが、一部まちがっていたので、訂正しました>
Tar.phpの1608行目のfile_existsで異常検知されていることがわかりました。 その行の前にデバック用の表示を入れてみました。 path名の文字列を連結する処理で、'/'が重複しないようにしている処理がうまく行っておらず、連結部分で'/'がふたつあらわれて、file_existsで異常となっているようです。 1602行 p_pathの末尾の'/'を削除 デバック表示でp_path名の末尾から'/'が取り除かれている 1603行 後続させるv_header['filename']の先頭が'/'であることが認識できず 1605行 else処理で、p_pathとv_header['filename']の間に'/'を入れている (トレース表示を入れてelse処理に跳んでいることを確認済み) バグに見えます。対応方法を教えてください。 ■Tar.phpのソースとデバックの表示位置 1592 // ----- Look if this file need to be extracted 1593 if (($v_extract_file) && (!$v_listing)) 1594 { 1595 if (($p_remove_path != '') 1596 && (substr($v_header['filename'], 0, $p_remove_path_size) 1597 == $p_remove_path)) 1598 $v_header['filename'] = substr($v_header['filename'], 1599 $p_remove_path_size); 1600 if (($p_path != './') && ($p_path != '/')) { 1601 while (substr($p_path, -1) == '/') 1602 $p_path = substr($p_path, 0, strlen($p_path)-1); デバック1⇒ SC_Utils::sfPrintR("1604>p_path:".$p_path." v_header['filename']:".$v_header['filename']); 1603 if (substr($v_header['filename'], 0, 1) == '/') 1604 $v_header['filename'] = $p_path.$v_header['filename']; 1605 else 1606 $v_header['filename'] = $p_path.'/'.$v_header['filename']; 1607 } デバック2⇒ SC_Utils::sfPrintR("1610>v_header['filename']:".$v_header['filename']); 1608 if (file_exists($v_header['filename'])) { ■デバックの表示結果 デバック1 string(359) "1604>p_path:/Applications/XAMPP/xamppfiles/htdocs/eccube-2.12.5/html/../data/Smarty/templates/tpl20130808 v_header['filename']:/abouts" デバック2 string(352) "1610>v_header['filename']:/Applications/XAMPP/xamppfiles/htdocs/eccube-2.12.5/html/../data/Smarty/templates/tpl20130808//abouts" |
kazz_oga |
投稿日時: 2013/8/14 23:44
対応状況: −−−
|
一人前 登録日: 2013/8/5 居住地: 東京都北区赤羽西 投稿: 144 |
Re: ダウンロードしたテンプレートの登録ができない なかなか、解決できていません。
ディバック用の表示を入れたら、今後の対処が思い浮かばなくなってきました。 スケジュールも気になるし、........ substr()で長さパラメータの有無の違いを確認してみました。 長さパラメータがあるとNULLで返り、無いと文字列そのものが substrから返されているようです。 その結果、へんな文字列が作られていると、観察中です。 <Tar.php> 1592 // ----- Look if this file need to be extracted 1593 if (($v_extract_file) && (!$v_listing)) 1594 { 1595 if (($p_remove_path != '') 1596 && (substr($v_header['filename'], 0, $p_remove_path_size) 1597 == $p_remove_path)) 1598 $v_header['filename'] = substr($v_header['filename'], 1599 $p_remove_path_size); 1600 if (($p_path != './') && ($p_path != '/')) { 1601 while (substr($p_path, -1) == '/') 1602 $p_path = substr($p_path, 0, strlen($p_path)-1); 1603 if (substr($v_header['filename'], 0, 1) == '/'){ 1604 SC_Utils::sfPrintR("YES"); 1605 $v_header['filename'] = $p_path.$v_header['filename']; 1606 } 1607 else{ デバック用⇒ SC_Utils::sfPrintR("else:".substr($v_header['filename'],0,1).":".substr($v_header['filename'], 0).":"); 1608 $v_header['filename'] = $p_path.'/'.$v_header['filename']; 1609 } 1610 } 1611 if (file_exists($v_header['filename'])) { ■デバック文の表示結果 string(240) "else::/abouts:" 長さ指定の返りはNULL、長さ指定なしは全文字列 |
kazz_oga |
投稿日時: 2013/8/15 13:04
対応状況: −−−
|
一人前 登録日: 2013/8/5 居住地: 東京都北区赤羽西 投稿: 144 |
Re: ダウンロードしたテンプレートの登録ができない 長さ指定で使っているsubstrの処理についてはコメントアウトし、先に進めることにしました。
それでも、うまくいきません。 問題の箇所は、Tar.phpの1846行あたりの_dirCheckです。 ・テンプレート用のデレクトリtpl20130808をSmarty/templates/に作成する際、1869行目のmkdir()の戻りがFALSEとなる。ただし、tpl20130808のデレクトリは作成される。 ・作成済みのtpl20130808について、1859行目のis_dir()がFALSEとなる。 いずれも、@mkdir(),@is_dir()となっているので、@を外してerror.logを確認。 2013/08/15 15:38:22 [/eccube-2.12.5/html/admin/design/up_down.php] Warning(E_WARNING): is_dir() expects parameter 1 to be a valid path, string given on [/Applications/XAMPP/xamppfiles/htdocs/eccube-2.12.5/data/module/Archive/Tar.php(1864)] from ::1 2013/08/15 15:38:22 [/eccube-2.12.5/html/admin/design/up_down.php] Warning(E_WARNING): mkdir() expects parameter 1 to be a valid path, string given on [/Applications/XAMPP/xamppfiles/htdocs/eccube-2.12.5/data/module/Archive/Tar.php(1876)] from ::1 なお、is_dir,mkdirの引数(パラメータ)の値は次のとおり /Applications/XAMPP/xamppfiles/htdocs/eccube-2.12.5/html/../data/Smarty/templates/tpl20130808 |
kazz_oga |
投稿日時: 2013/8/17 11:29
対応状況: −−−
|
一人前 登録日: 2013/8/5 居住地: 東京都北区赤羽西 投稿: 144 |
Re: 20130817時点まとめ 良い状態にたどりついていません。
現在、分かっている範囲で整理すると次のとおり 単純な環境 ・File_exit(),is_dir(),mkdir()もE-Warningなしで,正常に動作 ・substrの長さ指定も正常に動作 EC-CUBE下のTar.phpでの発生 ・バイナリデータをunpackして作られているv_data['filename']から代入、連結など作られ、v_header,p_dirに格納されているデレクトリ、ファイル名をFile_exists(),p_path(),mkdir()のパラメータにすると、いずれもFalseとなる。このとき、E-Warningがだされている。 関連行:1346,1609,1859,1869 ・v_data['filename']から代入、連結せず、同じデレクトリ名をFile_exists()のパラメータにしても正常動作する。E-Warningもでない。 ・v_header['filename']に対する長さ指定のsubstrは正常動作しない。 関連行:1604 E-Warningは次の内容 Warning(E_WARNING): xxxxx() expects parameter 1 to be a valid path, string given on [/Applications/XAMPP/xamppfiles/htdocs/eccube-2.12.5/data/module/Archive/Tar.php(9999)] from fe80::1 xxxxxはFile_exists,is_dir,mkdirの関数名 9999は、メッセージ発生の行数 |
kazz_oga |
投稿日時: 2013/8/18 10:40
対応状況: 解決済
|
一人前 登録日: 2013/8/5 居住地: 東京都北区赤羽西 投稿: 144 |
Re: テンプレートの登録できました テンプレートの登録ができました。
unpackのformatの書式コードの変更されていたためのようです。 ■phpマニュアルの記載 p2.php.net/manual/ja/function.unpack.phpのunpack Perl の関数に動きを近づけるための変更をしました。 "a" は最後の NULL バイトを維持するようになりました。 "A" は最後の ASCII 空白文字 (スペース、タブ、改行、キャリッジリターン、 NULL バイト) をすべて取り除くようになりました。 NULL 埋め文字列用に "Z" が追加されました。これは最後の NULL バイトを取り除きます。 NULL bytes. ■Tar.php(オリジナル) 1346行目 $v_data=unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/"."a8checksum/a1typeflag/a100link/a6magic/a2version/"."a32uname/a32gname/a8devmajor/a8devminor/a131prefix",$v_binary_data); ■Tar.phpの変更 unpackのformat書式コードの'a'を'A'に全て変更 |
red |
投稿日時: 2013/8/18 11:00
対応状況: −−−
|
神 登録日: 2010/2/15 居住地: 東京都 投稿: 1570 |
Re: テンプレートの登録できました 今更で申し訳ないですが、PHP5.5の場合Tar.phpにバグが有りますのでそういった挙動になります
http://nob-log.info/2013/07/17/php5-5-ec-cube/ EC-CUBEの次期バージョンには修正をコミットしてありますので、問題なく動きます
|
kazz_oga |
投稿日時: 2013/8/19 13:05
対応状況: −−−
|
一人前 登録日: 2013/8/5 居住地: 東京都北区赤羽西 投稿: 144 |
Re: テンプレートの登録できました
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |