I�m migrating from php 4.2.1 to 4.3.0 (rh 7.2).
I've written my own php template extension.
Compilation runs normally (with 3 warning messages on lines where
php_fopen_wrapper function is used).
But when i try starting apache i get error message:
Cannot load /usr/local/apache/libexec/libphp4.so into server:
/usr/local/apache/libexec/libphp4.so: undefined symbol: php_fopen_wrapper
Where can I find documentations about all changes made to wrappers in php
4.3.0.
Should I need to use new functions like php_stream_open_wrapper_as_file (or
similar) instead?
My piece of code:
-----------------------------------------------
PHP_FUNCTION(temp_load)
{
zval **tempfile=NULL, **cachefile=NULL;
int argc;
char *filename;
FILE *fp;
struct stat st;
template *tp;
// TEMPLATELS_FETCH();
argc = ZEND_NUM_ARGS();
if (argc < 1 || argc > 2 || zend_get_parameters_ex(argc, &tempfile,
&cachefile) == FAILURE){
WRONG_PARAM_COUNT;
}
switch (argc) {
case 2:
convert_to_string_ex(cachefile);
/* Fall-through. */
case 1:
convert_to_string_ex(tempfile);
break;
}
tp = emalloc(sizeof(template));
tp->bl = emalloc(sizeof(block));
tp->bl->cont = emalloc(sizeof(mpchain));
tp->bl->cont->next = NULL;
tp->bl->lastcont = tp->bl->cont;
tp->bl->lastcont->mp.ptr = NULL;
tp->bl->prev = NULL;
tp->bl->done = 0;
tp->cf = NULL;
tp->cached = 0;
if(cachefile)
{
filename = Z_STRVAL_PP(cachefile);
/*
LINE WITH WARNING
*/
if((fp = php_fopen_wrapper(filename,"r",
USE_PATH|ENFORCE_SAFE_MODE|IGNORE_URL, NULL, NULL, NULL)))
{
if(fstat(fileno(fp),&st))
{
php_error(E_WARNING,"Can't get stats of
\"%s\" - %s",filename,strerror(errno));
RETURN_FALSE;
}
if(st.st_size > 0)
{
tp->cached = 1;
goto notemp;
}
}
else if (errno == ENOENT) // cachefile not
found
{
/*
LINE WITH WARNING
*/
if(!(tp->cf = php_fopen_wrapper(filename,"w",
USE_PATH|ENFORCE_SAFE_MODE|IGNORE_URL, NULL, NULL, &tp->cachefile)))
{
php_error(E_WARNING,"Can't open
cachefile(\"%s\") for writing - %s",filename,strerror(errno));
RETURN_FALSE;
}
}
else // some other error
{
php_error(E_WARNING,"Can't open cachefile(\"%s\") -
%s",filename,strerror(errno));
RETURN_FALSE;
}
}
filename = Z_STRVAL_PP(tempfile);
/*
LINE WITH WARNING
*/
if(!(fp = php_fopen_wrapper(filename,"r",
USE_PATH|ENFORCE_SAFE_MODE|IGNORE_URL, NULL, NULL, NULL)))
{
php_error(E_WARNING,"Can't open tempfile(\"%s\") -
%s",filename,strerror(errno));
RETURN_FALSE;
}
if(fstat(fileno(fp),&st))
{
php_error(E_WARNING,"Can't get stats of \"%s\" -
%s",filename,strerror(errno));
RETURN_FALSE;
}
notemp:
tp->bl->lastcont->mp.ptr = emalloc(tp->bl->lastcont->mp.len =
st.st_size);
if(fread(tp->bl->lastcont->mp.ptr,st.st_size,1,fp)!=1)
{
php_error(E_WARNING,"Can't read file \"%s\" -
%s",filename,strerror(errno));
RETURN_FALSE;
}
/*php_stream_close(fp);*/
fclose(fp);
ZEND_REGISTER_RESOURCE(return_value, tp, le_template);
}
/* }}} */
Regards,
Mike
--
PHP Documentation Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php