* php-5.4.0で動作させる対応 [#d1d114a0]

- ページ: [[BugTrack2]]
- 投稿者: [[よっちい]]
- 優先順位: 低
- 状態: 提案
- カテゴリー: その他
- 投稿日: 2011-11-20 (日) 17:31:58
- バージョン: 


#contents

** PHP5関連 [#pda31dfe]
- [[BugTrack/632]] PHP5で動作しない
-- [[BugTrack2/324]] PHP 5.3 でエラーが出るようになった
-- など

** メッセージ [#idc6f06c]
php-5.4.0RC1(たぶんalpha1から)で,正常動作しない.

--------

- [[php-5.4.0RC1>http://www.php.net/archive/2011.php#id2011-11-11-1]]をちょっと試してるのですが,apacheが500とのたまう感じです.php-5.3.9RC1は問題なさそうなのですけれども.わたしの仕込みだけの問題であれば良いのですけれども. -- [[よっちい]] &new{2011-11-12 (土) 10:50:42};
-- 自分の場合は、extension_dirを設定し忘れたせいでextension=php_mbstring.dllのあたりで呼び出し失敗していたのか、PHP Warning:  PHP Startup:  in Unknown on line 0というスタートアップエラーがログに記録され、ブラウザにはHTTP 500エラーが表示されてました。今はphp-5.4.0RC1のphp-cgi.exeが動いてます(設定し忘れはもうないハズ) --  &new{2011-11-13 (日) 02:09:44};
-- うちはFreeBSD boxでextensionをモジュール化しているのはdbaだけです.問題があるとすればそのあたりだろうな,とは思ってますがapacheのアクセスログ,エラーログにもこれといった情報は出てきてないです.はっきりわかっていることは「5.3.9RC1と5.4.0RC1で挙動が違う」だけです.phpinfo()によるとmbstringは有効になってます. -- [[よっちい]] &new{2011-11-13 (日) 10:43:46};

** hex2bin() [#bab61500]
- hex2bin()が組み込み関数になってlib/func.phpの実装とぶつかってました.
 > php ./index.php
 PHP Fatal error: Cannot redeclare hex2bin() in /(some where)/pukiwiki/lib/func.php on line 317
とりあえず,func.phpを以下のように書き換えることでhtmlファイルを出力するようになりました.lib/auth.phpで直接hex2bin()をコールしていたので,ついでにこれらをdecode()をコールするようにも変えたほうが良いでしょう.
 // Decode page name
 function decode($key)
 {
         if (function_exists('hex2bin')) {
                 return hex2bin($key);
         } else {
                 return internal_hex2bin($key);
         }
 }
 
 // Inversion of bin2hex()
 function internal_hex2bin($hex_string)
 {
         // preg_match : Avoid warning : pack(): Type H: illegal hex digit ...
         // (string)   : Always treat as string (not int etc). See BugTrack2/31
         return preg_match('/^[0-9a-f]+$/i', $hex_string) ?
                 pack('H*', (string)$hex_string) : $hex_string;
 }
ただ,これでも日本語がちゃんと出てくれない(出るところと出ないところがあり,規則性が見いだせてない)ので,もうちょっと追ってみます. -- [[よっちい]] &new{2011-11-19 (土) 21:17:34};
--- 例にならうよう,hex2bin()をlib/func.phpの末尾に移動させて以下のように書き換えてみました.
 // hex2bin -- Converts the hex representation of data to binary
 // (PHP 5.4.0)
 // Inversion of bin2hex()
 if (! function_exists('hex2bin')) {
         function hex2bin($hex_string)
         {
                 // preg_match : Avoid warning : pack(): Type H: illegal hex digit ...
                 // (string)   : Always treat as string (not int etc). See BugTrack2/31
                 return preg_match('/^[0-9a-f]+$/i', $hex_string) ?
                         pack('H*', (string)$hex_string) : $hex_string;
         }
 }
decode()は削除し,全てhex2bin()にしてしまいましょうか. -- [[よっちい]] &new{2011-11-20 (日) 17:39:33};
- 切り分けしてるつもりが途中からhex2bin()の名前を変えたままにしてたみたいです、ごめんなさい。そりゃエラー出なくなるわorz -- 2011-11-13 (日) 02:09:44 コメント主 &new{2011-11-20 (日) 21:38:47};

#comment

** htmlspecialchars() [#k68e563b]
- http://blog.tokumaru.org/2011/11/php54htmlspecialchars.htmlに答えが書いてありました.htmlspecialchars()の非互換によるもので,確認のために同ペイジに書いてあるphpにパッチをあてる方法で正しく(!?)表示されるようになりました.パッチを当てるのはちょっと乱暴なので,同ペイジで提案されている「まとめてhtmlspecialchars関数を修正する方法」を採用するのがよろしかろうと思います.ただし,ページ内にあるアンカーをたどろうとすると,またapacheが500とのたまいます.これまたペイジの名称によってたどれるものと,そうでないものがあります.以下はたどれない例です.
 http://192.168.0.4/(some where)/pukiwiki/pukiwiki.php?%A5%E9%A5%F3%A5%AD%A5%F3%A5%B0
ちょっと困りました. -- [[よっちい]] &new{2011-11-19 (土) 23:54:16};
- たぶん関連。htmlspecialchars()のエイリアス関数htmlsc新設にともなうバグなど → [[BugTrack2/343]] --  &new{2011-11-20 (日) 21:16:54};
- お知らせありがとうございます,cvs版ではhtmlsc()が導入されているわけですね.そんなわけで,
 #!/bin/sh
 
 for i do
     /bin/cat $i | /usr/bin/sed -e 's/htmlspecialchars/htmlsc/g' > $i.temp
     /bin/mv $i.temp $i
 done
としてlib/func.phpにhtmlsc()の実装を持ってきてみたりしました.これでphp-5.4.0RC1にパッチを当てずに表示は正しく出てくるようになったっぽいですが,うーん「たどれないリンクがある」は改善されないですね.... $flagsをphpのデフォルトにすれば良いのかな.... -- [[よっちい]] &new{2011-11-20 (日) 23:23:59};
#comment

**Call-time pass-by-reference has been removed [#jb3fa917]
- これ,ペイジ名称は関係なく,内容に依存してそうな感じがします.ls2プラグインを用いるたペイジを表示させようとすると500になるようです.
 #norelated
 
 [[FrontPage]]
 
 #ls2
この#ls2の有無で挙動が変わります.もうちょっと追ってみます. -- [[よっちい]] &new{2011-11-23 (水) 11:13:06};
- ls2プラグイン単体で実行させると以下のエラーになりました.
 > php plugin/ls2.php
 PHP Fatal error:  Call-time pass-by-reference has been removed in /(some where)/pukiwiki/plugin/ls2.inc.php on line 69
ちゃんとNEWSに過去機能の削除の件が書いてあります.
 - Removed legacy features:
    :
   . allow_call_time_pass_reference. (Pierrick)
そこでls2プラグインの以下の実装
         array_walk($args, 'plugin_ls2_check_arg', & $params);
の参照渡しのアンパサンドを削除することで,ls2プラグインが正常動作するようになりました.同じような実装がpcommentプラグインにもあるようです. -- [[よっちい]] &new{2011-11-23 (水) 11:42:15};
- アンパサンドで思い出しましたが,lib/convert_html.phpで警告が出ます.以下のようなもので
 > php ./index.php
 PHP Strict Standards:  Declaration of Heading::canContain() should be compatible with Element::canContain($obj) in /(some where)/pukiwiki/lib/convert_html.php on line 264
「引数の型は同じにせよ」ということのようです.なので,
         function canContain(& $obj)
         {
                 return FALSE;
         }
の引数を参照型にしているのは親クラスの宣言と異なるので止めたほうが良いのでは,と. -- [[よっちい]] &new{2011-11-23 (水) 11:56:25};
- わたしのところでは,以上変更でphp-5.4.0RC1による運用ができそうな感じになりました. -- [[よっちい]] &new{2011-11-23 (水) 12:04:23};
-- ペイジ編集のプレビュー機能が正常動作しないことに気付きました,まだ先は長いようです.orz -- [[よっちい]] &new{2011-11-23 (水) 12:10:31};
- [[BugTrack2/182]] allow_call_time_pass_reference 関連のまとめ --  &new{2011-11-23 (水) 16:13:56};
-- CVS版ではls2, pcomment ともに修正済み --  &new{2011-11-23 (水) 16:16:03};

#comment

**%%編集のプレビュー時にテンプレートページ読み出しのパスを通る%% [#db0e96ac]
- %%プレビュー時になぜかテンプレートページを読み込むパスを通っているようです.%%
        // Loading template
        if (isset($vars['template_page']) && is_page($vars['template_page'])) {
 
                $vars['msg'] = join('', get_source($vars['template_page']));
 
                // Cut fixed anchors
                $vars['msg'] = preg_replace('/^(\*{1,3}.*)\[#[A-Za-z][\w-]+\](.*)$/m', '$1$2', $vars['msg']);
        }
%%ここのjoin()している行をコメントアウトすると,プレビュー画面が正常に出てきます.おそらく関連が[[BugTrack2/256]]に.%% -- [[よっちい]] &new{2011-11-23 (水) 13:00:27};
- wiki/.txtファイルがありました.[[BugTrack2/256]]にある既知の問題だった,ということでphp-5.4.0とは無関係でした.orz -- [[よっちい]] &new{2011-11-23 (水) 13:06:55};

#comment


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

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u11. HTML convert time: 0.069 sec.

OSDN