PHP 常見問題
« Previous Entries結合R與PHP的方法
星期六, 8月 28th, 2010R中有很多的模組與套裝軟體都是PHP所沒有的, 若能夠將這兩個平台結合起來將會將很多工作簡化起來, 以下是結合PHP與R的一個範例, 但通常我們使用到網頁服務(web service)都要考量到TIMEOUT的問題. 若R需要大量的computational time, 則表示PHP勢必會造成TIMEOUT; 所以解決方法可能就要再另外寫一個LOADING BAR, 或者用FLASH, SILVERLIGHT等RIA的方式來操控了.
以下範例應該是以LINUX裝R的機器為主, 若要在windows Server的R上去執行exec()可能需要設定其他的環境變數, 由於尚未實際操作, 所以先略過這個部分了.
http://www.r-bloggers.com/integrating-php-and-r/
台灣R的官方網站載點: http://cran.csie.ntu.edu.tw/
使用PHP來處理Silverlight (SOAP) (下)
星期三, 8月 25th, 2010這一篇將介紹如何讓Silverlight在事件觸發之後傳輸資料給PHP的SOAP web service.
STEP1: 在VS2010的Silverlight專案按右鍵 > Add Service Reference
STEP2: 確認你的wsdl 已經上傳到web server上之後, 將他的路徑輸入在 “Address”的欄位之中. 並按下 “Go”, 就可以看到ageService的SOAP出現在Services的欄位中.
此外, 為了方便起見, 我們也將Namespace命名程成 “AgeService” (這名字將會在xaml.cs中再度用到)
Step3 : 按下OK之後就會發現專案檔中出現兩個新的檔案, 一個是AgeService, 另一個是config檔. 雙擊config檔.
Step4: 你會發現剛剛設定的東西已經被記錄到Config檔裡面去了.
STEP5: 接下來是處理XAML.CS中的事件, 其中包含了兩個function的CODE:
namespace SilverlightApplication2
{
public partial class MainPage : UserControl
{
public MainPage()
[...]
使用PHP來處理Silverlight (SOAP) (上)
星期三, 8月 25th, 2010在網路上搜尋關於初學者以PHP處理Silverlight的教學文章不多,
但就以這篇我測試後是OK的,
所以在這裡希望能用中文簡略的來重新記錄一遍.
測試環境:
Windows Server 2008 IIS 7.0
FastCGI (PHP環境)
PHP 5.2.14 (必須開 soap 與 xmlrpc的模組)
Silverlight 4 (確認你的CLIENT已經安裝好silverlight, 其實就像裝Flash Player那麼簡單)
使用的Tools:
Visual Studio 2010
Silverlight 4 tools
PHP IDE (都可)
使用到的檔案:
index.php: 顯示silverlight的頁面, 其實對silverlight不熟悉的人可以把它想成是Flash的swf檔, 就像把swf用HTML的object 包起來然後指定路徑顯示而已.
ageService.php: 使用者自己寫的class檔, 還有開啟SOAP的程式也會記錄在裡面
ClientBin/SilverlightApplication2.xap: 當你用Visual Studio 2010編輯完成後Build出來的就是一個放在ClientBin的xap檔, 事實上在PHP的環境裡, 你只要把xap上傳就可以了, 起他的xaml檔都是原始碼, 讓你日後維護修改再Build的時候可以用到.
ageService.wsdl: 這是根據W3C制定的一種XML格式, 內容其實就是告訴SOAP可以接受甚麼, 可以傳送甚麼, 格式是甚麼, 將會吃進甚麼CLASS. 這個檔案將會在ageService.php裡面被拿來用.
index.php內容如下:
source的部分指定了xap檔的路徑, 吃進這個檔案基本上就可以顯示Silverlight的內容了.
ageService.php內容如下:
ageService這邊顯示了使用者自訂的Class, 以及如何使用PHP來啟動SOAP服務. 這裡的class只是使用了一個簡單的IF範例. 若使用者輸入的字串為”alfie”則回傳”7″給SILVERLIGHT程式; 若使用者輸入”catherine”, 則回傳”21″給SILVERLIGHT程式. 一般來說, 這裡的CLASS大部分都是用來處理MYSQL所讀取的資料. 為了簡單示範, 這裡就不用太複雜的範例了.
ageService.wsdl內容如下:
仔細看這個XML的內容可以發現他REQUEST是吃進一個STRING, 然後回復的時候是回傳一個INT,
getAge是使用者自訂Class的function, 而這篇教學的重點也是圍繞在這個getAge function.
要注意的是wsdl的內容也要指定SOAP Service的路徑, 也就是web伺服器的php位址.
ClientBin/SilverlightApplication2.xap [...]
PHP4 iconv 問題
星期三, 10月 7th, 2009環境: PHP4 + Apache4 + Windows
函數: iconv (http://tw.php.net/iconv)
最近有幫舊電腦寫程式,
發現PHP4預設不支援iconv, 先別擔心升級PHP5所帶來的其他風險,
其實是有辦法可以在PHP4下解決的:
1. 在C:\php\dll 底下有個 php_iconv.dll
2. 將此DLL放到 c:\Windows\system32\ 底下
3. 在C:\php\php.ini 將 extension 下的 php_iconv.dll Uncomment掉(把分號拿掉)
4. 重新啟動Apache.
5. It works!
在IIS7上安裝FASTCGI驅動PHP
星期一, 10月 5th, 2009http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/#EnableFastCGI
PHP swfUpload 大量檔案上傳
星期日, 9月 6th, 2009PHP的File Upload功能固然強大, 但要滿足大量檔案上傳的需求仍需要搭配AJAX或是Flash object, 這篇文章就是要介紹一個好用的Flash Uploader, 讓你可以直接從Windows, 在同一個目錄下選取要上傳的檔案, 達成輕鬆上傳的目的.
SwfUpload
官方網站: http://swfupload.org/
範例: http://demo.swfupload.org/v220/index.htm
index.php FLASH檔案上傳的頁面
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=big5″ />
<link href=”style.css” rel=”stylesheet” type=”text/css” />
<link href=”default.css” rel=”stylesheet” type=”text/css” />
<title>測試</title>
<script type=”text/javascript” src=”swfupload/swfupload.js”></script>
<script type=”text/javascript” src=”js/swfupload.swfobject.js”></script>
<script type=”text/javascript” src=”js/swfupload.queue.js”></script>
<script type=”text/javascript” src=”js/fileprogress.js”></script>
<script type=”text/javascript” src=”js/handlers.js”></script>
<script type=”text/javascript”>
var swfu;
SWFUpload.onload = function () {
var settings = {
flash_url : “swfupload/swfupload.swf”,
upload_url: “upload.php”, //負責處理上傳的PHP檔案
post_params: [...]
phpMailer 應用
星期四, 8月 27th, 2009PHP Mailer
$mail = new PHPMailer();
mb_internal_encoding(’UTF-8′); //避免主題亂碼
//Function
function MyMailer($mail, $to, $mailbody, $subject, $attachtrue, $filename) {
global $smtpsecure2, $smtphost2, $smtpport2;
global $username2, $password2, $replyto2;
global $from2, $fromname2;
$mail->IsSMTP();
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = $smtpsecure2;
$mail->Host = $smtphost2;
$mail->Port = $smtpport2;
$mail->Username = $username2;
$mail->Password = $password2;
$mail->AddReplyTo($replyto2,$fromname2);
$mail->From = $from2;
$mail->FromName = $fromname2;
$mail->Subject = mb_encode_mimeheader($subject, “UTF-8″);
$mail->WordWrap = 50; // set word wrap
$mail->MsgHTML($mailbody);
$mail->AddAddress($to, “”);
//charset
$mail->CharSet=”UTF-8″;
if($attachtrue == 1) {
for($i = [...]
Linux 系統排程 執行 PHP
星期五, 4月 3rd, 20091. 在linux輸入指令: crontab -e 進行系統排程編輯模式
2. 格式大概如下, 前面5個欄位分別是是執行的日期時間(分 時 日 月 年), 後面的路徑是要執行的程式, 以下的意思是指每天的凌晨12點會執行一次此程式:
0 0 * * * /usr/local/www/awstats/cgi-bin/awstats.sh
3. 現在我們要排程執行PHP網頁, 因此需要用LINUX的PHP程式來執行PHP網頁, 指令如下:
30 23 * * * /usr/local/bin/php /home/xxx/public_html/mytesting.php >> /host/cron.log 2>&2
以上的指令含意是, 每天的晚上11點30分會使用PHP程式(路徑在/usr/local/bin/)來執行PHP網頁(路徑在/home/xxx/public_html/), 而後面的意思是執行完畢後的紀錄檔會延伸儲存在 /host/cron.log 裡面, 讓你知道執行的結果, 否則執行的狀況你是沒辦法直接看到的.(使用 * 的意思是不管何年何月何日, 若指定日期, 那就表示只會在該日期執行一次) 所以若要系統每天固定時間內替你執行程式, 就要把格式寫清楚囉, crontab的時間格式如下:
field allowed values
—– ————–
minute [...]
好用GD教學網站
星期一, 3月 9th, 2009想在您的WEB APPLICATION加入GD的功能嗎?
想要自己做出漂亮精緻的報表嗎?
那就要好好學習GD了, 它是跟PHP搭配得非常棒的圖像模組,
若您已經對PHP瞭如指掌,那學習GD將會讓您的WEB程式設計功力更加大增.
以下網站將GD的功能與教學都說明得很清楚, 若您是GD入門者, 這個網站將非常適合您.
http://www.nyphp.org/content/presentations/GDintro/gd1.php
GD 管方網站: http://www.boutell.com/gd/
PHP 日曆
星期日, 1月 4th, 2009<?php
//This gets today’s date
$date =time () ;
//This puts the day, month, and year in seperate variables
$day = date(’d’, $date) ;
$month = date(’m’, $date) ;
$year = date(’Y’, $date) ;
//Here we generate the first day of the month
$first_day = mktime(0,0,0,$month, 1, $year) ;
//This gets us the month name
$title = date(’F’, $first_day) ;
//Here we find out what day [...]

