2010年12月17日 星期五

讓ostube支援php5.3與資料庫編碼設定

一、ostube支援php5.3
參考:ostube 2.6 在ubuntu 10.04上的php5.3問題解決方式

Freebsd8.1下的指令:官網說明文件有漏掉class.database.php檔
# cd /usr/local/www/apache22/data
# fetch http://jetzweb.de/bluelotus/auvica_temp/osTube-Update-for-PHP5.3.tar.gz
# tar zxvf osTube-Update-for-PHP5.3.tar.gz
# mv osTube-Update-for-PHP5.3/signup.php ostube/signup.php
# mv osTube-Update-for-PHP5.3/includes/class.login.php ostube/includes/class.login.php
# mv osTube-Update-for-PHP5.3/includes/class.mail.php ostube/includes/class.mail.php
# mv osTube-Update-for-PHP5.3/includes/header.php ostube/includes/header.php
# mv osTube-Update-for-PHP5.3/includes/class.database.php ostube/includes/class.database.php
# mv osTube-Update-for-PHP5.3/admin/header.php ostube/admin/header.php
# mv osTube-Update-for-PHP5.3/admin/moduls/tags.php ostube/admin/moduls/tags.php
# rm -rf osTube-Update-for-PHP5.3
# rm -f osTube-Update-for-PHP5.3.tar.gz



目前在 PHP5.3.3_2 運作正常。

二、修正資料庫編碼設定

mysql語法:

SHOW VARIABLES LIKE  'character_set_%'    /看目前系統編碼資訊
SHOW CREATE DATABASE example;             /資料庫編碼

原ostube資料庫編碼是latin1,

phpmyadmin資料庫中文為亂碼

修改系統編碼全為utf8:
# ee /etc/my.cnf

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'

[client]
default-character-set=utf8

# /usr/local/etc/rc.d/mysql-server restart

新主機資料庫編碼是utf8。

1. 舊系統匯出:

mysqldump -u root -p –default-character-set=latin1 ostube > /home/ostube.sql

2. 用PSPad將ostube.sql的latin1替換為為utf8

3. 匯入新系統
mysql -u root -p ostube < /home/ostube.sql


phpmyadmin讀取ostube資料庫,中文正常顯示

4.修改網頁讀取資料庫

# ee /usr/local/www/apache22/data/ostube/includes/class.database.php

在 /includes/class.database.php 裡,function DBaccess($debug = true) 下
大約第 59 行處,加上這句

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET CHARACTER_SET_RESULTS=utf8'");

$this->connected = true;

喔耶~~~花了四小時的時間研究完畢!至少有成功!
參考資料:http://www2.tsps.tpc.edu.tw/plog/tsps/archives/68

沒有留言:

張貼留言