Hi, On Tue, 2010-08-10 at 17:24 +0200, Bostjan Skufca wrote: > I've been digging a little deeper and have figured out that I probably > could retrieve what I want (realpath of first executed file) from > included_files hash (first entry, obviously). Unfortunately, doing it > like this (sampled from get_included_files() implementation):
Interesting idea. Didn't think about that. But it isn't reliable either: If an auto prepend file is set this will be in the list first. > char *hentry; > zend_hash_internal_pointer_reset(&EG(included_files)); > zend_hash_get_current_key(&EG(included_files), &hentry, NULL, 1); > printf("%s", hentry); I think you want the value, not the key. To be precise you want the value for key 0. -> zend_hash_find() But thinking about this idea I had another idea: Use the userland stacktrace. While this won't work in RINIT/RSHUTDOWN but you'd have to hook into the execution somewhere. Would look something like this: char *filename; struct _zend_execute_data current_frame = EG(curent_execute_data); do { if (current_frame->type != ZEND_INTERNAL_FUNCTION) { filename = current_frame->filename; } } while (current_frame = current_frame->prev_execute_data); php_printf("%s, filename); Again: Not tested at all. johannes -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php