第一个问题,php 模块强制引用传参的说明 PHP4 和 PHP5 是完全不同的。这个已经在 CVS
内修正,smthbbs 1.2.1 需要做的修改:
diff -u -r1.362 -r1.378
--- smth_bbs/bbs2www/phplib/phpbbslib.c,v 13 Jun 2004 13:44:07 -0000 1.362
+++ smth_bbs/bbs2www/phplib/phpbbslib.c,v 16 Jul 2004 01:22:41 -0000 1.378
@@ -21,6 +21,58 @@
#include "bbslib.h"
#include "vote.h"
+#if PHP_MAJOR_VERSION == 5
+static
+ ZEND_BEGIN_ARG_INFO(one_arg_force_ref_1, 0)
+ ZEND_ARG_PASS_INFO(1)
+ ZEND_END_ARG_INFO();
+static
+ ZEND_BEGIN_ARG_INFO(two_arg_force_ref_01, 0)
+ ZEND_ARG_PASS_INFO(0)
+ ZEND_ARG_PASS_INFO(1)
+ ZEND_END_ARG_INFO();
+static
+ ZEND_BEGIN_ARG_INFO(third_arg_force_ref_1111, 0)
+ ZEND_ARG_PASS_INFO(1)
+ ZEND_ARG_PASS_INFO(1)
+ ZEND_ARG_PASS_INFO(1)
+ ZEND_ARG_PASS_INFO(1)
+ ZEND_END_ARG_INFO();
+static
+ ZEND_BEGIN_ARG_INFO(third_arg_force_ref_011, 0)
+ ZEND_ARG_PASS_INFO(0)
+ ZEND_ARG_PASS_INFO(1)
+ ZEND_ARG_PASS_INFO(1)
+ ZEND_END_ARG_INFO();
+static
+ ZEND_BEGIN_ARG_INFO(fourth_arg_force_ref_0001, 0)
+ ZEND_ARG_PASS_INFO(0)
+ ZEND_ARG_PASS_INFO(0)
+ ZEND_ARG_PASS_INFO(0)
+ ZEND_ARG_PASS_INFO(1)
+ ZEND_END_ARG_INFO();
+static
+ ZEND_BEGIN_ARG_INFO(fourth_arg_force_ref_0111, 0)
+ ZEND_ARG_PASS_INFO(0)
+ ZEND_ARG_PASS_INFO(1)
+ ZEND_ARG_PASS_INFO(1)
+ ZEND_ARG_PASS_INFO(1)
+ ZEND_END_ARG_INFO();
+static
+ ZEND_BEGIN_ARG_INFO(third_arg_force_ref_001, 0)
+ ZEND_ARG_PASS_INFO(0)
+ ZEND_ARG_PASS_INFO(0)
+ ZEND_ARG_PASS_INFO(1)
+ ZEND_END_ARG_INFO();
+static
+ ZEND_BEGIN_ARG_INFO(fifth_arg_force_ref_00011, 0)
+ ZEND_ARG_PASS_INFO(0)
+ ZEND_ARG_PASS_INFO(0)
+ ZEND_ARG_PASS_INFO(0)
+ ZEND_ARG_PASS_INFO(1)
+ ZEND_ARG_PASS_INFO(1)
+ ZEND_END_ARG_INFO();
+#else //if PHP_MAJOR_VERSION == 4
static unsigned char one_arg_force_ref_1[] = { 1, BYREF_FORCE };
static unsigned char two_arg_force_ref_01[] = { 2, BYREF_NONE, BYREF_FORCE };
static unsigned char third_arg_force_ref_1111[] = { 4, BYREF_FORCE, BYREF_FORCE, BYREF_FORCE, BYREF_FORCE };
@@ -29,8 +81,9 @@
static unsigned char fourth_arg_force_ref_0111[] = { 4, BYREF_NONE, BYREF_FORCE, BYREF_FORCE, BYREF_FORCE };
static unsigned char third_arg_force_ref_001[] = { 3, BYREF_NONE, BYREF_NONE, BYREF_FORCE };
static unsigned char fifth_arg_force_ref_00011[] = { 5, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_FORCE , BYREF_FORCE};
+#endif
第二个问题,PHP5 的 dom 支持完全重写,受影响的是所有和 xml 操作有关的页面。
有一个 dirty-fix 很容易,请参考 PHP 手册上 domxml 的一个 user note
http://alexandre.alapetite.net/doc-alex/domxml-php4-php5/
--
FROM 162.105.31.*