33#ifdef HAVE_SYS_UTSNAME_H
34#include <sys/utsname.h>
42#define SECTION(name) if (!sapi_module.phpinfo_as_text) { \
43 php_info_print("<h2>" name "</h2>\n"); \
45 php_info_print_table_start(); \
46 php_info_print_table_header(1, name); \
47 php_info_print_table_end(); \
54static ZEND_COLD size_t php_info_print_html_esc(
const char *str,
size_t len)
61 zend_string_free(new_str);
66static ZEND_COLD size_t php_info_printf(
const char *fmt, ...)
93 if (zend_hash_num_elements(
ht)) {
97 php_info_printf(
"<tr><td class=\"e\">Registered %s</td><td class=\"v\">",
name);
99 php_info_printf(
"\nRegistered %s => ",
name);
108 php_info_print(
", ");
120 php_info_print(
"</td></tr>\n");
124 snprintf(reg_name,
sizeof(reg_name),
"Registered %s",
name);
140 php_info_printf(
"<h2><a name=\"module_%s\" href=\"#module_%s\">%s</a></h2>\n",
ZSTR_VAL(url_name),
ZSTR_VAL(url_name), zend_module->
name);
158 php_info_printf(
"<tr><td class=\"v\">%s</td></tr>\n", zend_module->
name);
160 php_info_printf(
"%s\n", zend_module->
name);
167static ZEND_COLD void php_print_gpcse_array(
char *
name,
size_t name_length)
174 key = zend_string_init(
name, name_length, 0);
180 php_info_print(
"<tr>");
181 php_info_print(
"<td class=\"e\">");
185 php_info_print(
name);
186 php_info_print(
"['");
188 if (string_key !=
NULL) {
192 php_info_print(
ZSTR_VAL(string_key));
197 php_info_print(
"']");
199 php_info_print(
"</td><td class=\"v\">");
201 php_info_print(
" => ");
207 php_info_print(
"<pre>");
209 php_info_print(
"</pre>");
216 zend_string *str = zval_get_tmp_string(tmp, &tmp2);
220 php_info_print(
"<i>no value</i>");
228 zend_tmp_string_release(tmp2);
231 php_info_print(
"</td></tr>\n");
233 php_info_print(
"\n");
237 zend_string_efree(
key);
244 php_info_printf(
"<style type=\"text/css\">\n");
246 php_info_printf(
"</style>\n");
253static char* php_get_windows_name()
255 OSVERSIONINFOEX osvi =
EG(windows_version_info);
260 ZeroMemory(&si,
sizeof(SYSTEM_INFO));
262 GetNativeSystemInfo(&si);
264 if (VER_PLATFORM_WIN32_NT==osvi.dwPlatformId && osvi.dwMajorVersion >= 10) {
265 if (osvi.dwMajorVersion == 10) {
266 if (osvi.dwMinorVersion == 0) {
268 if (osvi.dwBuildNumber >= 22000) {
269 major =
"Windows 11";
271 major =
"Windows 10";
274 if (osvi.dwBuildNumber >= 26100) {
275 major =
"Windows Server 2025";
276 }
else if (osvi.dwBuildNumber >= 20348) {
277 major =
"Windows Server 2022";
278 }
else if (osvi.dwBuildNumber >= 19042) {
279 major =
"Windows Server, version 20H2";
280 }
else if (osvi.dwBuildNumber >= 19041) {
281 major =
"Windows Server, version 2004";
282 }
else if (osvi.dwBuildNumber >= 18363) {
283 major =
"Windows Server, version 1909";
284 }
else if (osvi.dwBuildNumber >= 18362) {
285 major =
"Windows Server, version 1903";
286 }
else if (osvi.dwBuildNumber >= 17763) {
288 major =
"Windows Server 2019";
289 }
else if (osvi.dwBuildNumber >= 17134) {
290 major =
"Windows Server, version 1803";
291 }
else if (osvi.dwBuildNumber >= 16299) {
292 major =
"Windows Server, version 1709";
294 major =
"Windows Server 2016";
299 }
else if (VER_PLATFORM_WIN32_NT==osvi.dwPlatformId && osvi.dwMajorVersion >= 6) {
300 if (osvi.dwMajorVersion == 6) {
302 if (osvi.dwMinorVersion == 2) {
309 OSVERSIONINFOEX osvi81;
310 DWORDLONG dwlConditionMask = 0;
311 int op = VER_GREATER_EQUAL;
313 ZeroMemory(&osvi81,
sizeof(OSVERSIONINFOEX));
314 osvi81.dwOSVersionInfoSize =
sizeof(OSVERSIONINFOEX);
315 osvi81.dwMajorVersion = 6;
316 osvi81.dwMinorVersion = 3;
317 osvi81.wServicePackMajor = 0;
319 VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, op);
320 VER_SET_CONDITION(dwlConditionMask, VER_MINORVERSION, op);
321 VER_SET_CONDITION(dwlConditionMask, VER_SERVICEPACKMAJOR, op);
323 if (VerifyVersionInfo(&osvi81,
324 VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR,
326 osvi.dwMinorVersion = 3;
328 major =
"Windows 8.1";
330 major =
"Windows Server 2012 R2";
336 major =
"Windows Server 2012";
339 }
else if (osvi.dwMinorVersion == 3) {
341 major =
"Windows 8.1";
343 major =
"Windows Server 2012 R2";
346 major =
"Unknown Windows version";
350 GetProductInfo(6, 0, 0, 0, &dwType);
354 sub =
"Ultimate Edition";
357 sub =
"Home Basic Edition";
360 sub =
"Home Premium Edition";
363 sub =
"Enterprise Edition";
366 sub =
"Home Basic N Edition";
369 if ((osvi.dwMajorVersion > 6) || (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion > 0)) {
370 sub =
"Professional Edition";
372 sub =
"Business Edition";
376 sub =
"Standard Edition";
379 sub =
"Datacenter Edition";
382 sub =
"Small Business Server";
385 sub =
"Enterprise Edition";
388 if ((osvi.dwMajorVersion > 6) || (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion > 0)) {
389 sub =
"Starter N Edition";
391 sub =
"Starter Edition";
395 sub =
"Datacenter Edition (core installation)";
398 sub =
"Standard Edition (core installation)";
401 sub =
"Enterprise Edition (core installation)";
404 sub =
"Enterprise Edition for Itanium-based Systems";
407 if ((osvi.dwMajorVersion > 6) || (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion > 0)) {
408 sub =
"Professional N Edition";
410 sub =
"Business N Edition";
414 sub =
"Web Server Edition";
420 sub =
"Storage Server Essentials Edition";
423 sub =
"Storage Server Express Edition";
426 sub =
"Storage Server Standard Edition";
429 sub =
"Storage Server Workgroup Edition";
432 sub =
"Storage Server Enterprise Edition";
435 sub =
"Essential Server Solutions Edition";
438 sub =
"Small Business Server Premium Edition";
441 sub =
"Home Premium N Edition";
444 sub =
"Enterprise N Edition";
447 sub =
"Ultimate N Edition";
450 sub =
"Web Server Edition (core installation)";
453 sub =
"Essential Business Server Management Server Edition";
456 sub =
"Essential Business Server Management Security Edition";
459 sub =
"Essential Business Server Management Messaging Edition";
462 sub =
"Foundation Edition";
465 sub =
"Home Server 2011 Edition";
468 sub =
"Essential Server Solutions Edition (without Hyper-V)";
471 sub =
"Standard Edition (without Hyper-V)";
474 sub =
"Datacenter Edition (without Hyper-V)";
477 sub =
"Enterprise Edition (without Hyper-V)";
480 sub =
"Datacenter Edition (core installation, without Hyper-V)";
483 sub =
"Standard Edition (core installation, without Hyper-V)";
486 sub =
"Enterprise Edition (core installation, without Hyper-V)";
489 sub =
"Hyper-V Server";
492 sub =
"Storage Server Express Edition (core installation)";
495 sub =
"Storage Server Standard Edition (core installation)";
498 sub =
"Storage Server Workgroup Edition (core installation)";
501 sub =
"Storage Server Enterprise Edition (core installation)";
504 sub =
"Starter N Edition";
507 sub =
"Professional Edition";
510 sub =
"Professional N Edition";
513 sub =
"Small Business Server 2011 Essentials Edition";
516 sub =
"Server For SB Solutions Edition";
519 sub =
"Solutions Premium Edition";
522 sub =
"Solutions Premium Edition (core installation)";
525 sub =
"Server For SB Solutions EM Edition";
528 sub =
"Server For SB Solutions EM Edition";
531 sub =
"MultiPoint Server Edition";
534 sub =
"Essential Server Solution Management Edition";
537 sub =
"Essential Server Solution Additional Edition";
540 sub =
"Essential Server Solution Management SVC Edition";
543 sub =
"Essential Server Solution Additional SVC Edition";
546 sub =
"Small Business Server Premium Edition (core installation)";
549 sub =
"Hyper Core V Edition";
551 case PRODUCT_STARTER_E:
552 sub =
"Hyper Core V Edition";
555 sub =
"Enterprise Edition (evaluation installation)";
558 sub =
"MultiPoint Server Standard Edition (full installation)";
561 sub =
"MultiPoint Server Premium Edition (full installation)";
564 sub =
"Standard Edition (evaluation installation)";
567 sub =
"Datacenter Edition (evaluation installation)";
570 sub =
"Enterprise N Edition (evaluation installation)";
573 sub =
"Storage Server Workgroup Edition (evaluation installation)";
576 sub =
"Storage Server Standard Edition (evaluation installation)";
579 sub =
"Windows 8 N Edition";
582 sub =
"Windows 8 China Edition";
585 sub =
"Windows 8 Single Language Edition";
588 sub =
"Windows 8 Edition";
591 sub =
"Professional with Media Center Edition";
600 spprintf(&
retval, 0,
"%s%s%s%s%s",
major, sub?
" ":
"", sub?sub:
"", osvi.szCSDVersion[0] !=
'\0'?
" ":
"", osvi.szCSDVersion);
606static void php_get_windows_cpu(
char *
buf,
size_t bufsize)
609 GetSystemInfo(&SysInfo);
610 switch (SysInfo.wProcessorArchitecture) {
611 case PROCESSOR_ARCHITECTURE_INTEL :
612 snprintf(
buf, bufsize,
"i%d", SysInfo.dwProcessorType);
614 case PROCESSOR_ARCHITECTURE_MIPS :
615 snprintf(
buf, bufsize,
"MIPS R%d000", SysInfo.wProcessorLevel);
617 case PROCESSOR_ARCHITECTURE_ALPHA :
618 snprintf(
buf, bufsize,
"Alpha %d", SysInfo.wProcessorLevel);
620 case PROCESSOR_ARCHITECTURE_PPC :
621 snprintf(
buf, bufsize,
"PPC 6%02d", SysInfo.wProcessorLevel);
623 case PROCESSOR_ARCHITECTURE_IA64 :
626#if defined(PROCESSOR_ARCHITECTURE_IA32_ON_WIN64)
627 case PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 :
631#if defined(PROCESSOR_ARCHITECTURE_AMD64)
636#if defined(PROCESSOR_ARCHITECTURE_ARM64)
637 case PROCESSOR_ARCHITECTURE_ARM64 :
641 case PROCESSOR_ARCHITECTURE_UNKNOWN :
650static inline bool php_is_valid_uname_mode(
char mode) {
663 DWORD dwVersion = GetVersion();
664 DWORD dwWindowsMajorVersion = (
DWORD)(LOBYTE(LOWORD(dwVersion)));
665 DWORD dwWindowsMinorVersion = (
DWORD)(HIBYTE(LOWORD(dwVersion)));
666 DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1;
667 char ComputerName[MAX_COMPUTERNAME_LENGTH + 1];
669 GetComputerName(ComputerName, &dwSize);
673 }
else if (
mode ==
'r') {
674 return strpprintf(0,
"%d.%d", dwWindowsMajorVersion, dwWindowsMinorVersion);
675 }
else if (
mode ==
'n') {
677 }
else if (
mode ==
'v') {
678 char *winver = php_get_windows_name();
679 dwBuild = (
DWORD)(HIWORD(dwVersion));
685 return build_with_version;
686 }
else if (
mode ==
'm') {
687 php_get_windows_cpu(tmp_uname,
sizeof(tmp_uname));
690 char *winver = php_get_windows_name();
695 php_get_windows_cpu(wincpu,
sizeof(wincpu));
696 dwBuild = (
DWORD)(HIWORD(dwVersion));
699 if (dwWindowsMajorVersion == 6 && dwWindowsMinorVersion == 2) {
700 if (
strncmp(winver,
"Windows 8.1",
strlen(
"Windows 8.1")) == 0 ||
strncmp(winver,
"Windows Server 2012 R2",
strlen(
"Windows Server 2012 R2")) == 0) {
701 dwWindowsMinorVersion = 3;
706 "Windows NT", ComputerName, dwWindowsMajorVersion, dwWindowsMinorVersion, dwBuild,
707 winver ? winver:
"unknown", wincpu);
709 return build_with_all_info;
712#ifdef HAVE_SYS_UTSNAME_H
714 if (uname((
struct utsname *)&
buf) == -1) {
719 }
else if (
mode ==
'r') {
721 }
else if (
mode ==
'n') {
723 }
else if (
mode ==
'v') {
725 }
else if (
mode ==
'm') {
742 php_info_print(
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"DTD/xhtml1-transitional.dtd\">\n");
743 php_info_print(
"<html xmlns=\"http://www.w3.org/1999/xhtml\">");
744 php_info_print(
"<head>\n");
746 php_info_printf(
"<title>PHP %s - phpinfo()</title>",
PHP_VERSION);
747 php_info_print(
"<meta name=\"ROBOTS\" content=\"NOINDEX,NOFOLLOW,NOARCHIVE\" />");
748 php_info_print(
"</head>\n");
749 php_info_print(
"<body><div class=\"center\">\n");
764 char **env, *
tmp1, *tmp2;
770 php_info_print(
"phpinfo()\n");
785 struct tm *ta, tmbuf;
790 php_info_print(
"<a href=\"https://www.php.net/\"><img src=\"");
791 if (ta && (ta->tm_mon==3) && (ta->tm_mday==1)) {
799 php_info_printf(
"<h1 class=\"p\">PHP Version %s</h1>\n",
PHP_VERSION);
807#ifdef PHP_BUILD_SYSTEM
810#ifdef PHP_BUILD_PROVIDER
813#ifdef PHP_BUILD_COMPILER
819#ifdef CONFIGURE_COMMAND
886#ifdef ZEND_MAX_EXECUTION_TIMERS
913 php_info_print(
"<a href=\"https://www.zend.com/\"><img src=\"");
916 php_info_print(
"This program makes use of the Zend Scripting Language Engine:");
917 php_info_print(!
sapi_module.phpinfo_as_text?
"<br />":
"\n");
932 php_info_print(
"<h1>Configuration</h1>\n");
948 zend_hash_sort(&sorted_registry, module_name_cmp, 0);
951 if (module->info_func || module->version) {
960 if (!module->info_func && !module->version) {
1008 php_print_gpcse_array(
ZEND_STRL(
"_REQUEST"));
1009 php_print_gpcse_array(
ZEND_STRL(
"_GET"));
1010 php_print_gpcse_array(
ZEND_STRL(
"_POST"));
1011 php_print_gpcse_array(
ZEND_STRL(
"_FILES"));
1012 php_print_gpcse_array(
ZEND_STRL(
"_COOKIE"));
1013 php_print_gpcse_array(
ZEND_STRL(
"_SERVER"));
1014 php_print_gpcse_array(
ZEND_STRL(
"_ENV"));
1028 php_info_print(
"<p>\n");
1029 php_info_print(
"This program is free software; you can redistribute it and/or modify ");
1030 php_info_print(
"it under the terms of the PHP License as published by the PHP Group ");
1031 php_info_print(
"and included in the distribution in the file: LICENSE\n");
1032 php_info_print(
"</p>\n");
1033 php_info_print(
"<p>");
1034 php_info_print(
"This program is distributed in the hope that it will be useful, ");
1035 php_info_print(
"but WITHOUT ANY WARRANTY; without even the implied warranty of ");
1036 php_info_print(
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n");
1037 php_info_print(
"</p>\n");
1038 php_info_print(
"<p>");
1039 php_info_print(
"If you did not receive a copy of the PHP license, or have any questions about ");
1040 php_info_print(
"PHP licensing, please contact license@php.net.\n");
1041 php_info_print(
"</p>\n");
1044 php_info_print(
"\nPHP License\n");
1045 php_info_print(
"This program is free software; you can redistribute it and/or modify\n");
1046 php_info_print(
"it under the terms of the PHP License as published by the PHP Group\n");
1047 php_info_print(
"and included in the distribution in the file: LICENSE\n");
1048 php_info_print(
"\n");
1049 php_info_print(
"This program is distributed in the hope that it will be useful,\n");
1050 php_info_print(
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n");
1051 php_info_print(
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n");
1052 php_info_print(
"\n");
1053 php_info_print(
"If you did not receive a copy of the PHP license, or have any\n");
1054 php_info_print(
"questions about PHP licensing, please contact license@php.net.\n");
1059 php_info_print(
"</div></body></html>");
1067 php_info_print(
"<table>\n");
1069 php_info_print(
"\n");
1077 php_info_print(
"</table>\n");
1088 php_info_print(
"<tr class=\"h\"><td>\n");
1092 php_info_print(
"<tr class=\"v\"><td>\n");
1094 php_info_print(
"\n");
1103 php_info_print(
"</td></tr>\n");
1112 php_info_print(
"<hr />\n");
1114 php_info_print(
"\n\n _______________________________________________________________________\n\n");
1124 php_info_printf(
"<tr class=\"h\"><th colspan=\"%d\">%s</th></tr>\n", num_cols,
header );
1127 php_info_printf(
"%*s%s%*s\n", (
int)(spaces/2),
" ",
header, (
int)(spaces/2),
" ");
1136 va_list row_elements;
1139 va_start(row_elements, num_cols);
1141 php_info_print(
"<tr class=\"h\">");
1143 for (i=0; i<num_cols; i++) {
1144 row_element = va_arg(row_elements,
char *);
1145 if (!row_element || !*row_element) {
1149 php_info_print(
"<th>");
1150 php_info_print(row_element);
1151 php_info_print(
"</th>");
1153 php_info_print(row_element);
1154 if (i < num_cols-1) {
1155 php_info_print(
" => ");
1157 php_info_print(
"\n");
1162 php_info_print(
"</tr>\n");
1165 va_end(row_elements);
1170static ZEND_COLD void php_info_print_table_row_internal(
int num_cols,
1171 const char *value_class, va_list row_elements)
1177 php_info_print(
"<tr>");
1179 for (i=0; i<num_cols; i++) {
1181 php_info_printf(
"<td class=\"%s\">",
1182 (i==0 ?
"e" : value_class )
1185 row_element = va_arg(row_elements,
char *);
1186 if (!row_element || !*row_element) {
1188 php_info_print(
"<i>no value</i>" );
1190 php_info_print(
" " );
1194 php_info_print_html_esc(row_element,
strlen(row_element));
1196 php_info_print(row_element);
1197 if (i < num_cols-1) {
1198 php_info_print(
" => ");
1203 php_info_print(
" </td>");
1204 }
else if (i == (num_cols - 1)) {
1205 php_info_print(
"\n");
1209 php_info_print(
"</tr>\n");
1217 va_list row_elements;
1219 va_start(row_elements, num_cols);
1220 php_info_print_table_row_internal(num_cols,
"v", row_elements);
1221 va_end(row_elements);
1229 va_list row_elements;
1231 va_start(row_elements, value_class);
1232 php_info_print_table_row_internal(num_cols, value_class, row_elements);
1233 va_end(row_elements);
1260 char *ext_name =
NULL;
1261 size_t ext_name_len = 0;
1271 const char *version;
1273 if (version ==
NULL) {
1313 char *mode_str =
"a";
1314 size_t modelen =
sizeof(
"a")-1;
1326 char mode = *mode_str;
1327 if (!php_is_valid_uname_mode(
mode)) {
SAPI_API sapi_module_struct sapi_module
phpinfo(int $flags=INFO_ALL)
php_uname(string $mode="a")
phpcredits(int $flags=CREDITS_ALL)
phpversion(?string $extension=null)
header(string $header, bool $replace=true, int $response_code=0)
strchr(string $haystack, string $needle, bool $before_needle=false)
PHPAPI ZEND_COLD void php_print_credits(int flag)
#define PHP_CREDITS_FULLPAGE
zend_ffi_ctype_name_buf buf
PHPAPI zend_string * php_escape_html_entities(const unsigned char *old, size_t oldlen, int all, int flags, const char *hint_charset)
PHPAPI ZEND_COLD void php_info_print_table_row(int num_cols,...)
PHPAPI ZEND_COLD void php_info_print_table_colspan_header(int num_cols, const char *header)
PHPAPI ZEND_COLD void php_info_print_table_end(void)
PHPAPI ZEND_COLD void php_info_print_box_end(void)
PHPAPI ZEND_COLD void php_info_print_table_header(int num_cols,...)
PHPAPI ZEND_COLD void ZEND_COLD php_info_print_style(void)
PHPAPI ZEND_COLD void php_print_info_htmlhead(void)
PHPAPI ZEND_COLD void php_info_print_hr(void)
PHPAPI ZEND_COLD void php_info_print_box_start(int flag)
PHPAPI ZEND_COLD void php_info_print_table_start(void)
PHPAPI ZEND_COLD void php_info_print_table_row_ex(int num_cols, const char *value_class,...)
PHPAPI zend_string * php_get_uname(char mode)
PHPAPI ZEND_COLD void php_info_print_module(zend_module_entry *zend_module)
PHPAPI ZEND_COLD void php_print_info(int flag)
#define PHP_EGG_LOGO_DATA_URI
#define ZEND_LOGO_DATA_URI
#define PHP_INFO_VARIABLES
#define PHP_INFO_CONFIGURATION
#define PHP_INFO_ENVIRONMENT
#define PHP_LOGO_DATA_URI
const PHP_CONFIG_FILE_PATH
PHPAPI size_t php_output_write(const char *str, size_t len)
PHPAPI zend_result php_output_end(void)
PHPAPI zend_result php_output_start_default(void)
PHPAPI char * php_ini_scanned_files
PHPAPI char * php_ini_scanned_path
PHPAPI char * php_ini_opened_path
PHPAPI struct tm * php_localtime_r(const time_t *const timep, struct tm *p_tm)
unsigned char key[REFLECTION_KEY_LEN]
PHPAPI HashTable * php_stream_xport_get_hash(void)
#define php_get_stream_filters_hash()
#define php_stream_get_url_stream_wrappers_hash()
PHPAPI ZEND_COLD void php_info_print_css(void)
void(* info_func)(ZEND_MODULE_INFO_FUNC_ARGS)
PHPAPI zend_string * php_url_encode(char const *s, size_t len)
#define PRODUCT_ULTIMATE_N
#define PRODUCT_SB_SOLUTION_SERVER_EM
#define VER_NT_WORKSTATION
#define PRODUCT_HOME_BASIC
#define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT
#define PRODUCT_STORAGE_STANDARD_SERVER
#define PRODUCT_SB_SOLUTION_SERVER
#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC
#define PRODUCT_MULTIPOINT_PREMIUM_SERVER
#define PRODUCT_DATACENTER_EVALUATION_SERVER
#define PRODUCT_SERVER_FOR_SMALLBUSINESS_V
#define PRODUCT_WEB_SERVER_CORE
#define PRODUCT_WEB_SERVER
#define PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE
#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL
#define PRODUCT_HOME_PREMIUM
#define PRODUCT_BUSINESS_N
#define PRODUCT_ENTERPRISE_SERVER_IA64
#define PRODUCT_SERVER_FOR_SMALLBUSINESS
#define PRODUCT_STORAGE_EXPRESS_SERVER_CORE
#define PRODUCT_ENTERPRISE_N_EVALUATION
#define PRODUCT_STORAGE_STANDARD_SERVER_CORE
#define PRODUCT_ENTERPRISE_SERVER
#define PRODUCT_HOME_BASIC_N
#define PRODUCT_ENTERPRISE_N
#define PRODUCT_CORE_SINGLELANGUAGE
#define PRODUCT_DATACENTER_SERVER_CORE_V
#define PRODUCT_STORAGE_WORKGROUP_SERVER
#define PRODUCT_PROFESSIONAL_WMC
#define PRODUCT_SOLUTION_EMBEDDEDSERVER
#define PRODUCT_CORE_COUNTRYSPECIFIC
#define PRODUCT_HOME_PREMIUM_SERVER
#define PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM
#define PRODUCT_STANDARD_SERVER_CORE
#define PRODUCT_STANDARD_SERVER_V
#define PRODUCT_SMALLBUSINESS_SERVER
#define PRODUCT_STANDARD_SERVER_SOLUTIONS
#define PRODUCT_CLUSTER_SERVER_V
#define PRODUCT_STANDARD_SERVER
#define PRODUCT_CLUSTER_SERVER
#define PRODUCT_ENTERPRISE_EVALUATION
#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE
#define PRODUCT_DATACENTER_SERVER
#define PRODUCT_ENTERPRISE_SERVER_CORE_V
#define PRODUCT_STORAGE_EXPRESS_SERVER
#define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING
#define PRODUCT_STORAGE_WORKGROUP_SERVER_CORE
#define PRODUCT_PROFESSIONAL_N
#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT
#define PRODUCT_SERVER_FOR_SB_SOLUTIONS
#define PRODUCT_HOME_SERVER
#define PRODUCT_DATACENTER_SERVER_V
#define PRODUCT_ENTERPRISE
#define PRODUCT_ENTERPRISE_SERVER_V
#define PRODUCT_MULTIPOINT_STANDARD_SERVER
#define PROCESSOR_ARCHITECTURE_AMD64
#define PRODUCT_STANDARD_SERVER_CORE_V
#define PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER
#define PRODUCT_DATACENTER_SERVER_CORE
#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC
#define PRODUCT_HOME_PREMIUM_N
#define PRODUCT_ENTERPRISE_SERVER_CORE
#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM
#define PRODUCT_STANDARD_EVALUATION_SERVER
#define PRODUCT_STORAGE_ENTERPRISE_SERVER
#define PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE
#define PRODUCT_PROFESSIONAL
#define PRODUCT_STARTER_N
#define PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER
#define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY
#define PRODUCT_SERVER_FOUNDATION
ZEND_API zend_string * zend_print_zval_r_to_str(zval *expr, int indent)
ZEND_API void zend_print_zval_r(zval *expr, int indent)
ZEND_API const char * get_zend_version(void)
ZEND_API bool zend_dtrace_enabled
ZEND_API HashTable module_registry
ZEND_API const char * zend_get_module_version(const char *module_name)
ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *format,...)
#define ZEND_PARSE_PARAMETERS_END()
#define ZEND_PARSE_PARAMETERS_NONE()
#define Z_PARAM_STRING(dest, dest_len)
#define Z_PARAM_STRING_OR_NULL(dest, dest_len)
#define ZEND_PARSE_PARAMETERS_START(min_num_args, max_num_args)
#define Z_PARAM_LONG(dest)
ZEND_API bool is_zend_mm(void)
strncmp(string $string1, string $string2, int $length)
zend_string_release_ex(func->internal_function.function_name, 0)
ZEND_API bool zend_is_auto_global(zend_string *name)
#define strcasecmp(s1, s2)
#define ZEND_EXTENSION_BUILD_ID
#define ZEND_EXTENSION_API_NO
ZEND_API void ZEND_FASTCALL zend_hash_destroy(HashTable *ht)
ZEND_API zval *ZEND_FASTCALL zend_hash_str_find(const HashTable *ht, const char *str, size_t len)
ZEND_API void ZEND_FASTCALL zend_hash_copy(HashTable *target, HashTable *source, copy_ctor_func_t pCopyConstructor)
#define zend_hash_init(ht, nSize, pHashFunction, pDestructor, persistent)
#define ZEND_HASH_MAP_FOREACH_PTR(ht, _ptr)
#define ZEND_HASH_FOREACH_KEY_VAL(ht, _h, _key, _val)
#define ZEND_HASH_MAP_FOREACH_STR_KEY(ht, _key)
#define ZEND_HASH_FOREACH_END()
ZEND_API void zend_html_puts(const char *s, size_t len)
ZEND_API void zend_ini_sort_entries(void)
ZEND_API void display_ini_entries(zend_module_entry *module)
#define DISPLAY_INI_ENTRIES()
struct _zend_string zend_string
#define ZEND_MODULE_API_NO
#define ZEND_MODULE_BUILD_ID
struct _zend_module_entry zend_module_entry
ZEND_API const zend_multibyte_functions * zend_multibyte_get_functions(void)
struct _zend_multibyte_functions zend_multibyte_functions
ZEND_API void ZEND_FASTCALL zend_str_tolower(char *str, size_t length)
#define zend_always_inline
#define ZEND_UNREACHABLE()
#define Z_STRVAL_P(zval_p)
#define Z_ARRVAL_P(zval_p)
struct _zend_array HashTable