這兩天被兩個奇怪的問題困擾著。奇怪的原因是一些以前做好沒有問題,操作正常的東西,因為PHP版本昇級,突然無法操作。另一個問題,明明是本地測試沒有問題,但一上載到客戶的Server,卻又不能操作。面對這樣問題就是最痛苦,因為不是程式上的問題,只需往程式上打鑽,面對Server, Apache, PHP上等設定不同問題,真是花很多時間去慢慢找出來。
先說第一個問題。通過AMFPHP進行Flash Remoting時,Method有不同參數要傳,有些參數不需要,所以省略去,AMFPHP那邊收到時會變成Undefined。上星期開發機器,重裝WinXP,裝了最新Apache2.2.8和PHP5.2.5後,AMFPHP 1.9就一直報錯,凡收到不足參數量的數據,即Undefined的數據,就會出現Missing argument的AMFPHP_RUNTIME_ERROR。
解決方法當然是在那個被Call的Function上,凡有可能會省略的參數,都加上Default值,例如: function getSomeData($par1, $par2=null)
不過,尋根究底,為什麼重裝前後,同樣程式,同樣AMFPHP 1.9會有不同反應,難道PHP5.2.5又改了Post Raw Data等格式或限制?不停Google和比較Server上操作正常版本的php.ini和目前本地開發機器的php.ini,最後發現本地開發機器的php.ini加了: extension=php_amf.dll 就是它使到AMFPHP 1.9會有不同了!
結果,當然是Disable它,還豎部署的Server根本沒有支援AMF Native Support,本地使用,沒有意思啦。 |