If I compile my class if written, I get this error-messages:
~/php-5.1.1/ext/smartflow/smartflow.c: In function 'zm_startup_smartflow':
~/php-5.1.1/ext/smartflow/smartflow.c:109: error: too few arguments to function
'zend_register_internal_class'
make: *** [ext/smartflow/smartflow.lo] Fehler 1
These are the lines where I get this error-messages (smartflow.c/lines: 91-110):
PHP_MINIT_FUNCTION(smartflow)
{
zend_class_entry smartflow_ce;
INIT_CLASS_ENTRY(
smartflow,
"SmartFlow",
smartflow_methods
);
smartflow_ce_ptr = zend_register_internal_class(&smartflow_ce); // 101
zend_declare_property_string(
smartflow_ce_ptr, // 104
"content", strlen("content"), "",
ZEND_ACC_PUBLIC
);
return SUCCESS;
}
I have another class with "exactly the same" lines but there I get no
error-messages. I can´t find any differences in my sources. I hope you can help
me to fix my problem. If I add TSRMLS_CC to line 101 and 104 I don´t get these
error-messages but after compiling php I get a memory-access error.
- Jan Pieper
You forgot to add TSRMLS_CC macro:
zend_register_internal_class(&ce TSRMLS_CC);
Btw, pecl-dev@lists.php.net is more appropriate list for such questions.
If I compile my class if written, I get this error-messages:
~/php-5.1.1/ext/smartflow/smartflow.c: In function 'zm_startup_smartflow':
~/php-5.1.1/ext/smartflow/smartflow.c:109: error: too few arguments to function
'zend_register_internal_class'
make: *** [ext/smartflow/smartflow.lo] Fehler 1These are the lines where I get this error-messages (smartflow.c/lines: 91-110):
PHP_MINIT_FUNCTION(smartflow)
{
zend_class_entry smartflow_ce;INIT_CLASS_ENTRY( smartflow, "SmartFlow", smartflow_methods ); smartflow_ce_ptr = zend_register_internal_class(&smartflow_ce); // 101 zend_declare_property_string( smartflow_ce_ptr, // 104 "content", strlen("content"), "", ZEND_ACC_PUBLIC ); return SUCCESS;
}
I have another class with "exactly the same" lines but there I get no
error-messages. I can´t find any differences in my sources. I hope you can help
me to fix my problem. If I add TSRMLS_CC to line 101 and 104 I don´t get these
error-messages but after compiling php I get a memory-access error.
- Jan Pieper
--
Wbr,
Antony Dovgal
Antony Dovgal wrote:
You forgot to add TSRMLS_CC macro:
zend_register_internal_class(&ce TSRMLS_CC);
see also http://www.php.net/manual/en/zend-api.zend-register-internal-class.php
--
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com
Antony Dovgal wrote:
You forgot to add TSRMLS_CC macro:
zend_register_internal_class(&ce TSRMLS_CC);see also
http://www.php.net/manual/en/zend-api.zend-register-internal-class.php
Yeah thanks. It works, but I am wondering why it works without the TSRMLS_CC
macro by another self-written class. Both classes were written in php-5.1.1.
Thanks for the notice, that pecl.dev is better than php.internals for such
questions.
- Jan Pieper
Antony Dovgal wrote:
You forgot to add TSRMLS_CC macro:
zend_register_internal_class(&ce TSRMLS_CC);see also
http://www.php.net/manual/en/zend-api.zend-register-internal-class.phpYeah thanks. It works, but I am wondering why it works without the TSRMLS_CC
macro by another self-written class. Both classes were written in php-5.1.1.
Because in that case your code was compiled without thread safety enabled (and TSRMLS_* macros
were not used at all, i.e. they were defined as empty).
--
Wbr,
Antony Dovgal