6 月 11 2006
Programing
5 月 23 2006
抖抖..
自從 上次的 PHP 地雷事件 後, 目前手上兩三台有裝 CPG 跟 phpBB 的機器一直停在 PHP 4.4.0 .
可是現在要用 ports 升級 phpMyAdmin 卻會失敗, 還噴這串出來 :
This port requires the Apache Module or the CGI version of PHP, but you have already installed a PHP port without them.
*** Error code 1
跑到 /usr/ports/lang/php4 底下用 make config 把 Apache module 加進去, 還是會噴上面這串…
目前 ports 裡面, PHP4 最新的版本是 4.4.2 , PHP5 是 5.1.4 , phpBB 的版本是 2.0.20 , CPG 是 1.4.6 .
麻煩有裝以上這些系統的好心的前輩提燈籠來指個路啊.
12 月 30 2005
因應 2.0 , 再修 Twilight AutoSave
升級 2.0 以後, 我發現 Twilight AutoSave 沒辦法用了.
( ychsiao 前輩也有在 這篇 說他的也不能用. )
目前在 plugin 的網頁是貼出了這段:
Please note: I offer no support for this plugin with WP 2.0 as of yet. The software is still beta, and works completely differently. I will see how I can upgrade this to work with 2.0 when I can (if it is possible).
於是我自己 trace 了一下 code , 發現問題出在這幾行 :
add_action("save_post", "twAutoSaveDelete"); add_action("publish_post", "twAutoSaveDelete");
save_post 跟 publish_post 僅存在於 1.5 版的 wp-admin/post.php 中, 2.0 版被拿掉了.
所以必須把上面那兩行改成 :
add_action("simple_edit_form", "twAutoSaveDelete"); add_action("edit_form_advanced", "twAutoSaveDelete"); add_action("edit_page_form", "twAutoSaveDelete");
另外, 我還看到一個小瑕疵, 在 tw-autosave.php 裡面有這段:
if (cookietemp.length > 100){ var endstring = "[...]"; }
可是 endstring 這個變數也沒有事先被定義, 而且這段 code 並沒有做例外處理, 所以當文章內容小於 100 字時, 我們會在文章回復框看到 undefined 的字串.
解法很簡單, 在 if (cookietemp.length > 100){
上面加入這行就搞定了 :
var endstring = "";
目前改完以後看來都正常.
晚點把這些回報給作者, 跟他討論看看好了.
12 月 30 2005
因應 WordPress 2.0 , 修改 Recent Comments .
升級 2.0 以後, 我發現 Recent Comments 的選項頁面出不來.
我按照文章裡面的說明修改 wp-content/plugins/get-recent-comments.php , 在這行:
// WordPress 1.5 includes this file again on the options page. Avoid duplicate declaration:
下面有段:
if ( function_exists("is_plugin_page") && is_plugin_page() ) { kjgrc_options_page(); return; }
然後把整段整個換成 :
add_action("options_page_get-recent-comments", "kjgrc_options_page" );
就好了.
11 月 28 2005
FreeBSD 上面的 PHP 4.4.1
我只能說, 這個版本是顆大地雷.
除非系統是自己開發, 而且程式碼都寫得很漂亮, 不然用 4.4.0 還是比較好.
之前幫某台機器升級, 結果上面的 phpBB 就爛了… orz
Error message 長這個樣子:
PHP Fatal error: Cannot redeclare get_userdata() in xxx.php on line xxx
後來是靠 portdowngrade ( 在 /usr/ports/sysutils/portdowngrade ) 把版本換回 4.4.0 , 指令上大致上是這樣 :
cd /usr/ports/sysutils/portdowngrade
make install clean
rehash
portdowngrade -o -s \\
:pserver:[email protected]:/home/ncvs lang/php4
然後會出現一些問題給你選, 弄好以後用 portupgrade -f 把已安裝的這兩種開頭的軟體全部洗一遍就好:
- php4-*
- pecl-*
:roll:
4 月 20 2005
詭異的 html_entity_decode() …
cannot yet handle MBCS in html_entity_decode()
in sb_formatting.php line 234
http://bugs.php.net/bug.php?id=25670
(這個錯誤暫時用註解的方式去除,可是這樣就不能用html了)
感覺蠻詭異的, 所以我 follow 那個 PHP Bugs 的 link 看了一下, 看到這段實在讓我很無言 :
[27 Sep 2003 12:07am CEST] moriyoshi AT php.net
The very issue was already addressed and the appropriate fix is ready
for php5, though we won”t introduce this feature to the current stable
version (4.3.x).See:
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1403&r2=1.1404
因為我沒遇過這個 error, 所以寫了這個 page 作測試 :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>test!!</title> </head> <body> <? echo html_entity_decode("ü", ENT_QUOTES, "UTF-8"); ?> </body> </html>
結果我這邊是正常的 ( PHP 4.3.11 ) …
過陣子抓 Simple PHP Blog 來玩看看好了!
2 月 21 2005
安裝 WP-cache 該注意的地方
zonble’s promptbook 也在昨天升級成 WordPress 1.5 了 . ( 文章在這: 升級 WordPress 1.5 )
在這篇文章裡面還提到 WP-cache 這個外掛模組來加速 WordPress 頁面顯示的方法.
我覺得 WordPress 1.5 比之前的 1.4 慢很多, 所以我也嘗試在我這邊加進這個 Plugin .
可是, 我按照網頁上所說明的方式改完以後整個頁面卻跑不出來, 在 Apache 的 error log 裡面跑出這行:
[error] PHP Fatal error: Call to undefined function: sem_get() in [馬賽克]/wp-includes/wp-cache.php on line 106
而 sem_get() 必須要在安裝 PHP 時加進 –enable-sysvsem 跟 –enable-sysvshm 這兩個參數才可以使用.
( 不過我最後還是沒裝 WP-cache , 因為 FreeBSD 的 ports 裡面沒有參數或選項可以加. )
1 月 17 2005
Coppermine 的發佈精靈
我在 妖精森林 裝了一個相簿系統,
使用的是 Coppermine Photo Gallery , 後端資料庫則是放在 Sun2 上面.
相簿系統的名稱叫 MI 相簿, 網址在這: http://album.mi.chu.edu.tw .
會使用這套系統的原因是因為它支援了 Windows XP 的網頁發佈精靈.
可是我測試過後, 發現官方對往頁發佈精靈沒有進行語言檔的翻譯.
trace 以後發現, 他們把語言檔寫死在發佈精靈的 PHP 檔裡面. =_=b
所以剛剛作了這些修正:
if (defined("XP_PUBLISH_PHP")) $lang_xp_publish_php = array( "title" => "MI 相簿 - XP 網頁發佈精靈", "welcome" => "Hi, <b>%s</b>,", "need_login" => "您必須先以帳號與密碼在網頁上登入後才能使用發佈精靈. 登入時請將 <b>記住我</b> 打勾.", "no_alb" => "您沒有可供上傳的相簿.", "upload" => "上傳圖檔到現有相簿", "create_new" => "上傳到新建立的相簿", "album" => "相簿", "category" => "分類", "new_alb_created" => "您已建立了 "<b>%s</b>" 這個相簿.", "continue" => "請點選 "下一步" 開始上傳圖檔.", );
中文化完成.
1 月 13 2005
PHP 4.3.10
前陣子就看到 Multiple vulnerabilities within PHP 4/5 這則 security advisory , 然後馬上開工, 把手上幾台 Apache + PHP 通通升級一下.
結果我這兩天才發現.
升級以後, 一堆 PHP 的系統爛光光 .
trace 過以後發現這點 :
之前的 PHP 會把 $username 這種變數吃成以下這三種的任何一種:
$_GET["username"] // 用 FORM 的 GET 來傳, 或用 xxx.php?username=xxx 來傳 $_POST["username"] // 用 FORM 的 POST 來傳 $_COOKIE["username"] // 會吃 Cookie 的 username
PHP 4.3.10 就要求要強制指定了.
而我手上有三套自己寫的 PHP 系統, 要開始大修了.
6 月 22 2006
[VB.Net] 將 DataSet 匯出成 CSV 檔
剛剛弄出來的東西.
DsExport.vb :
呼叫方式:
By Joe Horn • .NET 2 • Tags: .NET, CSV, DataSet, Visual Basic