顯示具有 網站架設 標籤的文章。 顯示所有文章
顯示具有 網站架設 標籤的文章。 顯示所有文章

2011年1月18日 星期二

wordpress上傳檔案注意事項

首先,得先把 /wp-content/uploads/ 目錄的權限改成 777
再來,把 .htassess 的內容加入



SecFilterEngine Off
SecFilterScanPOST Off


應該就可以順利的上傳檔案了

Wordpress相關網站

mysql 的中文問題

在mysql 裏使用中文,會遇到一些問題,使的我們所看到的,或是備份出來的資料出現亂碼。
問題解決的方式不難,但是環環相扣,少了一個都不行。
首先,是mysql資料表本身編碼的問題,預設的編碼是 latin1 ,使用單一個位元來儲存資料;但是中文環境不論是big5 或是 utf8 都是使用2個位元的,所以一但選錯,就算在網頁上是正常顯示的,在 mysql client 和 phpmyadmin 上看到的中文資料都是亂碼。
要解決這個問題,可以在建立資料表的sql指令最後,加入以下敘述 TYPE=MyISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci;
這樣可以令資料表採用 utf8 編碼,並使用 utf8_unicode_ci 做連線校對。
第二、就是我們在php存取資料時,所用的sql 指令。在預設的情況裏,他還是使用 latin1 的編碼方式來對 mysql 做操作,所以我們得告訴系統,我們要用 utf8 來做操作,以 xoops 這個系統為例,方法如下:
找到 /class/database/mysqldatabase.php 這個檔,在 connect 這個方法中,加入以下指令
@mysql_query(”SET NAMES utf8″, $this->conn);
重點是 “SET NAMES utf8″,這會告訴 mysql 我要用 utf8 的方法來操作資料庫。
這樣一來,在  phpmyadmin 就會看到正常的中文。
如果你沒用到 shell 的話,問題就到此為止,但是你如果在 shell 有用到 mysqldump 來備份資料的話,還有一個問題。
第三、vi的編碼問題,vi預設的編碼不是utf8 所以我們要設定一下 .vimrc ,告訴他要我要用 utf8 來做預設的編碼。在此附上我的設定檔給大家參考:
set enc=utf-8
set fenc=utf-8
set fencs=utf-8,big5
set expandtab
set shiftwidth=4
set softtabstop=4
set tabstop=4
set autoindent

Xoops 2.0.18 針對中文 utf8 的調整

http://xoops.tnc.edu.tw/ 下載的 xoops,安裝後雖然可以正常的顯示中文,但是對我來說,還是有一些不方便的地方。
我所使用的虛擬主機,有提供 phpMyAdmin 的功能,但是如果安裝「XOOPS 正體中文延伸計劃」所釋出的版本,在 phpMyAdmin 所看到的中文就是亂碼。
所以下載後,我更動了2個地方:
1、/install/sql/mysql.structure.sql
我在每個新建資料表的「TYPE=MyISAM」敘述後,加上了「CHARACTER SET utf8 COLLATE utf8_unicode_ci」
2、/class/database/mysqldatabase.php
在第83行的地方,加入「 @mysql_query(”SET NAMES utf8″, $this->conn); 」
這樣一來,我的phpMyAdmin 就可以正常的顯示中文了。
下面是我打包好的 tar ball ,需要的人請享用
xoops-2018-tw-utf8-kirin

代管主機時區問題

使用虛擬主機時常會遇到時區的問題,像 HG 的主機,他的時區是設成 CDT(Central Daylight Time),CDT 是 UTC-5,但台灣(香港、澳門、大陸)是UTC+8,所以有時會產生一些問題。
這些問題會隨著使用時間的不同方式,而有不同的處理方法。
例如我在指令列下使用 date,預設他是用 localtime
所以他秀出來的時間是CDT的時間,格式如下:
Thu Apr  9 09:03:13 CDT 2009
但是我們如果想要改成台灣的時間,就要設定 TZ 這個環境變數,比如台灣是 UTC+8,就要把 TZ 設定成「UTC-8」,如下:
export TZ=’UTC-8′
這樣執行 date 就會有如下的結果:
Thu Apr  9 22:04:26 UTC 2009
如果我們要設定阿拉斯加的時間,他的時區是UTC-8,那麼我們的 TZ 變數就要設定成「UTC+8」,就會有如下的結果:
Thu Apr  9 06:03:31 UTC 2009
說真的,我還真搞不懂為什麼 TZ 變數要和 UTC 的設定法 正負號相反,挺奇怪的,等有空再來找一下答案。
如果是使用 php 來寫程式,則有另外的處理方式。
php 常用的時間記錄方式是 unix timestamp;unix timestamp 是從 00:00:00 1970-01-01UTC開始記錄經過多少秒,用這種方式有幾個好處,第一是好計算,第二是有不少函數支援這種計算方式。
這種方式因為一開始就設定好了 UTC ,所以只要在處理顯示格式時,注意一下時區就好。
另一種的格式則是 mysql timestamp,這種是直接以時間的格式寫入資料庫的,所以程式執行了一段時間後,才想到要更改 timezone,會導致更改前後的時間資料時區不一致,這點要小心。
●參考資料
1、http://www.timeanddate.com/time/