The problem is that if you use require_once inside a function variables that are declared in global scope are no longer global.
Example: In your zp-config.php in one of the last lines you find: $_zp_conf_vars = $conf; this assumes that this line is on global scope. When you call require_once inside a function this is no longer true, so $_zp_conf_vars is only a local variable.
To summarize:
PROBLEM: "globals are no longer global"
FIX: Add the line global $_zp_conf_vars; to the beginning of zp-config.php.
You will have to apply similar fixes to other files:
------------------
zp-core/lib-GD.php
------------------
global $_lib_GD_info;
------------------
zp-core/functions-basic.php
------------------
global $_zp_conf_vars, $_zp_error, $_zp_imagick_present, $_zp_imagick_present,
$_zp_supported_images, $_zp_options, $_zp_album_folder;
------------------
zp-core/functions.php
------------------
global $_zp_plugin_scripts, $_zp_loaded_plugins, $_zp_flash_player,
$_zp_HTML_cache, $_zp_themeroot, $_zp_plugin_scripts, $_zp_loaded_plugins,
$_zp_captcha, $_zp_setupCurrentLocale_result, $_zp_exifvars, $_zp_unique_tags,
$_zp_count_tags, $_zp_not_viewable_album_list;
------------------
zp-core/template-functions.php
------------------
global $_zp_conf_vars, $_zp_gallery;
------------------
zp-core/lib-utf8.php
------------------
global $_zp_UTF8;
The task to hunt down all other occurences of the same problem is left to the interested reader. Good candidates are the zp-core/lib-* files.
HTH
Jak