zend_eval_string – where are my syntax errors?

php.internals

Bruce Bailey

19 years ago
I am trying to create an embedded application that executes arbitrary PHP scripts. If the script is syntactically correct, all works as desired. However, if there is a syntax error, I don't get any error text that I can return or log, etc. zend_eval_string does indeed return a -1 if there is a problem, 0 otherwise. So at least I know something failed. I am using PHP 5.1.4 on Linux. My code: char *argv[] = {const_cast<char *>(input.c_str())}; int argc(1); std::ostringstream scriptOutputStream; std::ostringstream scriptErrorStream; P2PCrud::phpWriteStream_ = &scriptOutputStream; P2PCrud::phpErrorStream_ = &scriptErrorStream; php_embed_module.ub_write = P2PCrud::phpWrite; php_embed_module.log_message = P2PCrud::phpErrors; #ifdef ZTS void ***tsrm_ls; #endif php_embed_init(argc, argv PTSRMLS_CC); zend_first_try { int rc(0); rc = zend_eval_string(const_cast<char *>(script.c_str()), 0, "Embedded code" TSRMLS_CC); std::cout << "end of 'zend_first_try' block, rc = " << rc << "\n"; } zend_end_try(); php_embed_shutdown(TSRMLS_C); output = scriptOutputStream.str(); std::cerr << "error stream = " << scriptErrorStream.str() << "\r\n"; P2PCrud::phpWriteStream_ = 0; P2PCrud::phpErrorStream_ = 0; Thanks in advance, Bruce _________________________________________________________________ Get today's hot entertainment gossip http://movies.msn.com/movies/hotgossip