jeudi 11 octobre 2012

php5.4 et WSO2

Pour ceux qui voudraient utiliser WSO2  http://wso2.com/products/web-services-framework/php/


Comme php le dit depuis longtemps, il y a des changements d'obsolescence programmée.
Et donc il faut entretenir les vieux sources, qui finissent par plus marcher :
(foutaise: avec quel argent ?)


1/
wso2-wsf-php-src-2.1.0/src/wsf.c:461:
erreur: ‘zend_class_entry’ has no member named ‘default_properties’
bon, un changement, quoi
réécrire :

#if PHP_VERSION_ID < 50399
    zend_hash_copy(intern->std.properties, &class_type->default_properties,
            (copy_ctor_func_t) zval_add_ref, (void *) & tmp, sizeof (void *));
#else
        object_properties_init(intern, class_type);
#endif






2/
/appli/src/php/php5-src/ext/wso2-wsf-php-src-2.1.0/src/wsf_util.c:1989:
erreur: ‘struct _php_core_globals’ has no member named ‘safe_mode’
/appli/src/php/php5-src/ext/wso2-wsf-php-src-2.1.0/src/wsf_util.c:1989:
erreur: ‘CHECKUID_CHECK_FILE_AND_DIR’ undeclared (first use in this function)
ok safe_mode existe plus, mais était-ce une raison pour le virer des struct... bref
supprimer ces trois lignes
                if (PG(safe_mode) && (!php_checkuid(resolved_path_buff, NULL, CHECKUID_CHECK_FILE_AND_DIR)))
                {
                        return NULL;
                }

mon patch en ed (...) :

cat <ext/patch_wso2_src.sh
if [[ "\`grep -c object_properties_init src/wsf.c\`" = "0" ]];then
ed src/wsf.c <
/zend_hash_copy
i
#if PHP_VERSION_ID < 50399
.
+3
i
#else
object_properties_init(intern, class_type);
#endif
.
w
q
EOED
fi

if [[ "\`grep -c safe_mode src/wsf_util.c\`" = "1" ]];then
ed src/wsf_util.c <
/safe_mode
.,+3 d
i
/* no more safe mode */
.
w
q
EOED
fi
EOT




Aucun commentaire: