close


WinXP Pro x86+MySQL 5.0.19+phpMyAdmin 2.8.0.2+Apache2 2.0.55+PHP 5.1.2













前言


此環境應該是目前自己才能架設的因為所有軟體的版本是20060330官方釋出Win32的最新版本,租用虛擬主機以及直接安裝AppServ的人看看就好

 



目標


PHP ASCII編碼檔案即時轉碼為UTF-8瀏覽(為了配合MySQL使用UTF-8編碼存取)

 



原因


為了方便用隨便的編輯器即可撰寫PHP檔案,並且不會有衝碼字許功蓋的問題

 



示範平台


CPU P4 2.4GHZ

 

RAM DDR 1G

 

作業系統WinXP Pro SP2安裝於NTFS格式硬碟

 

作業系統安裝槽擁有3GB以上的未使用空間

 

有線網路使用亞太Cable 2M/256

 

伺服器平台:MySQL 5.0.19+phpMyAdmin 2.8.0.2+Apache2 2.0.55+PHP 4.4.1



伺服器軟體來源取得




MySQL5




phpMyAdmin




Apache2




PHP5




注意


基本Windows操作問題請別發問,自行上Google搜尋去

 

本文章所有的埠都是使用預設埠,如果設定與您的不同,請將不同的埠號修改成您自己設定的埠號

 



Apache2環境架設


(白吃安裝法...略),開啟防火牆80埠




MySQL5架設



    
  • 下載install版本,不要下載UnZip版本
  • 
  • 下載完成後解壓縮
  • 
  • 執行Setup.exe
  • 
  • 白痴安裝法, 接用預設值
  • 
  • 當安裝到Please select default character set.,請點選Best Support For Multilingualism
  • 
  • 當安裝到Please set the Windows options,多勾選Include Bin Directory in Windows PATH
  • 
  • 當安裝到Please set the security options,於New root password以及Confirm欄位輸入你自訂的密碼並牢記
  • 


  • 若需要自其他電腦使用本機MySQL,請開啟防火牆3306埠

  • 




PHP5環境架設





下載Zip檔,不要下載install的版本



 



我將Zip檔解開後的存放到C:\php5,php.exe的位置位於C:\php5\php.exe



 



php.ini-recommended複製到安裝windows的資料夾下,以我複製後位置是C:\WINDOWS\php.ini-recommended






php.ini-recommended重新命名為php.ini





修改php.ini


    


  • register_globals = Off


    關閉此設定可以提升效能,但程式相容性低,取得標準變數一定要用完整格式,例如$post['UserPost']一定要使用$_POST['UserPost']
  • 


  • extension_dir = "c:/php5/ext/"


    我解壓縮到C:\,固設定如上 
  • 


  • extension=php_mbstring.dll




    extension=php_mysql.dll


    將前面的;拿掉 
  • 
  • 將php.ini存檔
  • 




複製php5ts.dll



c:\php5\php5ts.dll複製到安裝windows的資料夾之下的system32資料夾下,以我複製後位置是C:\WINDOWS\system32\php5ts.dll


 



修改Apache2的httpd.conf


 



DirectoryIndex index.htm index.html index.html.var index.php index.phtml


尋找並修改 DirectoryIndex(預設文件)

 



LoadModule php5_module "C:/php5/php5apache2.dll"
<IfModule mod_mime.c>
  AddType application/x-httpd-php .php .phtml
  AddType application/x-httpd-php-source .phps
</IfModule>







 

加入到httpd.conf的最後

這樣支援.php以及.phtml檔案,.phps的php原始碼檔案會有彩色語法

將httpd.conf存檔,Apache2 Stop然後Start(用restart常常出問題,乾脆用stop+start),如果出錯誤請把錯誤回應上來


新增一個純文字文件,內容輸入<?php phpinfo();?>存檔,並且重新命名為index.php,放到Apache2的主目錄(預設htdocs)



 



使用瀏覽器瀏覽http://localhost:80/index.php ,看是否有php的環境變數輸出,有一堆紫色的畫面寫php安怎安怎的就是成功了


 



phpMyAdmin安裝


phpmyAdmin解壓縮至Apache2的主目錄下(預設htdocs),我的位置是C:\Apache2\htdocs\phpMyAdmin\

 

新增config資料夾於C:\Apache2\htdocs\phpMyAdmin下,我的位置是C:\Apache2\htdocs\phpMyAdmin\config\

 

 

設定config.inc.php



    
  • Servers按下Add按鈕
    
      
    • Authentication type
    • 
    • 選擇cookie 
    • 


    • User for config auth


      將已輸入的值刪除,保持淨空 
    • 


    • phpMyAdmin control user


      輸入最高權限的帳號,預設為root
    • 


    • phpMyAdmin control user password


      輸入最高權限帳號的密碼 (安裝MySQL5時所牢記的密碼)
    • 


    • phpMyAdmin database for advanced features


      輸入phpmyadmin 
    • 
    • 按下Add按鈕
    • 
    
  • 
  • Features按下Charsets按鈕 
      
    
      
    • Allow charset conversion
      勾選此項
    • 


    • Default charset


      選擇utf-8 
    • 


    • Recoding engine


      選擇Auto 
    • 
    • 按下Update按鈕
    • 
    
  • 



    
  • Configuration按下Save按鈕
  • 
  • Setup.php產生的config.inc.php複製到phpMyAdmin的根目錄下
    舉例:C:\Apache2\htdocs\phpMyAdmin\config\config.inc.php
    複製到C:\Apache2\htdocs\phpMyAdmin\config.inc.php
  • 


  • 將config資料夾整個刪除


    舉例:刪除C:\Apache2\htdocs\phpMyAdmin\config
  • 
