• problem with php api

    From aotto1968@21:1/5 to All on Wed May 31 10:22:21 2023
    Hi,

    the following code fails if shared library is loaded with dl()


    ...
    PHP_MINIT_FUNCTION(phpmkkernel)
    {
    #if defined(ZTS) && defined(COMPILE_DL_PHPMKKERNEL)
    ZEND_TSRMLS_CACHE_UPDATE();
    #endif

    #if defined(ZTS)
    ...
    #endif

    /* If you have INI entries, uncomment these lines
    REGISTER_INI_ENTRIES();
    */

    return LibMkKernel_MInit (INIT_FUNC_ARGS_PASSTHRU) ;
    }


    static ZEND_RESULT_CODE LibMkKernel_MInit (INIT_FUNC_ARGS) {
    ...
    MK(MkErrorE) = zend_register_internal_enum("PhpMsgque\\MkKernel\\MkErrorE", IS_LONG, NULL);
    zend_enum_add_case_cstr(MK(MkErrorE), "OK", OT_TMP_INT_OBJ(0));
    zend_enum_add_case_cstr(MK(MkErrorE), "CONTINUE", OT_TMP_INT_OBJ(1));
    zend_enum_add_case_cstr(MK(MkErrorE), "ERROR", OT_TMP_INT_OBJ(2));
    ...
    return SUCCESS;
    }
    <<<<<

    the problem is an assert in create_enum_case_ast

    ZEND_ASSERT(ZSTR_IS_INTERNED(class_name));

    if shared library is loaded with "extension" in php.ini than it is fine

    extension="..."


    question: what I have to do ?

    mfg ao

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jerry Stuckle@21:1/5 to All on Wed May 31 11:56:32 2023
    On 5/31/2023 4:22 AM, aotto1968 wrote:
    Hi,

    the following code fails if shared library is loaded with dl()


    ...
    PHP_MINIT_FUNCTION(phpmkkernel)
    {
    #if defined(ZTS) && defined(COMPILE_DL_PHPMKKERNEL)
      ZEND_TSRMLS_CACHE_UPDATE();
    #endif

    #if defined(ZTS)
    ...
    #endif

      /* If you have INI entries, uncomment these lines
      REGISTER_INI_ENTRIES();
      */

      return LibMkKernel_MInit     (INIT_FUNC_ARGS_PASSTHRU)  ;
    }


    static ZEND_RESULT_CODE LibMkKernel_MInit (INIT_FUNC_ARGS) {
    ...
      MK(MkErrorE) = zend_register_internal_enum("PhpMsgque\\MkKernel\\MkErrorE", IS_LONG,
    NULL);
      zend_enum_add_case_cstr(MK(MkErrorE), "OK", OT_TMP_INT_OBJ(0));
      zend_enum_add_case_cstr(MK(MkErrorE), "CONTINUE", OT_TMP_INT_OBJ(1));
      zend_enum_add_case_cstr(MK(MkErrorE), "ERROR", OT_TMP_INT_OBJ(2));
    ...
      return SUCCESS;
    }
    <<<<<

    the problem is an assert in create_enum_case_ast

       ZEND_ASSERT(ZSTR_IS_INTERNED(class_name));

    if shared library is loaded with "extension" in php.ini than it is fine

       extension="..."


    question: what I have to do ?

    mfg ao

    Well, to start with, you could show us the code you're using to load the library. What is the return value from dl()? Which OS are you using?

    --
    ==================
    Remove the "x"'s from my email address
    Jerry Stuckle
    stucklex.jerryx@gmail.com
    ==================

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)