客戶的需求,協助這個問題。
1.確認 httpd.conf 中 AllowOverride All 要打開
2..htaccess 中內容為
php_flag register_globals off # E_ALL ~E_NOTICE -> 2039 #php_value error_reporting 2039 # E_ALL -> 2047 php_value error_reporting 2047
因應客戶需求,將 Centos 5.3 中的 PHP 5.1 和 Mysql 5.0 升級到 PHP 5.2 和 Mysql 5.1
其實我很不願意這樣做,未來都會有處理安全性的麻煩。
1.安裝 epel / remi 套件資訊
wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm wget http://rpms.famillecollet.com/el5.i386/remi-release-5-7.el5.remi.noarch.rpm rpm -ihv *-replease-5*.rpm
2.指定 remi 套件組,更新 PHP / Mysql
yum --enablerepo=remi update php mysql3.安裝完,重新啟動 php / mysql
/etc/init.d/httpd restart /etc/init.d/mysqld restart
4.確認版本
php -v
mysql或者
echo "< ? phpinfo(); ?>" | php | less
參考資料:
某客戶應XX小站需求,要主機需要 PHP json extensions 。
1.下載 json-1.2.1.tgz 解開。
2.yum install php-devel
3.執行 phpize
4../configure ; make ; sudo make install
5.json.so 放置在 /usr/lib/php/modules
6.新增 /etc/php.d/json.ini 內容為 extension=json.so
7.重新啟動 apache
8.確認是否有安裝成功,可用 phpinfo() 或者用 php -m 檢視。
手上有 PHP4 甚至可能是 PHP3 開始寫的網站,環境是 freebsd 。今天試著把網站移轉到 Linux + PHP5 環境,當然有很多程式和設定要改寫。
1.變數都要改寫成用 $_GET , $_POST , $_SERVER 方式取得變數。
2.Cookie 問題,修改 php.ini 中 cookie_path
3.舊的路徑改寫,直接用 ln 方式處理。
4.include 部份都要改寫 include_once
5.單獨為 virtualhost 設定 php.ini ,和系統 php.ini 分開,只是為了 include_path 環境變數。
光改這些就忙了一個下午, 還沒遇到 mysql 3 轉換到 mysql 5 問題,工程麻煩。
環境:Centos 5 / Apache 2 / PHP 5
到 Zend Optimizer 下載 Linux 32bits 版本。
解開 ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz ,執行 ./install ,按照畫面步驟安裝完成。
測試是否安裝成功,執行 phpinfo(); ,出現
with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies
with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies
表示安裝成功。
今天處理到一個奇怪的 Bug,相同程式碼,但是出來的結果卻不一樣。
這次是處理要用程式發送 HTML Mail ,發現寄到 Gmail 的郵件,都不會自動呈現 HTML 格式,但是寄到其他信箱都正常。最後靠 Google 找到問題點,原來是 header 的換行問題。Gmail 只會接受 “\n”,所以若 Header 每一行結尾是 “\r\n” ,將不會解析。
最後在 Email 判斷地方,多判斷是不是 gmail address,若是要另外處理。
資料來源:http://www.bigroom.co.uk/blog/php-mail-and-gmail
Powered by ScribeFire.
兩個免費圖表用的 PHP 工具,一個用 swf 建立的 PHP/SWF Charts,一個用 GD 建立的 JpGraph。
目前測試 PHP/SWF Charts 部份,會遇到中文顯示問題,解決方法為
$chart['legend_label'] = array (‘font’ => ‘system’);
指定font 字體,畫面就可以顯示中文。
目前只是小測一下,明天研究把要的數據產生到圖表上。
而另外發現小相簿功能,是利用 XML/SWF Slideshow,方法是產生XML檔案,所以只要能產生XML檔案,就能使用這 swf 產生要的相簿功能。所以改寫一下我首頁的相簿功能,以前是會秀10張相片,現在改用 swf 方式處理。不過點下去不會顯示大圖,是有點小缺點。
Powered by ScribeFire.
為了練習 PHP / Smarty / Google Maps API,寫了查詢 IP 所屬國家的小程式。
只要輸入你想要查詢的IP,程式會顯示地圖位置。很簡單的程式,倒是遇到一些問題,順便紀錄一下。
預設 smarty 定義字串是 {} ,若網頁有 javascript 會相衝,解決方法重新定義字串。
$this->left_delimiter = “{{“;
$this->right_delimiter = “}}”;
判斷是不是合格IP寫法,可以採用
ereg(“([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})”,$ip,$ips);
比對 $ip 字串是否符合前面 regular 定義,以() 為單位,[0-9] 符合數字型態,{1,3} 允許 1 ~ 3 個字元。
這程式目前只能接受 IP,有時間改能接受 domain name 。
Powered by ScribeFire.
現在才發現有這樣的技巧,當 Form 中的 Button 改用圖檔,可以取得滑鼠點選座標。
When a pointing device is used to click on the image, the form is submitted and the click coordinates passed to the server. The x value is measured in pixels from the left of the image, and the y value in pixels from the top of the image. The submitted data includes name.x=x-value and name.y=y-value where “name” is the value of the name attribute, and x-value and y-value are the x and y coordinate values, respectively.
PHP 取得方法
$foo_x = $_POST['foo_x']; $foo_y = $_POST['foo_y'];
ASP取得方法
foo_x = Request("foo.x") foo_y = Request("foo.y")
真是神奇用法
預設 PHP4 沒有支援 MSSQL 相關元件,所以要自行編譯 mssql.so
apt-get source php4
mssql MSSQL
–with-mssql=shared,/usr
cd ..
dpkg-buildpackage
若編譯過程中,有少一些 xxx-dev ,請自行補上。若編譯過程沒問題,將會多出 PHP4*.deb,直接用
dpkg -i php4*.deb
不過這邊只要mssql.so 檔案,所以
sudo mv php4-4.4.2/debian/php4-mssql/usr/lib/php4/20050606/mssql.so /usr/lib/php4/20050606/
修改 php4.ini
extension=mssql.so
重新啟動 apache 就可以成功。
測試方法:
mssql_connect(“your_sql_server”,”sql_account”,”sql_account_passwd”);