使用瀏覽器瀏覽http://localhost:80/phpMyAdmin/index.php


 

選擇你愛用的語系(我選擇中文 - Chinese traditional (utf-8))

 

輸入最高權限的使用者帳號以及最高權限使用者帳號的密碼,按下登入按鈕

 



建立MySQL5關聯資料存放資料庫配合phpMyAdmin


    
  • 登入phpMyAdmin後的主目錄
  • 
  • 右方視窗新增資料庫輸入:phpmyadmin
  • 
  • 右方視窗點選建立
  • 
  • 右方視窗點選上方SQL
  • 
  • 複製以下粗體字的SQL指令
  • 


## 資料表格式: `PMA_bookmark`#CREATE TABLE `PMA_bookmark` (`id` int(11) NOT NULL auto_increment,`dbase` varchar(255) NOT NULL default '',`user` varchar(255) NOT NULL default '',`label` varchar(255) NOT NULL default '',`query` text NOT NULL,PRIMARY KEY (`id`)) TYPE=MyISAM COMMENT='Bookmarks' AUTO_INCREMENT=1 ;# --------------------------------------------------------## 資料表格式: `PMA_column_info`#CREATE TABLE `PMA_column_info` (`id` int(5) unsigned NOT NULL auto_increment,`db_name` varchar(64) NOT NULL default '',`table_name` varchar(64) NOT NULL default '',`column_name` varchar(64) NOT NULL default '',`comment` varchar(255) NOT NULL default '',`mimetype` varchar(255) NOT NULL default '',`transformation` varchar(255) NOT NULL default '',`transformation_options` varchar(255) NOT NULL default '',PRIMARY KEY (`id`),UNIQUE KEY `db_name` (`db_name`,`table_name`,`column_name`)) TYPE=MyISAM COMMENT='Comments for Columns' AUTO_INCREMENT=24 ;# --------------------------------------------------------## 資料表格式: `PMA_history`#CREATE TABLE `PMA_history` (`id` bigint(20) unsigned NOT NULL auto_increment,`username` varchar(64) NOT NULL default '',`db` varchar(64) NOT NULL default '',`table` varchar(64) NOT NULL default '',`timevalue` timestamp(14) NOT NULL,`sqlquery` text NOT NULL,PRIMARY KEY (`id`),KEY `username` (`username`,`db`,`table`,`timevalue`)) TYPE=MyISAM COMMENT='SQL history' AUTO_INCREMENT=1 ;# --------------------------------------------------------## 資料表格式: `PMA_pdf_pages`#CREATE TABLE `PMA_pdf_pages` (`db_name` varchar(64) NOT NULL default '',`page_nr` int(10) unsigned NOT NULL auto_increment,`page_descr` varchar(50) NOT NULL default '',PRIMARY KEY (`page_nr`),KEY `db_name` (`db_name`)) TYPE=MyISAM COMMENT='PDF Relationpages for PMA' AUTO_INCREMENT=3 ;# --------------------------------------------------------## 資料表格式: `PMA_relation`#CREATE TABLE `PMA_relation` (`master_db` varchar(64) NOT NULL default '',`master_table` varchar(64) NOT NULL default '',`master_field` varchar(64) NOT NULL default '',`foreign_db` varchar(64) NOT NULL default '',`foreign_table` varchar(64) NOT NULL default '',`foreign_field` varchar(64) NOT NULL default '',PRIMARY KEY (`master_db`,`master_table`,`master_field`),KEY `foreign_field` (`foreign_db`,`foreign_table`)) TYPE=MyISAM COMMENT='Relation table';# --------------------------------------------------------## 資料表格式: `PMA_table_coords`#CREATE TABLE `PMA_table_coords` (`db_name` varchar(64) NOT NULL default '',`table_name` varchar(64) NOT NULL default '',`pdf_page_number` int(11) NOT NULL default '0',`x` float unsigned NOT NULL default '0',`y` float unsigned NOT NULL default '0',PRIMARY KEY (`db_name`,`table_name`,`pdf_page_number`)) TYPE=MyISAM COMMENT='Table coordinates for phpMyAdmin PDF output';# --------------------------------------------------------## 資料表格式: `PMA_table_info`#CREATE TABLE `PMA_table_info` (`db_name` varchar(64) NOT NULL default '',`table_name` varchar(64) NOT NULL default '',`display_field` varchar(64) NOT NULL default '',PRIMARY KEY (`db_name`,`table_name`)) TYPE=MyISAM COMMENT='Table information for phpMyAdmin'; 


    
  • 右方視窗輸入SQL指令的區域將已複製的SQL指令貼上
  • 
  • 右方視窗點選執行按鈕
  • 




 PHP5程式實作



