这两天被两个奇怪的问题困扰着。奇怪的原因是一些以前做好没有问题,操作正常的东西,因为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,本地使用,没有意思啦。 |