【資料來源:http://www.wujianrong.com/archives/2007/04/phppear.html

我 的Iceblog從2005年春天開始,做做停停,總算能夠顯示出來了,前台的很多功能還沒來得及做,不過後台基本上做好了。於是買了一個一百元/年的虛 擬主機,準備把程序放上去。PHP開發,一直以來我都是用PEAR+Smarty的,而且我的blog是UTF8編碼的,所以對雙字節文字的處理使用了 mbstring模塊。本來我以為把程序上載上去,數據做一下import,就萬事ok了,其實還是太大意了……

我本機的開發環境是apache2+php5+mysql; 虛擬主機是IIS6+php4+mysql; 貌似沒什麼,買空間之前我只確認了gd2模塊是否已經安裝了,因為我的blog程序的登錄部分用到了圖形驗證。忘記問mbstring的事情了,以為是默 認安裝的…… 其實也就是我能用上這個小日本發明的垃圾function,因為我在以前的項目中被日本人要求用過……  處理UTF8的中文還就必須用這個,否則字符串處理直接亂碼給你看。不過跟虛擬主機提供商交涉了一下,那個哥們比較好說話,按照我告訴他的在 php.ini裡頭把extension中的dll加載了。不過PEAR就完全沒有辦法,主機上安裝的PHP4不知道是什麼發佈版本,根本不帶PEAR, 我也不知道怎麼跟他說安裝的方法,因為的確比較麻煩,需要從pear.php.net下載之後copy到php安裝目錄,然後運行go- pear.bat,然後用pear -install DB的命令從Internet上安裝DB package,然後在php.ini中加上include_path='.;c:\php\pear'; 這才能算完。看來PEAR只能自己搞定了。

開始我只是把需要用到的PEAR文件copy到我的blog目錄中,直接指定絕對路徑include,需要改很多地方,而且還是不好用,使用DB.php的時候根本不能創建object,也不能建立數據庫連接。

後來在網上搜索了半天找了一些文章,不過上面都是說怎麼通過SSH登錄到主機安裝,再不就是說用ftps遠程安裝。使用ssh是不用想了,ftps要求必須php5.0以上,而且php打開了openssl的模塊,我也不符合這些要求。

後來經過摸索找到了一個可行的解決方法:

1、在本機環境中安裝PEAR,並且安裝好需要的模塊(我安裝了DB模塊)。

2、upload所有的PEAR目錄到虛擬主機的相關目錄下(d:\web\blog\PEAR

3、修改pear.ini如下:(修改紅色字部分為目前PEAR的實際目錄,然後save)

#PEAR_Config 0.9
a:8:{s:15:"preferred_state";s:6:"stable";s:7:"bin_dir";s:6:"D:\php";s:7:"php_dir";s:11:"D:\web\blog\pear";s:7:"doc_dir";s:16:"D:\web\blog\pear\docs";s:8:"data_dir";s:16:"D:\web\blog\pear\data";s:8:"test_dir";s:17:"D:\web\blog\pear\tests";s:7:"php_bin";s:16:"D:\php\.\php.exe";s:10:"__channels";a:2:{s:12:"pecl.php.net";a:0:{}s:5:"__uri";a:0:{}}}

4、程序代碼中加入:

# 擴展include_path
  set_include_path( get_include_path() . PATH_SEPARATOR . 'D:\web\blog\pear'
);

 

這樣就可以了,不用SSH也不用FTPS,更不用麻煩Administrator

 

另外,這個主機配置的php.ini基本上都是用的default值,我比較討厭magic_quotes_gpc也是on的。以下代碼可以搞定,

# 關閉Get_magic_quotes_gpc
  if (get_magic_quotes_gpc()) {

     $_POST = array_map('stripslashes_deep', $_POST);
     $_GET = array_map('stripslashes_deep', $_GET);
     $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
  }


arrow
arrow
    全站熱搜

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