新增一個純文字文件,更名為test.php



將以下粗體字程式碼複製貼入test.php內



 


<?phpmb_internal_encoding("Big5");mb_http_output('UTF-8');ob_start('mb_output_handler');header('Content-Type: text/html; charset=UTF-8');?><html><head><title>Big5編碼,使用UTF-8展示</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body><form method=post>更改Admin姓名:<input type=text name="UserName" value=""><input type=submit></form><?php/*-- 資料表新增SQL開始-- 資料表請於test資料庫,在SQL語法執行處貼上並執行-- phpMyAdmin SQL Dump-- version 2.8.0.2-- http://www.phpmyadmin.net-- -- 主機: localhost-- 建立日期: Mar 31, 2006, 01:56 AM-- 伺服器版本: 5.0.19-- PHP 版本: 4.4.1-- -- 資料庫: `test`-- -- ---------------------------------------------------------- -- 資料表格式: `user_value`-- CREATE TABLE `user_value` (  `id` varchar(10) NOT NULL,  `name` varchar(20) NOT NULL,  PRIMARY KEY  (`id`)) TYPE=InnoDB;-- -- RELATIONS FOR TABLE `user_value`:--   `id`--       `users` -> `id`-- -- -- 列出以下資料庫的數據: `user_value`-- INSERT INTO `user_value` (`id`, `name`) VALUES ('Admin', 'Administrstor');-- ---------------------------------------------------------- -- 資料表格式: `users`-- CREATE TABLE `users` (  `id` varchar(10) NOT NULL,  `password` varchar(20) NOT NULL,  PRIMARY KEY  (`id`)) TYPE=InnoDB;-- -- 列出以下資料庫的數據: `users`-- INSERT INTO `users` (`id`, `password`) VALUES ('Admin', '123');-- -- 備份資料表限制-- -- -- 資料表限制 `user_value`-- ALTER TABLE `user_value`  ADD CONSTRAINT `user_value_ibfk_1` FOREIGN KEY (`id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;-- 資料表SQL完畢*//* mysql的連線預設字元集若是按照我的設定已經設定為utf-8 所以請不要另外設定 就算強制設定 也是會出錯 所有輸出變數資料都要使用 mb_convert_encoding($str, "Big5","UTF-8")即可轉碼*/$link_id=mysql_connect("輸入MySQL的主機位置","最高權限管理員帳號","最高權限管理員密碼") or die('Could not connect: ' . mysql_error());;mysql_select_db("test") or die('Could not select database');if(isset($_POST['UserName'])){ $sql = "UPDATE `user_value` SET `name` = '".$_POST['UserName']."' WHERE `id`= 'Admin';" or die('Query failed: ' . mysql_error()); if(mysql_query($sql,$link_id)){  echo "Admin姓名已更新為:".mb_convert_encoding($_POST['UserName'], "Big5","UTF-8")."<br>"; } else{  echo "Admin姓名無法更新為:".mb_convert_encoding($_POST['UserName'], "Big5","UTF-8")."<br>"; }}$sql = 'SELECT `users` . `id` , `user_value` . `name` FROM `users` INNER JOIN ( `user_value` ) ON `users` . `id` = `user_value` . `id`; ' or die('Query failed: ' . mysql_error());$result=mysql_query($sql,$link_id);//輸出資料庫內容開始echo "<table border=1><tr><td>ID</td><td>Name</td></tr>\n";while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "<tr>"; foreach ($line as $col_value) {  echo "<td>". mb_convert_encoding($col_value, "Big5","UTF-8")."</td>"; } echo "</tr>\n";}echo "</table>\n";//輸出資料庫內容結束//釋放資料庫記憶體mysql_free_result($result);//關閉資料庫連線mysql_close($link);?><pre>Big5內文測試話說從前從前~~~有位園藝家..擅長種植出世上最翠綠的草地~~進而得到國王的寵愛~~並封他為''農務大臣''~~後來農務大臣死後豐功偉績傳到了天堂~~上帝便昭換農務大臣到天堂幫它種植草地~~不過農務大臣上天堂後卻再也種不出綠油油的草地了~~為啥為啥為啥???因為...............        仙草是黑的....................囧RZ</pre></body></html>


 



修改mysql_connect("MySQL主機位置","最高權限管理員帳號","最高權限管理員密碼")



儲存test.php



將test.php內提到測試用的資料表建好



將test.php放在Apache2的主目錄下(預設htdocs),我的位置是C:\Apache2\htdocs\test.php



使用瀏覽器瀏覽http://localhost:80/test.php



按右鍵檢視網頁編碼是否為UTF-8



在輸入文字方塊內輸入一些中文例如:許功蓋並送出資料測試



送出資料後中文顯示正常者,恭喜你成功了



送出資料後中文顯示錯誤者,請你自己Debug







若是我文章有寫錯請指正,歡迎您的討論



arrow
arrow
    全站熱搜

    gan068 發表在 痞客邦 留言(0) 人氣()