Page MenuHome GnuPG

No OneTemporary

This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/resources/php_compat_info.json b/resources/php_compat_info.json
deleted file mode 100644
index 853d7c25..00000000
--- a/resources/php_compat_info.json
+++ /dev/null
@@ -1,14558 +0,0 @@
-{
- "@generated" : true,
- "params" : {
- "array_keys" : [
- "4.0.0",
- "4.0.0",
- "5.0.0"
- ],
- "array_slice" : [
- "4.0.0",
- "4.0.0",
- "4.0.0",
- "5.0.2"
- ],
- "assert" : [
- "4.0.0",
- "5.4.8"
- ],
- "class_exists" : [
- "4.0.0",
- "5.0.0"
- ],
- "clearstatcache" : [
- "5.3.0",
- "5.3.0"
- ],
- "copy" : [
- "4.0.0",
- "4.0.0",
- "5.3.0"
- ],
- "fgetss" : [
- "5.0.0",
- "4.0.0",
- "5.0.0"
- ],
- "file" : [
- "4.0.0",
- "4.0.0",
- "5.0.0"
- ],
- "file_get_contents" : [
- "4.3.0",
- "4.3.0",
- "4.3.0",
- "5.1.0",
- "5.1.0"
- ],
- "get_browser" : [
- "4.0.0",
- "4.3.2"
- ],
- "getopt" : [
- "4.3.0",
- "5.3.0"
- ],
- "gettimeofday" : [
- "5.1.0"
- ],
- "htmlentities" : [
- "4.0.0",
- "4.0.3",
- "4.1.0",
- "5.2.3"
- ],
- "htmlspecialchars" : [
- "4.0.0",
- "4.0.0",
- "4.1.0",
- "5.2.3"
- ],
- "is_a" : [
- "4.2.0",
- "4.2.0",
- "5.3.9"
- ],
- "json_decode" : [
- "5.2.0",
- "5.2.0",
- "5.3.0",
- "5.4.0"
- ],
- "ldap_read" : [
- "4.0.0",
- "4.0.0",
- "4.0.0",
- "4.0.0",
- "4.0.2",
- "4.0.2",
- "4.0.2",
- "4.0.2"
- ],
- "ldap_search" : [
- "4.0.0",
- "4.0.0",
- "4.0.0",
- "4.0.0",
- "4.0.2",
- "4.0.2",
- "4.0.2",
- "4.0.2"
- ],
- "md5" : [
- "4.0.0",
- "5.0.0"
- ],
- "md5_file" : [
- "4.2.0",
- "5.0.0"
- ],
- "memory_get_usage" : [
- "5.2.0"
- ],
- "microtime" : [
- "5.0.0"
- ],
- "mkdir" : [
- "4.0.0",
- "4.0.0",
- "5.0.0",
- "5.0.0"
- ],
- "nl2br" : [
- "4.0.0",
- "5.3.0"
- ],
- "opendir" : [
- "4.0.0",
- "5.3.0"
- ],
- "parse_url" : [
- "4.0.0",
- "5.1.2"
- ],
- "preg_replace" : [
- "4.0.0",
- "4.0.0",
- "4.0.0",
- "4.0.1",
- "5.1.0"
- ],
- "preg_replace_callback" : [
- "4.0.5",
- "4.0.5",
- "4.0.5",
- "4.0.5",
- "5.1.0"
- ],
- "sha1" : [
- "4.3.0",
- "5.0.0"
- ],
- "sha1_file" : [
- "4.3.0",
- "5.0.0"
- ],
- "str_replace" : [
- "4.0.0",
- "4.0.0",
- "4.0.0",
- "5.0.0"
- ],
- "stream_copy_to_stream" : [
- "5.0.0",
- "5.0.0",
- "5.0.0",
- "5.1.0"
- ],
- "stream_get_contents" : [
- "5.0.0",
- "5.0.0",
- "5.1.0"
- ],
- "substr_count" : [
- "4.0.0",
- "4.0.0",
- "5.1.0",
- "5.1.0"
- ]
- },
- "functions" : {
- "_" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gettext"
- },
- "abs" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "acos" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "acosh" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "standard"
- },
- "addcslashes" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "addslashes" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "apc_add" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_bin_dump" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_bin_dumpfile" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_bin_load" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_bin_loadfile" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_cache_info" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_cas" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_clear_cache" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_compile_file" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_dec" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_define_constants" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_delete" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_delete_file" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_exists" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_fetch" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_inc" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_load_constants" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_sma_info" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "apc"
- },
- "apc_store" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "apc"
- },
- "array_change_key_case" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_chunk" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_column" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_combine" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_count_values" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_diff" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "standard"
- },
- "array_diff_assoc" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_diff_key" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_diff_uassoc" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_diff_ukey" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_fill" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_fill_keys" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_filter" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "standard"
- },
- "array_flip" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_intersect" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "standard"
- },
- "array_intersect_assoc" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_intersect_key" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_intersect_uassoc" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_intersect_ukey" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_key_exists" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "standard"
- },
- "array_keys" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_map" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "standard"
- },
- "array_merge" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_merge_recursive" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "standard"
- },
- "array_multisort" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_pad" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_pop" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_product" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_push" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_rand" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_reduce" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "standard"
- },
- "array_replace" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_replace_recursive" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_reverse" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_search" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "standard"
- },
- "array_shift" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_slice" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_splice" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_sum" : {
- "min" : "4.0.4",
- "max" : null,
- "ref" : "standard"
- },
- "array_udiff" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_udiff_assoc" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_udiff_uassoc" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_uintersect" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_uintersect_assoc" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_uintersect_uassoc" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_unique" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "standard"
- },
- "array_unshift" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_values" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_walk" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "array_walk_recursive" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "arsort" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "asin" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "asinh" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "standard"
- },
- "asort" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "assert" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "assert_options" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "atan" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "atan2" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "atanh" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "standard"
- },
- "base64_decode" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "base64_encode" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "base_convert" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "basename" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "bcadd" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "bcmath"
- },
- "bccomp" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "bcmath"
- },
- "bcdiv" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "bcmath"
- },
- "bcmod" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "bcmath"
- },
- "bcmul" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "bcmath"
- },
- "bcpow" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "bcmath"
- },
- "bcpowmod" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "bcmath"
- },
- "bcscale" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "bcmath"
- },
- "bcsqrt" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "bcmath"
- },
- "bcsub" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "bcmath"
- },
- "bin2hex" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "bind_textdomain_codeset" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "gettext"
- },
- "bindec" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "bindtextdomain" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gettext"
- },
- "boolval" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "standard"
- },
- "call_user_func" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "call_user_func_array" : {
- "min" : "4.0.4",
- "max" : null,
- "ref" : "standard"
- },
- "call_user_method" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "call_user_method_array" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "standard"
- },
- "ceil" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "chdir" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "checkdate" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "date"
- },
- "checkdnsrr" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "chgrp" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "chmod" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "chop" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "chown" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "chr" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "chroot" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "standard"
- },
- "chunk_split" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "class_alias" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "Core"
- },
- "class_exists" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "class_implements" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "spl"
- },
- "class_parents" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "spl"
- },
- "class_uses" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "spl"
- },
- "clearstatcache" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "cli_get_process_title" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "standard"
- },
- "cli_set_process_title" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "standard"
- },
- "closedir" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "closelog" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "collator_asort" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "collator_compare" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "collator_create" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "collator_get_attribute" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "collator_get_error_code" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "collator_get_error_message" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "collator_get_locale" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "collator_get_sort_key" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "collator_get_strength" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "collator_set_attribute" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "collator_set_strength" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "collator_sort" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "collator_sort_with_sort_keys" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "compact" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "connection_aborted" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "connection_status" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "connection_timeout" : {
- "min" : "4.0.0",
- "max" : "4.0.4",
- "ref" : "standard"
- },
- "constant" : {
- "min" : "4.0.4",
- "max" : null,
- "ref" : "standard"
- },
- "convert_cyr_string" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "convert_uudecode" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "convert_uuencode" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "copy" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "cos" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "cosh" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "standard"
- },
- "count" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "count_chars" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "crc32" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "standard"
- },
- "create_function" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "Core"
- },
- "crypt" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "curl_close" : {
- "min" : "4.0.2",
- "max" : null,
- "ref" : "curl"
- },
- "curl_copy_handle" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_errno" : {
- "min" : "4.0.3",
- "max" : null,
- "ref" : "curl"
- },
- "curl_error" : {
- "min" : "4.0.3",
- "max" : null,
- "ref" : "curl"
- },
- "curl_escape" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_exec" : {
- "min" : "4.0.2",
- "max" : null,
- "ref" : "curl"
- },
- "curl_file_create" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_getinfo" : {
- "min" : "4.0.4",
- "max" : null,
- "ref" : "curl"
- },
- "curl_init" : {
- "min" : "4.0.2",
- "max" : null,
- "ref" : "curl"
- },
- "curl_multi_add_handle" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_multi_close" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_multi_exec" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_multi_getcontent" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_multi_info_read" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_multi_init" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_multi_remove_handle" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_multi_select" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_multi_setopt" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_multi_strerror" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_pause" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_reset" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_setopt" : {
- "min" : "4.0.2",
- "max" : null,
- "ref" : "curl"
- },
- "curl_setopt_array" : {
- "min" : "5.1.3",
- "max" : null,
- "ref" : "curl"
- },
- "curl_share_close" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_share_init" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_share_setopt" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_strerror" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_unescape" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "curl"
- },
- "curl_version" : {
- "min" : "4.0.2",
- "max" : null,
- "ref" : "curl"
- },
- "current" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "date" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "date"
- },
- "date_add" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "date"
- },
- "date_create" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "date"
- },
- "date_create_from_format" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "date"
- },
- "date_create_immutable" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "date"
- },
- "date_create_immutable_from_format" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "date"
- },
- "date_date_set" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "date"
- },
- "date_default_timezone_get" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "date"
- },
- "date_default_timezone_set" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "date"
- },
- "date_diff" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "date"
- },
- "date_format" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "date"
- },
- "date_get_last_errors" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "date"
- },
- "date_interval_create_from_date_string" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "date"
- },
- "date_interval_format" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "date"
- },
- "date_isodate_set" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "date"
- },
- "date_modify" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "date"
- },
- "date_offset_get" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "date"
- },
- "date_parse" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "date"
- },
- "date_parse_from_format" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "date"
- },
- "date_sub" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "date"
- },
- "date_sun_info" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "date"
- },
- "date_sunrise" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "date"
- },
- "date_sunset" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "date"
- },
- "date_time_set" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "date"
- },
- "date_timestamp_get" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "date"
- },
- "date_timestamp_set" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "date"
- },
- "date_timezone_get" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "date"
- },
- "date_timezone_set" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "date"
- },
- "datefmt_create" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_format" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_format_object" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_get_calendar" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_get_calendar_object" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_get_datetype" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_get_error_code" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_get_error_message" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_get_locale" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_get_pattern" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_get_timetype" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_get_timezone" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_get_timezone_id" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_is_lenient" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_localtime" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_parse" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_set_calendar" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_set_lenient" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_set_pattern" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_set_timezone" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "datefmt_set_timezone_id" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "dcgettext" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gettext"
- },
- "dcngettext" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "gettext"
- },
- "debug_backtrace" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "Core"
- },
- "debug_print_backtrace" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "debug_zval_dump" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "decbin" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "dechex" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "decoct" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "define" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "define_syslog_variables" : {
- "min" : "4.0.0",
- "max" : "5.3.28",
- "ref" : "standard"
- },
- "defined" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "deg2rad" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "dgettext" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gettext"
- },
- "dir" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "dirname" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "disk_free_space" : {
- "min" : "4.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "disk_total_space" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "diskfreespace" : {
- "min" : "4.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "dl" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "dngettext" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "gettext"
- },
- "dns_check_record" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "dns_get_mx" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "dns_get_record" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "doubleval" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "each" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "empty" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "end" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "error_get_last" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "error_log" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "error_reporting" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "escapeshellarg" : {
- "min" : "4.0.3",
- "max" : null,
- "ref" : "standard"
- },
- "escapeshellcmd" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "exec" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "exp" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "explode" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "expm1" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "standard"
- },
- "extension_loaded" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "extract" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ezmlm_hash" : {
- "min" : "4.0.2",
- "max" : null,
- "ref" : "standard"
- },
- "fclose" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "feof" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "fflush" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "standard"
- },
- "fgetc" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "fgetcsv" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "fgets" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "fgetss" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "file" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "file_exists" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "file_get_contents" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "file_put_contents" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "fileatime" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "filectime" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "filegroup" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "fileinode" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "filemtime" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "fileowner" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "fileperms" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "filesize" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "filetype" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "finfo_buffer" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "fileinfo"
- },
- "finfo_close" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "fileinfo"
- },
- "finfo_file" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "fileinfo"
- },
- "finfo_open" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "fileinfo"
- },
- "finfo_set_flags" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "fileinfo"
- },
- "floatval" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "flock" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "floor" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "flush" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "fmod" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "fnmatch" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "fopen" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "forward_static_call" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "forward_static_call_array" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "fpassthru" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "fprintf" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "fputcsv" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "fputs" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "fread" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "fscanf" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "standard"
- },
- "fseek" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "fsockopen" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "fstat" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ftell" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ftok" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "ftruncate" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "func_get_arg" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "func_get_args" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "func_num_args" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "function_exists" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "fwrite" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "gc_collect_cycles" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "Core"
- },
- "gc_disable" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "Core"
- },
- "gc_enable" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "Core"
- },
- "gc_enabled" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "Core"
- },
- "gd_info" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "gd"
- },
- "get_browser" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "get_called_class" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "Core"
- },
- "get_cfg_var" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "get_class" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "get_class_methods" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "get_class_vars" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "get_current_user" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "get_declared_classes" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "get_declared_interfaces" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "get_declared_traits" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "Core"
- },
- "get_defined_constants" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "Core"
- },
- "get_defined_functions" : {
- "min" : "4.0.4",
- "max" : null,
- "ref" : "Core"
- },
- "get_defined_vars" : {
- "min" : "4.0.4",
- "max" : null,
- "ref" : "Core"
- },
- "get_extension_funcs" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "get_headers" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "get_html_translation_table" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "get_include_path" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "get_included_files" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "get_loaded_extensions" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "get_magic_quotes_gpc" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "get_magic_quotes_runtime" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "get_meta_tags" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "get_object_vars" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "get_parent_class" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "get_required_files" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "get_resource_type" : {
- "min" : "4.0.2",
- "max" : null,
- "ref" : "Core"
- },
- "getcwd" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "getdate" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "date"
- },
- "getenv" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "gethostbyaddr" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "gethostbyname" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "gethostbynamel" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "gethostname" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "getimagesize" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "getimagesizefromstring" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "standard"
- },
- "getlastmod" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "getmxrr" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "getmygid" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "standard"
- },
- "getmyinode" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "getmypid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "getmyuid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "getopt" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "getprotobyname" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "getprotobynumber" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "getrandmax" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "getrusage" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "getservbyname" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "getservbyport" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "gettext" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gettext"
- },
- "gettimeofday" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "gettype" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "glob" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "gmdate" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "date"
- },
- "gmmktime" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "date"
- },
- "gmstrftime" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "date"
- },
- "grapheme_extract" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "grapheme_stripos" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "grapheme_stristr" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "grapheme_strlen" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "grapheme_strpos" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "grapheme_strripos" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "grapheme_strrpos" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "grapheme_strstr" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "grapheme_substr" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "gzclose" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "zlib"
- },
- "gzcompress" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "zlib"
- },
- "gzdecode" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "zlib"
- },
- "gzdeflate" : {
- "min" : "4.0.4",
- "max" : null,
- "ref" : "zlib"
- },
- "gzencode" : {
- "min" : "4.0.4",
- "max" : null,
- "ref" : "zlib"
- },
- "gzeof" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "zlib"
- },
- "gzfile" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "zlib"
- },
- "gzgetc" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "zlib"
- },
- "gzgets" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "zlib"
- },
- "gzgetss" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "zlib"
- },
- "gzinflate" : {
- "min" : "4.0.4",
- "max" : null,
- "ref" : "zlib"
- },
- "gzopen" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "zlib"
- },
- "gzpassthru" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "zlib"
- },
- "gzputs" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "zlib"
- },
- "gzread" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "zlib"
- },
- "gzrewind" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "zlib"
- },
- "gzseek" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "zlib"
- },
- "gztell" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "zlib"
- },
- "gzuncompress" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "zlib"
- },
- "gzwrite" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "zlib"
- },
- "header" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "header_register_callback" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "standard"
- },
- "header_remove" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "headers_list" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "headers_sent" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "hebrev" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "hebrevc" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "hex2bin" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "standard"
- },
- "hexdec" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "highlight_file" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "highlight_string" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "html_entity_decode" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "htmlentities" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "htmlspecialchars" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "htmlspecialchars_decode" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "http_build_query" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "http_response_code" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "standard"
- },
- "hypot" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "standard"
- },
- "idate" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "date"
- },
- "idn_to_ascii" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "idn_to_utf8" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "ignore_user_abort" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "image2wbmp" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "gd"
- },
- "image_type_to_extension" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "image_type_to_mime_type" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "imageaffine" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "gd"
- },
- "imageaffinematrixconcat" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "gd"
- },
- "imageaffinematrixget" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagealphablending" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "gd"
- },
- "imageantialias" : {
- "min" : "4.3.2",
- "max" : null,
- "ref" : "gd"
- },
- "imagearc" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagechar" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecharup" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolorallocate" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolorallocatealpha" : {
- "min" : "4.3.2",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolorat" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolorclosest" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolorclosestalpha" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolorclosesthwb" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolordeallocate" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolorexact" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolorexactalpha" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolormatch" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolorresolve" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolorresolvealpha" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolorset" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolorsforindex" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolorstotal" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecolortransparent" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imageconvolution" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecopy" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecopymerge" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "gd"
- },
- "imagecopymergegray" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "gd"
- },
- "imagecopyresampled" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "gd"
- },
- "imagecopyresized" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecreate" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecreatefromgd" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "gd"
- },
- "imagecreatefromgd2" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "gd"
- },
- "imagecreatefromgd2part" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "gd"
- },
- "imagecreatefromgif" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecreatefromjpeg" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecreatefrompng" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecreatefromstring" : {
- "min" : "4.0.4",
- "max" : null,
- "ref" : "gd"
- },
- "imagecreatefromwbmp" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "gd"
- },
- "imagecreatefromwebp" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecreatefromxbm" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "gd"
- },
- "imagecreatefromxpm" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "gd"
- },
- "imagecreatetruecolor" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "gd"
- },
- "imagecrop" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagecropauto" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagedashedline" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagedestroy" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imageellipse" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "gd"
- },
- "imagefill" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagefilledarc" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "gd"
- },
- "imagefilledellipse" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "gd"
- },
- "imagefilledpolygon" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagefilledrectangle" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagefilltoborder" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagefilter" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imageflip" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagefontheight" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagefontwidth" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imageftbbox" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "gd"
- },
- "imagefttext" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "gd"
- },
- "imagegammacorrect" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagegd" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "gd"
- },
- "imagegd2" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "gd"
- },
- "imagegif" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagegrabscreen" : {
- "min" : "5.2.2",
- "max" : null,
- "ref" : "gd"
- },
- "imagegrabwindow" : {
- "min" : "5.2.2",
- "max" : null,
- "ref" : "gd"
- },
- "imageinterlace" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imageistruecolor" : {
- "min" : "4.3.2",
- "max" : null,
- "ref" : "gd"
- },
- "imagejpeg" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagelayereffect" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "gd"
- },
- "imageline" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imageloadfont" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagepalettecopy" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "gd"
- },
- "imagepalettetotruecolor" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagepng" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagepolygon" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagepsbbox" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagepsencodefont" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagepsextendfont" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagepsfreefont" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagepsloadfont" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagepsslantfont" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagepstext" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagerectangle" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagerotate" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagesavealpha" : {
- "min" : "4.3.2",
- "max" : null,
- "ref" : "gd"
- },
- "imagescale" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagesetbrush" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "gd"
- },
- "imagesetinterpolation" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagesetpixel" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagesetstyle" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "gd"
- },
- "imagesetthickness" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "gd"
- },
- "imagesettile" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "gd"
- },
- "imagestring" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagestringup" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagesx" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagesy" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagetruecolortopalette" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "gd"
- },
- "imagettfbbox" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagettftext" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagetypes" : {
- "min" : "4.0.2",
- "max" : null,
- "ref" : "gd"
- },
- "imagewbmp" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "gd"
- },
- "imagewebp" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "gd"
- },
- "imagexbm" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "gd"
- },
- "implode" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "import_request_variables" : {
- "min" : "4.0.7",
- "max" : "5.3.28",
- "ref" : "standard"
- },
- "in_array" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "inet_ntop" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "inet_pton" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "ini_alter" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ini_get" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ini_get_all" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "ini_restore" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ini_set" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "interface_exists" : {
- "min" : "5.0.2",
- "max" : null,
- "ref" : "Core"
- },
- "intl_error_name" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "intl_get_error_code" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "intl_get_error_message" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "intl_is_failure" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_add" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_after" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_before" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_clear" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_create_instance" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_equals" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_field_difference" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_from_date_time" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_actual_maximum" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_actual_minimum" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_available_locales" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_day_of_week_type" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_error_code" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_error_message" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_first_day_of_week" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_greatest_minimum" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_keyword_values_for_locale" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_least_maximum" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_locale" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_maximum" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_minimal_days_in_first_week" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_minimum" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_now" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_time" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_time_zone" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_type" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_get_weekend_transition" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_in_daylight_time" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_is_equivalent_to" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_is_lenient" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_is_set" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_is_weekend" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_roll" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_set" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_set_first_day_of_week" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_set_lenient" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_set_minimal_days_in_first_week" : {
- "min" : "5.5.1",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_set_time" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_set_time_zone" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlcal_to_date_time" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlgregcal_create_instance" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlgregcal_get_gregorian_change" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlgregcal_is_leap_year" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intlgregcal_set_gregorian_change" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_count_equivalent_ids" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_create_default" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_create_enumeration" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_create_time_zone" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_from_date_time_zone" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_get_canonical_id" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_get_display_name" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_get_dst_savings" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_get_equivalent_id" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_get_error_code" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_get_error_message" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_get_gmt" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_get_id" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_get_offset" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_get_raw_offset" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_get_tz_data_version" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_has_same_rules" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_to_date_time_zone" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intltz_use_daylight_time" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "intl"
- },
- "intval" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ip2long" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "iptcembed" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "iptcparse" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_a" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "Core"
- },
- "is_array" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_bool" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_callable" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "standard"
- },
- "is_dir" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_double" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_executable" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_file" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_finite" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_float" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_infinite" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_int" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_integer" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_link" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_long" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_nan" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_null" : {
- "min" : "4.0.4",
- "max" : null,
- "ref" : "standard"
- },
- "is_numeric" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_object" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_readable" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_real" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_resource" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_scalar" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "standard"
- },
- "is_string" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_subclass_of" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "is_uploaded_file" : {
- "min" : "4.0.3",
- "max" : null,
- "ref" : "standard"
- },
- "is_writable" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "is_writeable" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "isset" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "iterator_apply" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "spl"
- },
- "iterator_count" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "spl"
- },
- "iterator_to_array" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "spl"
- },
- "join" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "jpeg2wbmp" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "gd"
- },
- "json_decode" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "json"
- },
- "json_encode" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "json"
- },
- "json_last_error" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "json"
- },
- "json_last_error_msg" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "json"
- },
- "key" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "key_exists" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "standard"
- },
- "krsort" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ksort" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "lcfirst" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "lcg_value" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "lchgrp" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "lchown" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "ldap_add" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_bind" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_close" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_compare" : {
- "min" : "4.0.2",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_connect" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_control_paged_result" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_control_paged_result_response" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_count_entries" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_delete" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_dn2ufn" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_err2str" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_errno" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_error" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_explode_dn" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_first_attribute" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_first_entry" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_first_reference" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_free_result" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_get_attributes" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_get_dn" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_get_entries" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_get_option" : {
- "min" : "4.0.4",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_get_values" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_get_values_len" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_list" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_mod_add" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_mod_del" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_mod_replace" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_modify" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_modify_batch" : {
- "min" : "5.4.26",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_next_attribute" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_next_entry" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_next_reference" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_parse_reference" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_parse_result" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_read" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_rename" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_sasl_bind" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_search" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_set_option" : {
- "min" : "4.0.4",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_set_rebind_proc" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_sort" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_start_tls" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "ldap"
- },
- "ldap_unbind" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "ldap"
- },
- "levenshtein" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "standard"
- },
- "libxml_clear_errors" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "libxml"
- },
- "libxml_disable_entity_loader" : {
- "min" : "5.2.11",
- "max" : null,
- "ref" : "libxml"
- },
- "libxml_get_errors" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "libxml"
- },
- "libxml_get_last_error" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "libxml"
- },
- "libxml_set_external_entity_loader" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "libxml"
- },
- "libxml_set_streams_context" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "libxml"
- },
- "libxml_use_internal_errors" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "libxml"
- },
- "link" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "linkinfo" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "list" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "locale_accept_from_http" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "locale_canonicalize" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_compose" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_filter_matches" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_get_all_variants" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_get_default" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_get_display_language" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_get_display_name" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_get_display_region" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_get_display_script" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_get_display_variant" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_get_keywords" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_get_primary_language" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_get_region" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_get_script" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_lookup" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_parse" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "locale_set_default" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "localeconv" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "localtime" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "date"
- },
- "log" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "log10" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "log1p" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "standard"
- },
- "long2ip" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "lstat" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ltrim" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "magic_quotes_runtime" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "mail" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "max" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "mb_check_encoding" : {
- "min" : "4.4.3",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_convert_case" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_convert_encoding" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_convert_kana" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_convert_variables" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_decode_mimeheader" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_decode_numericentity" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_detect_encoding" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_detect_order" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_encode_mimeheader" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_encode_numericentity" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_encoding_aliases" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_ereg" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_ereg_match" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_ereg_replace" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_ereg_replace_callback" : {
- "min" : "5.4.1",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_ereg_search" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_ereg_search_getpos" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_ereg_search_getregs" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_ereg_search_init" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_ereg_search_pos" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_ereg_search_regs" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_ereg_search_setpos" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_eregi" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_eregi_replace" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_get_info" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_http_input" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_http_output" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_internal_encoding" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_language" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_list_encodings" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_output_handler" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_parse_str" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_preferred_mime_name" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_regex_encoding" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_regex_set_options" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_send_mail" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_split" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_strcut" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_strimwidth" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_stripos" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_stristr" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_strlen" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_strpos" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_strrchr" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_strrichr" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_strripos" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_strrpos" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_strstr" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_strtolower" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_strtoupper" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_strwidth" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_substitute_character" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_substr" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mbstring"
- },
- "mb_substr_count" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mbereg" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mbereg_match" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mbereg_replace" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mbereg_search" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mbereg_search_getpos" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mbereg_search_getregs" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mbereg_search_init" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mbereg_search_pos" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mbereg_search_regs" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mbereg_search_setpos" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mberegi" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mberegi_replace" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mbregex_encoding" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "mbsplit" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "mbstring"
- },
- "md5" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "md5_file" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "memory_get_peak_usage" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "memory_get_usage" : {
- "min" : "4.3.2",
- "max" : null,
- "ref" : "standard"
- },
- "metaphone" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "method_exists" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "microtime" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "mime_content_type" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "fileinfo"
- },
- "min" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "mkdir" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "mktime" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "date"
- },
- "money_format" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "move_uploaded_file" : {
- "min" : "4.0.3",
- "max" : null,
- "ref" : "standard"
- },
- "msgfmt_create" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "msgfmt_format" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "msgfmt_format_message" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "msgfmt_get_error_code" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "msgfmt_get_error_message" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "msgfmt_get_locale" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "msgfmt_get_pattern" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "msgfmt_parse" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "msgfmt_parse_message" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "msgfmt_set_pattern" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "mt_getrandmax" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "mt_rand" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "mt_srand" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "mysql" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_affected_rows" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_client_encoding" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_close" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_connect" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_create_db" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_data_seek" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_db_name" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_db_query" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_dbname" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_drop_db" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_errno" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_error" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_escape_string" : {
- "min" : "4.0.3",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_fetch_array" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_fetch_assoc" : {
- "min" : "4.0.3",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_fetch_field" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_fetch_lengths" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_fetch_object" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_fetch_row" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_field_flags" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_field_len" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_field_name" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_field_seek" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_field_table" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_field_type" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_fieldflags" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_fieldlen" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_fieldname" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_fieldtable" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_fieldtype" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_free_result" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_freeresult" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_get_client_info" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_get_host_info" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_get_proto_info" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_get_server_info" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_info" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_insert_id" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_list_dbs" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_list_fields" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_list_processes" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_list_tables" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_listdbs" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_listfields" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_listtables" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_num_fields" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_num_rows" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_numfields" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_numrows" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_pconnect" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_ping" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_query" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_real_escape_string" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_result" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_select_db" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_selectdb" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_set_charset" : {
- "min" : "5.2.3",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_stat" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_table_name" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_tablename" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_thread_id" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "mysql"
- },
- "mysql_unbuffered_query" : {
- "min" : "4.0.6",
- "max" : null,
- "ref" : "mysql"
- },
- "mysqli_affected_rows" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_autocommit" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_begin_transaction" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_bind_param" : {
- "min" : "5.0.0",
- "max" : "5.3.28",
- "ref" : "mysqli"
- },
- "mysqli_bind_result" : {
- "min" : "5.0.0",
- "max" : "5.3.28",
- "ref" : "mysqli"
- },
- "mysqli_change_user" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_character_set_name" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_client_encoding" : {
- "min" : "5.0.0",
- "max" : "5.3.28",
- "ref" : "mysqli"
- },
- "mysqli_close" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_commit" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_connect" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_connect_errno" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_connect_error" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_data_seek" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_debug" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_disable_reads_from_master" : {
- "min" : "5.0.0",
- "max" : "5.2.17",
- "ref" : "mysqli"
- },
- "mysqli_disable_rpl_parse" : {
- "min" : "5.0.0",
- "max" : "5.2.17",
- "ref" : "mysqli"
- },
- "mysqli_dump_debug_info" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_embedded_server_end" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_embedded_server_start" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_enable_reads_from_master" : {
- "min" : "5.0.0",
- "max" : "5.2.17",
- "ref" : "mysqli"
- },
- "mysqli_enable_rpl_parse" : {
- "min" : "5.0.0",
- "max" : "5.2.17",
- "ref" : "mysqli"
- },
- "mysqli_errno" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_error" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_error_list" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_escape_string" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_execute" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_fetch" : {
- "min" : "5.0.0",
- "max" : "5.3.28",
- "ref" : "mysqli"
- },
- "mysqli_fetch_all" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_fetch_array" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_fetch_assoc" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_fetch_field" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_fetch_field_direct" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_fetch_fields" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_fetch_lengths" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_fetch_object" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_fetch_row" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_field_count" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_field_seek" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_field_tell" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_free_result" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_get_cache_stats" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_get_charset" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_get_client_info" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_get_client_stats" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_get_client_version" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_get_connection_stats" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_get_host_info" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_get_metadata" : {
- "min" : "5.0.0",
- "max" : "5.3.28",
- "ref" : "mysqli"
- },
- "mysqli_get_proto_info" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_get_server_info" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_get_server_version" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_get_warnings" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_info" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_init" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_insert_id" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_kill" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_master_query" : {
- "min" : "5.0.0",
- "max" : "5.2.17",
- "ref" : "mysqli"
- },
- "mysqli_more_results" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_multi_query" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_next_result" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_num_fields" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_num_rows" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_options" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_param_count" : {
- "min" : "5.0.0",
- "max" : "5.3.28",
- "ref" : "mysqli"
- },
- "mysqli_ping" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_poll" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_prepare" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_query" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_real_connect" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_real_escape_string" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_real_query" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_reap_async_query" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_refresh" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_release_savepoint" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_report" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_rollback" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_rpl_parse_enabled" : {
- "min" : "5.0.0",
- "max" : "5.2.17",
- "ref" : "mysqli"
- },
- "mysqli_rpl_probe" : {
- "min" : "5.0.0",
- "max" : "5.2.17",
- "ref" : "mysqli"
- },
- "mysqli_rpl_query_type" : {
- "min" : "5.0.0",
- "max" : "5.2.17",
- "ref" : "mysqli"
- },
- "mysqli_savepoint" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_select_db" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_send_long_data" : {
- "min" : "5.0.0",
- "max" : "5.3.28",
- "ref" : "mysqli"
- },
- "mysqli_send_query" : {
- "min" : "5.0.0",
- "max" : "5.2.17",
- "ref" : "mysqli"
- },
- "mysqli_set_charset" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_set_local_infile_default" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_set_local_infile_handler" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_set_opt" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_slave_query" : {
- "min" : "5.0.0",
- "max" : "5.2.17",
- "ref" : "mysqli"
- },
- "mysqli_sqlstate" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_ssl_set" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stat" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_affected_rows" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_attr_get" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_attr_set" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_bind_param" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_bind_result" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_close" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_data_seek" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_errno" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_error" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_error_list" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_execute" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_fetch" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_field_count" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_free_result" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_get_result" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_get_warnings" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_init" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_insert_id" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_more_results" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_next_result" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_num_rows" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_param_count" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_prepare" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_reset" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_result_metadata" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_send_long_data" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_sqlstate" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_stmt_store_result" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_store_result" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_thread_id" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_thread_safe" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_use_result" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "mysqli_warning_count" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "mysqli"
- },
- "natcasesort" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "natsort" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "next" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ngettext" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "gettext"
- },
- "nl2br" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "nl_langinfo" : {
- "min" : "4.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "normalizer_is_normalized" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "normalizer_normalize" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "number_format" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "numfmt_create" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "numfmt_format" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "numfmt_format_currency" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "numfmt_get_attribute" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "numfmt_get_error_code" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "numfmt_get_error_message" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "numfmt_get_locale" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "numfmt_get_pattern" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "numfmt_get_symbol" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "numfmt_get_text_attribute" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "numfmt_parse" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "numfmt_parse_currency" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "numfmt_set_attribute" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "numfmt_set_pattern" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "numfmt_set_symbol" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "numfmt_set_text_attribute" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "intl"
- },
- "ob_clean" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "ob_end_clean" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ob_end_flush" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ob_flush" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "ob_get_clean" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "ob_get_contents" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ob_get_flush" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "ob_get_length" : {
- "min" : "4.0.2",
- "max" : null,
- "ref" : "standard"
- },
- "ob_get_level" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "ob_get_status" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "ob_gzhandler" : {
- "min" : "4.0.4",
- "max" : null,
- "ref" : "zlib"
- },
- "ob_implicit_flush" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ob_list_handlers" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "ob_start" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "octdec" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "opendir" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "openlog" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ord" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "output_add_rewrite_var" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "output_reset_rewrite_vars" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "pack" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "parse_ini_file" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "parse_ini_string" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "parse_str" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "parse_url" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "passthru" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "password_get_info" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "standard"
- },
- "password_hash" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "standard"
- },
- "password_needs_rehash" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "standard"
- },
- "password_verify" : {
- "min" : "5.5.0",
- "max" : null,
- "ref" : "standard"
- },
- "pathinfo" : {
- "min" : "4.0.3",
- "max" : null,
- "ref" : "standard"
- },
- "pclose" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "pcntl_alarm" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_errno" : {
- "min" : "5.3.4",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_exec" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_fork" : {
- "min" : "4.1.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_get_last_error" : {
- "min" : "5.3.4",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_getpriority" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_setpriority" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_signal" : {
- "min" : "4.1.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_signal_dispatch" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_sigprocmask" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_sigtimedwait" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_sigwaitinfo" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_strerror" : {
- "min" : "5.3.4",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_wait" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_waitpid" : {
- "min" : "4.1.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_wexitstatus" : {
- "min" : "4.1.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_wifexited" : {
- "min" : "4.1.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_wifsignaled" : {
- "min" : "4.1.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_wifstopped" : {
- "min" : "4.1.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_wstopsig" : {
- "min" : "4.1.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pcntl_wtermsig" : {
- "min" : "4.1.0",
- "max" : null,
- "ref" : "pcntl"
- },
- "pdo_drivers" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "PDO"
- },
- "pfsockopen" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "php_check_syntax" : {
- "min" : "5.0.0",
- "max" : "5.0.4",
- "ref" : "standard"
- },
- "php_egg_logo_guid" : {
- "min" : "4.0.3",
- "max" : "5.4.30RC1",
- "ref" : "standard"
- },
- "php_ini_loaded_file" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "standard"
- },
- "php_ini_scanned_files" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "php_logo_guid" : {
- "min" : "4.0.0",
- "max" : "5.4.30RC1",
- "ref" : "standard"
- },
- "php_real_logo_guid" : {
- "min" : "4.0.0",
- "max" : "5.4.30RC1",
- "ref" : "standard"
- },
- "php_sapi_name" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "standard"
- },
- "php_strip_whitespace" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "php_uname" : {
- "min" : "4.0.2",
- "max" : null,
- "ref" : "standard"
- },
- "phpcredits" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "phpinfo" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "phpversion" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "pi" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "png2wbmp" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "gd"
- },
- "popen" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "pos" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "posix_access" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_ctermid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_errno" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_get_last_error" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getcwd" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getegid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_geteuid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getgid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getgrgid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getgrnam" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getgroups" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getlogin" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getpgid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getpgrp" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getpid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getppid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getpwnam" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getpwuid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getrlimit" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getsid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_getuid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_initgroups" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_isatty" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_kill" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_mkfifo" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_mknod" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_setegid" : {
- "min" : "4.0.2",
- "max" : null,
- "ref" : "posix"
- },
- "posix_seteuid" : {
- "min" : "4.0.2",
- "max" : null,
- "ref" : "posix"
- },
- "posix_setgid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_setpgid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_setsid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_setuid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_strerror" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_times" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_ttyname" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "posix_uname" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "posix"
- },
- "pow" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "preg_filter" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "pcre"
- },
- "preg_grep" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "pcre"
- },
- "preg_last_error" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "pcre"
- },
- "preg_match" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "pcre"
- },
- "preg_match_all" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "pcre"
- },
- "preg_quote" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "pcre"
- },
- "preg_replace" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "pcre"
- },
- "preg_replace_callback" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "pcre"
- },
- "preg_split" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "pcre"
- },
- "prev" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "print_r" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "printf" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "proc_close" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "proc_get_status" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "proc_nice" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "proc_open" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "proc_terminate" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "property_exists" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "Core"
- },
- "putenv" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "quoted_printable_decode" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "quoted_printable_encode" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "quotemeta" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "rad2deg" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "rand" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "range" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "rawurldecode" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "rawurlencode" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "readdir" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "readfile" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "readgzfile" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "zlib"
- },
- "readlink" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "realpath" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "realpath_cache_get" : {
- "min" : "5.3.2",
- "max" : null,
- "ref" : "standard"
- },
- "realpath_cache_size" : {
- "min" : "5.3.2",
- "max" : null,
- "ref" : "standard"
- },
- "register_shutdown_function" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "register_tick_function" : {
- "min" : "4.0.3",
- "max" : null,
- "ref" : "standard"
- },
- "rename" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "reset" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "resourcebundle_count" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "resourcebundle_create" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "resourcebundle_get" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "resourcebundle_get_error_code" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "resourcebundle_get_error_message" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "resourcebundle_locales" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "intl"
- },
- "restore_error_handler" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "Core"
- },
- "restore_exception_handler" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "restore_include_path" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "rewind" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "rewinddir" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "rmdir" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "round" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "rsort" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "rtrim" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "scandir" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "serialize" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "set_error_handler" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "Core"
- },
- "set_exception_handler" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "set_file_buffer" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "set_include_path" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "set_magic_quotes_runtime" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "set_socket_blocking" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "set_time_limit" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "setcookie" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "setlocale" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "setrawcookie" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "settype" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "sha1" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "sha1_file" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "shell_exec" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "show_source" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "shuffle" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "similar_text" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "simplexml_import_dom" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "SimpleXML"
- },
- "simplexml_load_file" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "SimpleXML"
- },
- "simplexml_load_string" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "SimpleXML"
- },
- "sin" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "sinh" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "standard"
- },
- "sizeof" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "sleep" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "socket_get_status" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "socket_set_blocking" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "socket_set_timeout" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "sort" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "soundex" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "spl_autoload" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "spl"
- },
- "spl_autoload_call" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "spl"
- },
- "spl_autoload_extensions" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "spl"
- },
- "spl_autoload_functions" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "spl"
- },
- "spl_autoload_register" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "spl"
- },
- "spl_autoload_unregister" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "spl"
- },
- "spl_classes" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "spl"
- },
- "spl_object_hash" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "spl"
- },
- "sprintf" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "sqrt" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "srand" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "sscanf" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "standard"
- },
- "stat" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "str_getcsv" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "str_ireplace" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "str_pad" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "standard"
- },
- "str_repeat" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "str_replace" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "str_rot13" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "str_shuffle" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "str_split" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "str_word_count" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "strcasecmp" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "strchr" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strcmp" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "strcoll" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "standard"
- },
- "strcspn" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_bucket_append" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_bucket_make_writeable" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_bucket_new" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_bucket_prepend" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_context_create" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_context_get_default" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_context_get_options" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_context_get_params" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_context_set_default" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_context_set_option" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_context_set_params" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_copy_to_stream" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_filter_append" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_filter_prepend" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_filter_register" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_filter_remove" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_get_contents" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_get_filters" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_get_line" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_get_meta_data" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_get_transports" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_get_wrappers" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_is_local" : {
- "min" : "5.2.4",
- "max" : null,
- "ref" : "standard"
- },
- "stream_register_wrapper" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_resolve_include_path" : {
- "min" : "5.3.2",
- "max" : null,
- "ref" : "standard"
- },
- "stream_select" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_set_blocking" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_set_chunk_size" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_set_read_buffer" : {
- "min" : "5.3.3",
- "max" : null,
- "ref" : "standard"
- },
- "stream_set_timeout" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_set_write_buffer" : {
- "min" : "4.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_socket_accept" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_socket_client" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_socket_enable_crypto" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_socket_get_name" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_socket_pair" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_socket_recvfrom" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_socket_sendto" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_socket_server" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_socket_shutdown" : {
- "min" : "5.2.1",
- "max" : null,
- "ref" : "standard"
- },
- "stream_supports_lock" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_wrapper_register" : {
- "min" : "4.3.2",
- "max" : null,
- "ref" : "standard"
- },
- "stream_wrapper_restore" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "stream_wrapper_unregister" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "strftime" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "date"
- },
- "strip_tags" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stripcslashes" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stripos" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stripslashes" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "stristr" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strlen" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "strnatcasecmp" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strnatcmp" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strncasecmp" : {
- "min" : "4.0.2",
- "max" : null,
- "ref" : "Core"
- },
- "strncmp" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "strpbrk" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strpos" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strptime" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "strrchr" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strrev" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strripos" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strrpos" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strspn" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strstr" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strtok" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strtolower" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strtotime" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "date"
- },
- "strtoupper" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strtr" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "strval" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "substr" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "substr_compare" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "substr_count" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "substr_replace" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "symlink" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "sys_get_temp_dir" : {
- "min" : "5.2.1",
- "max" : null,
- "ref" : "standard"
- },
- "sys_getloadavg" : {
- "min" : "5.1.3",
- "max" : null,
- "ref" : "standard"
- },
- "syslog" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "system" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "tan" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "tanh" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "tempnam" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "textdomain" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "gettext"
- },
- "time" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "date"
- },
- "time_nanosleep" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "time_sleep_until" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "standard"
- },
- "timezone_abbreviations_list" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "date"
- },
- "timezone_identifiers_list" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "date"
- },
- "timezone_location_get" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "date"
- },
- "timezone_name_from_abbr" : {
- "min" : "5.1.3",
- "max" : null,
- "ref" : "date"
- },
- "timezone_name_get" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "date"
- },
- "timezone_offset_get" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "date"
- },
- "timezone_open" : {
- "min" : "5.1.0",
- "max" : null,
- "ref" : "date"
- },
- "timezone_transitions_get" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "date"
- },
- "timezone_version_get" : {
- "min" : "5.3.0",
- "max" : null,
- "ref" : "date"
- },
- "tmpfile" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "touch" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "trait_exists" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "Core"
- },
- "transliterator_create" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "intl"
- },
- "transliterator_create_from_rules" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "intl"
- },
- "transliterator_create_inverse" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "intl"
- },
- "transliterator_get_error_code" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "intl"
- },
- "transliterator_get_error_message" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "intl"
- },
- "transliterator_list_ids" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "intl"
- },
- "transliterator_transliterate" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "intl"
- },
- "trigger_error" : {
- "min" : "4.0.1",
- "max" : null,
- "ref" : "Core"
- },
- "trim" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "uasort" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ucfirst" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "ucwords" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "uksort" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "umask" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "uniqid" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "unlink" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "unpack" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "unregister_tick_function" : {
- "min" : "4.0.3",
- "max" : null,
- "ref" : "standard"
- },
- "unserialize" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "urldecode" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "urlencode" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "user_error" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "usleep" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "usort" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "utf8_decode" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "utf8_encode" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "var_dump" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "var_export" : {
- "min" : "4.2.0",
- "max" : null,
- "ref" : "standard"
- },
- "version_compare" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "standard"
- },
- "vfprintf" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "standard"
- },
- "vprintf" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "standard"
- },
- "vsprintf" : {
- "min" : "4.0.7",
- "max" : null,
- "ref" : "standard"
- },
- "wordwrap" : {
- "min" : "4.0.2",
- "max" : null,
- "ref" : "standard"
- },
- "xml_error_string" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_get_current_byte_index" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_get_current_column_number" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_get_current_line_number" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_get_error_code" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_parse" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_parse_into_struct" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_parser_create" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_parser_create_ns" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "xml"
- },
- "xml_parser_free" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_parser_get_option" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_parser_set_option" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_set_character_data_handler" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_set_default_handler" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_set_element_handler" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_set_end_namespace_decl_handler" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "xml"
- },
- "xml_set_external_entity_ref_handler" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_set_notation_decl_handler" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_set_object" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_set_processing_instruction_handler" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xml_set_start_namespace_decl_handler" : {
- "min" : "4.0.5",
- "max" : null,
- "ref" : "xml"
- },
- "xml_set_unparsed_entity_decl_handler" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "xml"
- },
- "xmlwriter_end_attribute" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_end_cdata" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_end_comment" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_end_document" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_end_dtd" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_end_dtd_attlist" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_end_dtd_element" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_end_dtd_entity" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_end_element" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_end_pi" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_flush" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_full_end_element" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_open_memory" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_open_uri" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_output_memory" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_set_indent" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_set_indent_string" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_start_attribute" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_start_attribute_ns" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_start_cdata" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_start_comment" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_start_document" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_start_dtd" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_start_dtd_attlist" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_start_dtd_element" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_start_dtd_entity" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_start_element" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_start_element_ns" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_start_pi" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_text" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_write_attribute" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_write_attribute_ns" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_write_cdata" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_write_comment" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_write_dtd" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_write_dtd_attlist" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_write_dtd_element" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_write_dtd_entity" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_write_element" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_write_element_ns" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_write_pi" : {
- "min" : "5.1.2",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "xmlwriter_write_raw" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "xmlwriter"
- },
- "yaml_emit" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "yaml"
- },
- "yaml_emit_file" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "yaml"
- },
- "yaml_parse" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "yaml"
- },
- "yaml_parse_file" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "yaml"
- },
- "yaml_parse_url" : {
- "min" : "5.2.0",
- "max" : null,
- "ref" : "yaml"
- },
- "zend_logo_guid" : {
- "min" : "4.0.0",
- "max" : "5.4.30RC1",
- "ref" : "standard"
- },
- "zend_thread_id" : {
- "min" : "5.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "zend_version" : {
- "min" : "4.0.0",
- "max" : null,
- "ref" : "Core"
- },
- "zlib_decode" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "zlib"
- },
- "zlib_encode" : {
- "min" : "5.4.0",
- "max" : null,
- "ref" : "zlib"
- },
- "zlib_get_coding_type" : {
- "min" : "4.3.2",
- "max" : null,
- "ref" : "zlib"
- }
- },
- "classes" : {
- "APCIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "AppendIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "ArrayIterator" : {
- "min" : "5.0.0",
- "max" : null
- },
- "ArrayObject" : {
- "min" : "5.0.0",
- "max" : null
- },
- "BadFunctionCallException" : {
- "min" : "5.1.0",
- "max" : null
- },
- "BadMethodCallException" : {
- "min" : "5.1.0",
- "max" : null
- },
- "CURLFile" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CachingIterator" : {
- "min" : "5.0.0",
- "max" : null
- },
- "CallbackFilterIterator" : {
- "min" : "5.4.0",
- "max" : null
- },
- "Closure" : {
- "min" : "5.3.0",
- "max" : null
- },
- "Collator" : {
- "min" : "5.2.0",
- "max" : null
- },
- "DateInterval" : {
- "min" : "5.3.0",
- "max" : null
- },
- "DatePeriod" : {
- "min" : "5.3.0",
- "max" : null
- },
- "DateTime" : {
- "min" : "5.2.0",
- "max" : null
- },
- "DateTimeImmutable" : {
- "min" : "5.5.0",
- "max" : null
- },
- "DateTimeZone" : {
- "min" : "5.2.0",
- "max" : null
- },
- "Directory" : {
- "min" : "4.0.0",
- "max" : null
- },
- "DirectoryIterator" : {
- "min" : "5.0.0",
- "max" : null
- },
- "DomainException" : {
- "min" : "5.1.0",
- "max" : null
- },
- "EmptyIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "ErrorException" : {
- "min" : "5.1.0",
- "max" : null
- },
- "Exception" : {
- "min" : "5.1.0",
- "max" : null
- },
- "FilesystemIterator" : {
- "min" : "5.3.0",
- "max" : null
- },
- "FilterIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "Generator" : {
- "min" : "5.5.0",
- "max" : null
- },
- "GlobIterator" : {
- "min" : "5.3.0",
- "max" : null
- },
- "Imagick" : {
- "min" : "5.1.3",
- "max" : null
- },
- "ImagickDraw" : {
- "min" : "5.1.3",
- "max" : null
- },
- "ImagickDrawException" : {
- "min" : "5.1.3",
- "max" : null
- },
- "ImagickException" : {
- "min" : "5.1.3",
- "max" : null
- },
- "ImagickPixel" : {
- "min" : "5.1.3",
- "max" : null
- },
- "ImagickPixelException" : {
- "min" : "5.1.3",
- "max" : null
- },
- "ImagickPixelIterator" : {
- "min" : "5.1.3",
- "max" : null
- },
- "ImagickPixelIteratorException" : {
- "min" : "5.1.3",
- "max" : null
- },
- "InfiniteIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "IntlBreakIterator" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IntlCalendar" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IntlCodePointBreakIterator" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IntlDateFormatter" : {
- "min" : "5.2.4",
- "max" : null
- },
- "IntlException" : {
- "min" : "5.2.0",
- "max" : null
- },
- "IntlGregorianCalendar" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IntlIterator" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IntlPartsIterator" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IntlRuleBasedBreakIterator" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IntlTimeZone" : {
- "min" : "5.5.0",
- "max" : null
- },
- "InvalidArgumentException" : {
- "min" : "5.1.0",
- "max" : null
- },
- "IteratorIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LengthException" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LibXMLError" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LimitIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "Locale" : {
- "min" : "5.2.0",
- "max" : null
- },
- "LogicException" : {
- "min" : "5.1.0",
- "max" : null
- },
- "MessageFormatter" : {
- "min" : "5.2.0",
- "max" : null
- },
- "MultipleIterator" : {
- "min" : "5.3.0",
- "max" : null
- },
- "NoRewindIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "Normalizer" : {
- "min" : "5.2.0",
- "max" : null
- },
- "NumberFormatter" : {
- "min" : "5.2.0",
- "max" : null
- },
- "OutOfBoundsException" : {
- "min" : "5.1.0",
- "max" : null
- },
- "OutOfRangeException" : {
- "min" : "5.1.0",
- "max" : null
- },
- "OverflowException" : {
- "min" : "5.1.0",
- "max" : null
- },
- "PDO" : {
- "min" : "5.1.0",
- "max" : null
- },
- "PDOException" : {
- "min" : "5.1.0",
- "max" : null
- },
- "PDORow" : {
- "min" : "5.1.0",
- "max" : null
- },
- "PDOStatement" : {
- "min" : "5.1.0",
- "max" : null
- },
- "ParentIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "Phar" : {
- "min" : "5.2.0",
- "max" : null
- },
- "PharData" : {
- "min" : "5.2.0",
- "max" : null
- },
- "PharException" : {
- "min" : "5.2.0",
- "max" : null
- },
- "PharFileInfo" : {
- "min" : "5.2.0",
- "max" : null
- },
- "RangeException" : {
- "min" : "5.1.0",
- "max" : null
- },
- "RecursiveArrayIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "RecursiveCachingIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "RecursiveCallbackFilterIterator" : {
- "min" : "5.4.0",
- "max" : null
- },
- "RecursiveDirectoryIterator" : {
- "min" : "5.1.2",
- "max" : null
- },
- "RecursiveFilterIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "RecursiveIteratorIterator" : {
- "min" : "5.1.3",
- "max" : null
- },
- "RecursiveRegexIterator" : {
- "min" : "5.2.0",
- "max" : null
- },
- "RecursiveTreeIterator" : {
- "min" : "5.3.0",
- "max" : null
- },
- "Reflection" : {
- "min" : "5.0.0",
- "max" : null
- },
- "ReflectionClass" : {
- "min" : "5.0.0",
- "max" : null
- },
- "ReflectionException" : {
- "min" : "5.0.0",
- "max" : null
- },
- "ReflectionExtension" : {
- "min" : "5.0.0",
- "max" : null
- },
- "ReflectionFunction" : {
- "min" : "5.0.0",
- "max" : null
- },
- "ReflectionFunctionAbstract" : {
- "min" : "5.0.0",
- "max" : null
- },
- "ReflectionMethod" : {
- "min" : "5.0.0",
- "max" : null
- },
- "ReflectionObject" : {
- "min" : "5.0.0",
- "max" : null
- },
- "ReflectionParameter" : {
- "min" : "5.0.0",
- "max" : null
- },
- "ReflectionProperty" : {
- "min" : "5.0.0",
- "max" : null
- },
- "ReflectionZendExtension" : {
- "min" : "5.4.0",
- "max" : null
- },
- "RegexIterator" : {
- "min" : "5.2.0",
- "max" : null
- },
- "ResourceBundle" : {
- "min" : "5.2.4",
- "max" : null
- },
- "RuntimeException" : {
- "min" : "5.1.0",
- "max" : null
- },
- "SimpleXMLElement" : {
- "min" : "5.0.1",
- "max" : null
- },
- "SimpleXMLIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "SplDoublyLinkedList" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SplFileInfo" : {
- "min" : "5.1.2",
- "max" : null
- },
- "SplFileObject" : {
- "min" : "5.1.0",
- "max" : null
- },
- "SplFixedArray" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SplHeap" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SplMaxHeap" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SplMinHeap" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SplObjectStorage" : {
- "min" : "5.1.0",
- "max" : null
- },
- "SplPriorityQueue" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SplQueue" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SplStack" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SplTempFileObject" : {
- "min" : "5.1.2",
- "max" : null
- },
- "Spoofchecker" : {
- "min" : "5.4.0",
- "max" : null
- },
- "Transliterator" : {
- "min" : "5.4.0",
- "max" : null
- },
- "UConverter" : {
- "min" : "5.5.0",
- "max" : null
- },
- "UnderflowException" : {
- "min" : "5.1.0",
- "max" : null
- },
- "UnexpectedValueException" : {
- "min" : "5.1.0",
- "max" : null
- },
- "XMLReader" : {
- "min" : "5.0.0",
- "max" : null
- },
- "XMLWriter" : {
- "min" : "5.1.2",
- "max" : null
- },
- "__PHP_Incomplete_Class" : {
- "min" : "4.0.0",
- "max" : null
- },
- "finfo" : {
- "min" : "4.0.0",
- "max" : null
- },
- "http\\Client" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Request" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Response" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Cookie" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Encoding\\Stream" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Encoding\\Stream\\Dechunk" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Encoding\\Stream\\Deflate" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Encoding\\Stream\\Inflate" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Env" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Env\\Request" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Env\\Response" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Exception\\BadConversionException" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Exception\\BadHeaderException" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Exception\\BadMessageException" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Exception\\BadMethodCallException" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Exception\\BadQueryStringException" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Exception\\BadUrlException" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Exception\\InvalidArgumentException" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Exception\\RuntimeException" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Exception\\UnexpectedValueException" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Header" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Message" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Message\\Body" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Params" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\QueryString" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Url" : {
- "min" : "5.3.0",
- "max" : null
- },
- "mysqli" : {
- "min" : "5.0.0",
- "max" : null
- },
- "mysqli_driver" : {
- "min" : "5.0.0",
- "max" : null
- },
- "mysqli_result" : {
- "min" : "5.0.0",
- "max" : null
- },
- "mysqli_sql_exception" : {
- "min" : "5.0.0",
- "max" : null
- },
- "mysqli_stmt" : {
- "min" : "5.0.0",
- "max" : null
- },
- "mysqli_warning" : {
- "min" : "5.0.0",
- "max" : null
- },
- "php_user_filter" : {
- "min" : "5.0.0",
- "max" : null
- },
- "stdClass" : {
- "min" : "4.0.0",
- "max" : null
- }
- },
- "interfaces" : {
- "ArrayAccess" : {
- "min" : "5.1.0",
- "max" : null
- },
- "Countable" : {
- "min" : "5.1.0",
- "max" : null
- },
- "DateTimeInterface" : {
- "min" : "5.5.0",
- "max" : null
- },
- "Iterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "IteratorAggregate" : {
- "min" : "5.1.0",
- "max" : null
- },
- "JsonSerializable" : {
- "min" : "5.4.0",
- "max" : null
- },
- "OuterIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "RecursiveIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "Reflector" : {
- "min" : "5.0.0",
- "max" : null
- },
- "SeekableIterator" : {
- "min" : "5.1.0",
- "max" : null
- },
- "Serializable" : {
- "min" : "5.1.0",
- "max" : null
- },
- "SplObserver" : {
- "min" : "5.1.0",
- "max" : null
- },
- "SplSubject" : {
- "min" : "5.1.0",
- "max" : null
- },
- "Traversable" : {
- "min" : "5.1.0",
- "max" : null
- },
- "http\\Exception" : {
- "min" : "5.3.0",
- "max" : null
- }
- },
- "constants" : {
- "ABDAY_1" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABDAY_2" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABDAY_3" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABDAY_4" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABDAY_5" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABDAY_6" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABDAY_7" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABMON_1" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABMON_10" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABMON_11" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABMON_12" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABMON_2" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABMON_3" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABMON_4" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABMON_5" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABMON_6" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABMON_7" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABMON_8" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ABMON_9" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ALT_DIGITS" : {
- "min" : "4.1.0",
- "max" : null
- },
- "AM_STR" : {
- "min" : "4.1.0",
- "max" : null
- },
- "APC_BIN_VERIFY_CRC32" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_BIN_VERIFY_MD5" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_ALL" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_ATIME" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_CTIME" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_DEVICE" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_DTIME" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_FILENAME" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_INODE" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_KEY" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_MD5" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_MEM_SIZE" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_MTIME" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_NONE" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_NUM_HITS" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_REFCOUNT" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_TTL" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_TYPE" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_ITER_VALUE" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_LIST_ACTIVE" : {
- "min" : "5.1.0",
- "max" : null
- },
- "APC_LIST_DELETED" : {
- "min" : "5.1.0",
- "max" : null
- },
- "ASSERT_ACTIVE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "ASSERT_BAIL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "ASSERT_CALLBACK" : {
- "min" : "4.0.0",
- "max" : null
- },
- "ASSERT_QUIET_EVAL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "ASSERT_WARNING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "BUS_ADRALN" : {
- "min" : "5.3.0",
- "max" : null
- },
- "BUS_ADRERR" : {
- "min" : "5.3.0",
- "max" : null
- },
- "BUS_OBJERR" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CASE_LOWER" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CASE_UPPER" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CHAR_MAX" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CLD_CONTINUED" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CLD_DUMPED" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CLD_EXITED" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CLD_KILLED" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CLD_STOPPED" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CLD_TRAPPED" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CODESET" : {
- "min" : "4.1.0",
- "max" : null
- },
- "CONNECTION_ABORTED" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CONNECTION_NORMAL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CONNECTION_TIMEOUT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "COUNT_NORMAL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "COUNT_RECURSIVE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CREDITS_ALL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CREDITS_DOCS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CREDITS_FULLPAGE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CREDITS_GENERAL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CREDITS_GROUP" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CREDITS_MODULES" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CREDITS_QA" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CREDITS_SAPI" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CRNCYSTR" : {
- "min" : "4.1.0",
- "max" : null
- },
- "CRYPT_BLOWFISH" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CRYPT_EXT_DES" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CRYPT_MD5" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CRYPT_SALT_LENGTH" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CRYPT_SHA256" : {
- "min" : "5.3.2",
- "max" : null
- },
- "CRYPT_SHA512" : {
- "min" : "5.3.2",
- "max" : null
- },
- "CRYPT_STD_DES" : {
- "min" : "4.0.0",
- "max" : null
- },
- "CURLAUTH_ANY" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLAUTH_ANYSAFE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLAUTH_BASIC" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLAUTH_DIGEST" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLAUTH_DIGEST_IE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLAUTH_GSSNEGOTIATE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLAUTH_NONE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLAUTH_NTLM" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLAUTH_ONLY" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLCLOSEPOLICY_CALLBACK" : {
- "min" : "4.0.2",
- "max" : "5.5.14RC1"
- },
- "CURLCLOSEPOLICY_LEAST_RECENTLY_USED" : {
- "min" : "4.0.2",
- "max" : "5.5.14RC1"
- },
- "CURLCLOSEPOLICY_LEAST_TRAFFIC" : {
- "min" : "4.0.2",
- "max" : "5.5.14RC1"
- },
- "CURLCLOSEPOLICY_OLDEST" : {
- "min" : "4.0.2",
- "max" : "5.5.14RC1"
- },
- "CURLCLOSEPOLICY_SLOWEST" : {
- "min" : "4.0.2",
- "max" : "5.5.14RC1"
- },
- "CURLE_ABORTED_BY_CALLBACK" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_BAD_CALLING_ORDER" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_BAD_CONTENT_ENCODING" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_BAD_DOWNLOAD_RESUME" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLE_BAD_FUNCTION_ARGUMENT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_BAD_PASSWORD_ENTERED" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_COULDNT_CONNECT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_COULDNT_RESOLVE_HOST" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_COULDNT_RESOLVE_PROXY" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FAILED_INIT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FILESIZE_EXCEEDED" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FILE_COULDNT_READ_FILE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_ACCESS_DENIED" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_BAD_DOWNLOAD_RESUME" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_CANT_GET_HOST" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_CANT_RECONNECT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_COULDNT_GET_SIZE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_COULDNT_RETR_FILE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_COULDNT_SET_ASCII" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_COULDNT_SET_BINARY" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_COULDNT_STOR_FILE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_COULDNT_USE_REST" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_PARTIAL_FILE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLE_FTP_PORT_FAILED" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_QUOTE_ERROR" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_SSL_FAILED" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_USER_PASSWORD_INCORRECT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_WEIRD_227_FORMAT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_WEIRD_PASS_REPLY" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_WEIRD_PASV_REPLY" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_WEIRD_SERVER_REPLY" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_WEIRD_USER_REPLY" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FTP_WRITE_ERROR" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_FUNCTION_NOT_FOUND" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_GOT_NOTHING" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_HTTP_NOT_FOUND" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_HTTP_PORT_FAILED" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_HTTP_POST_ERROR" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_HTTP_RANGE_ERROR" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_HTTP_RETURNED_ERROR" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLE_LDAP_CANNOT_BIND" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_LDAP_INVALID_URL" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_LDAP_SEARCH_FAILED" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_LIBRARY_NOT_FOUND" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_MALFORMAT_USER" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_OBSOLETE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_OK" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_OPERATION_TIMEDOUT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLE_OPERATION_TIMEOUTED" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_OUT_OF_MEMORY" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_PARTIAL_FILE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_READ_ERROR" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_RECV_ERROR" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_SEND_ERROR" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_SHARE_IN_USE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_SSH" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLE_SSL_CACERT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_SSL_CERTPROBLEM" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_SSL_CIPHER" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_SSL_CONNECT_ERROR" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_SSL_ENGINE_NOTFOUND" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_SSL_ENGINE_SETFAILED" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_SSL_PEER_CERTIFICATE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_TELNET_OPTION_SYNTAX" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_TOO_MANY_REDIRECTS" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_UNKNOWN_TELNET_OPTION" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_UNSUPPORTED_PROTOCOL" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_URL_MALFORMAT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_URL_MALFORMAT_USER" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLE_WRITE_ERROR" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLFTPAUTH_DEFAULT" : {
- "min" : "5.1.0",
- "max" : null
- },
- "CURLFTPAUTH_SSL" : {
- "min" : "5.1.0",
- "max" : null
- },
- "CURLFTPAUTH_TLS" : {
- "min" : "5.1.0",
- "max" : null
- },
- "CURLFTPMETHOD_MULTICWD" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLFTPMETHOD_NOCWD" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLFTPMETHOD_SINGLECWD" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLFTPSSL_ALL" : {
- "min" : "5.2.0",
- "max" : null
- },
- "CURLFTPSSL_CCC_ACTIVE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLFTPSSL_CCC_NONE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLFTPSSL_CCC_PASSIVE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLFTPSSL_CONTROL" : {
- "min" : "5.2.0",
- "max" : null
- },
- "CURLFTPSSL_NONE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "CURLFTPSSL_TRY" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLGSSAPI_DELEGATION_FLAG" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLGSSAPI_DELEGATION_POLICY_FLAG" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_APPCONNECT_TIME" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_CERTINFO" : {
- "min" : "5.3.2",
- "max" : null
- },
- "CURLINFO_CONDITION_UNMET" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_CONNECT_TIME" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_CONTENT_LENGTH_DOWNLOAD" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_CONTENT_LENGTH_UPLOAD" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_CONTENT_TYPE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_COOKIELIST" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_EFFECTIVE_URL" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_FILETIME" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_FTP_ENTRY_PATH" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_HEADER_OUT" : {
- "min" : "5.1.3",
- "max" : null
- },
- "CURLINFO_HEADER_SIZE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_HTTPAUTH_AVAIL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_HTTP_CODE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_HTTP_CONNECTCODE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_LASTONE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_LOCAL_IP" : {
- "min" : "5.4.7",
- "max" : null
- },
- "CURLINFO_LOCAL_PORT" : {
- "min" : "5.4.7",
- "max" : null
- },
- "CURLINFO_NAMELOOKUP_TIME" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_NUM_CONNECTS" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_OS_ERRNO" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_PRETRANSFER_TIME" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_PRIMARY_IP" : {
- "min" : "5.4.7",
- "max" : null
- },
- "CURLINFO_PRIMARY_PORT" : {
- "min" : "5.4.7",
- "max" : null
- },
- "CURLINFO_PRIVATE" : {
- "min" : "5.2.4",
- "max" : null
- },
- "CURLINFO_PROXYAUTH_AVAIL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_REDIRECT_COUNT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_REDIRECT_TIME" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_REDIRECT_URL" : {
- "min" : "5.3.7",
- "max" : null
- },
- "CURLINFO_REQUEST_SIZE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_RESPONSE_CODE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_RTSP_CLIENT_CSEQ" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_RTSP_CSEQ_RECV" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_RTSP_SERVER_CSEQ" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_RTSP_SESSION_ID" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_SIZE_DOWNLOAD" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_SIZE_UPLOAD" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_SPEED_DOWNLOAD" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_SPEED_UPLOAD" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_SSL_ENGINES" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLINFO_SSL_VERIFYRESULT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_STARTTRANSFER_TIME" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLINFO_TOTAL_TIME" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLMOPT_MAXCONNECTS" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLMOPT_PIPELINING" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLMSG_DONE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLM_BAD_EASY_HANDLE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLM_BAD_HANDLE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLM_CALL_MULTI_PERFORM" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLM_INTERNAL_ERROR" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLM_OK" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLM_OUT_OF_MEMORY" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_ACCEPTTIMEOUT_MS" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_ACCEPT_ENCODING" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_ADDRESS_SCOPE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_APPEND" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_AUTOREFERER" : {
- "min" : "5.1.0",
- "max" : null
- },
- "CURLOPT_BINARYTRANSFER" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_BUFFERSIZE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_CAINFO" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_CAPATH" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_CERTINFO" : {
- "min" : "5.3.2",
- "max" : null
- },
- "CURLOPT_CLOSEPOLICY" : {
- "min" : "4.0.2",
- "max" : "5.5.14RC1"
- },
- "CURLOPT_CONNECTTIMEOUT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_CONNECTTIMEOUT_MS" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_CONNECT_ONLY" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_COOKIE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_COOKIEFILE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_COOKIEJAR" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_COOKIELIST" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_COOKIESESSION" : {
- "min" : "5.1.0",
- "max" : null
- },
- "CURLOPT_CRLF" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_CRLFILE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_CUSTOMREQUEST" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_DIRLISTONLY" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_DNS_CACHE_TIMEOUT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_DNS_SERVERS" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_DNS_USE_GLOBAL_CACHE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_EGDSOCKET" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_ENCODING" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_FAILONERROR" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_FILE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_FILETIME" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_FNMATCH_FUNCTION" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_FOLLOWLOCATION" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_FORBID_REUSE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_FRESH_CONNECT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_FTPAPPEND" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_FTPLISTONLY" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_FTPPORT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_FTPSSLAUTH" : {
- "min" : "5.1.0",
- "max" : null
- },
- "CURLOPT_FTP_ACCOUNT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_FTP_ALTERNATIVE_TO_USER" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_FTP_CREATE_MISSING_DIRS" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_FTP_FILEMETHOD" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLOPT_FTP_RESPONSE_TIMEOUT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_FTP_SKIP_PASV_IP" : {
- "min" : "5.3.2",
- "max" : null
- },
- "CURLOPT_FTP_SSL" : {
- "min" : "5.2.0",
- "max" : null
- },
- "CURLOPT_FTP_SSL_CCC" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_FTP_USE_EPRT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_FTP_USE_EPSV" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_FTP_USE_PRET" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_GSSAPI_DELEGATION" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_HEADER" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_HEADERFUNCTION" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_HTTP200ALIASES" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_HTTPAUTH" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_HTTPGET" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_HTTPHEADER" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_HTTPPROXYTUNNEL" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_HTTP_CONTENT_DECODING" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_HTTP_TRANSFER_DECODING" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_HTTP_VERSION" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_IGNORE_CONTENT_LENGTH" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_INFILE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_INFILESIZE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_INTERFACE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_IPRESOLVE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLOPT_ISSUERCERT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_KEYPASSWD" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLOPT_KRB4LEVEL" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_KRBLEVEL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_LOCALPORT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_LOCALPORTRANGE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_LOW_SPEED_LIMIT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_LOW_SPEED_TIME" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_MAIL_AUTH" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_MAIL_FROM" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_MAIL_RCPT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_MAXCONNECTS" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_MAXFILESIZE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_MAXREDIRS" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_MAX_RECV_SPEED_LARGE" : {
- "min" : "5.3.7",
- "max" : null
- },
- "CURLOPT_MAX_SEND_SPEED_LARGE" : {
- "min" : "5.3.7",
- "max" : null
- },
- "CURLOPT_MUTE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_NETRC" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_NETRC_FILE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_NEW_DIRECTORY_PERMS" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_NEW_FILE_PERMS" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_NOBODY" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_NOPROGRESS" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_NOPROXY" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_NOSIGNAL" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_PASSWDFUNCTION" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_PASSWORD" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_PORT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_POST" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_POSTFIELDS" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_POSTQUOTE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_POSTREDIR" : {
- "min" : "5.3.2",
- "max" : null
- },
- "CURLOPT_PREQUOTE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_PRIVATE" : {
- "min" : "5.2.4",
- "max" : null
- },
- "CURLOPT_PROGRESSFUNCTION" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLOPT_PROTOCOLS" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_PROXY" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_PROXYAUTH" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_PROXYPASSWORD" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_PROXYPORT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_PROXYTYPE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_PROXYUSERNAME" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_PROXYUSERPWD" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_PROXY_TRANSFER_MODE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_PUT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_QUOTE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_RANDOM_FILE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_RANGE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_READDATA" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_READFUNCTION" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_REDIR_PROTOCOLS" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_REFERER" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_RESOLVE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_RESUME_FROM" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_RETURNTRANSFER" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_RTSP_CLIENT_CSEQ" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_RTSP_REQUEST" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_RTSP_SERVER_CSEQ" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_RTSP_SESSION_ID" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_RTSP_STREAM_URI" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_RTSP_TRANSPORT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_SAFE_UPLOAD" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_SHARE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_SOCKS5_GSSAPI_NEC" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_SOCKS5_GSSAPI_SERVICE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_SSH_AUTH_TYPES" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLOPT_SSH_HOST_PUBLIC_KEY_MD5" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLOPT_SSH_KNOWNHOSTS" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_SSH_PRIVATE_KEYFILE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLOPT_SSH_PUBLIC_KEYFILE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLOPT_SSLCERT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_SSLCERTPASSWD" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_SSLCERTTYPE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_SSLENGINE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_SSLENGINE_DEFAULT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_SSLKEY" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_SSLKEYPASSWD" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_SSLKEYTYPE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_SSLVERSION" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_SSL_CIPHER_LIST" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_SSL_OPTIONS" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_SSL_SESSIONID_CACHE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_SSL_VERIFYHOST" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_SSL_VERIFYPEER" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_STDERR" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_TCP_KEEPALIVE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_TCP_KEEPIDLE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_TCP_KEEPINTVL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_TCP_NODELAY" : {
- "min" : "5.2.1",
- "max" : null
- },
- "CURLOPT_TELNETOPTIONS" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_TFTP_BLKSIZE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_TIMECONDITION" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_TIMEOUT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_TIMEOUT_MS" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_TIMEVALUE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_TLSAUTH_PASSWORD" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_TLSAUTH_TYPE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_TLSAUTH_USERNAME" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_TRANSFERTEXT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_TRANSFER_ENCODING" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_UNRESTRICTED_AUTH" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_UPLOAD" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_URL" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_USERAGENT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_USERNAME" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_USERPWD" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_USE_SSL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_VERBOSE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_WILDCARDMATCH" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLOPT_WRITEFUNCTION" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLOPT_WRITEHEADER" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLPAUSE_ALL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPAUSE_CONT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPAUSE_RECV" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPAUSE_RECV_CONT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPAUSE_SEND" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPAUSE_SEND_CONT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPROTO_ALL" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLPROTO_DICT" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLPROTO_FILE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLPROTO_FTP" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLPROTO_FTPS" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLPROTO_GOPHER" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPROTO_HTTP" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLPROTO_HTTPS" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLPROTO_IMAP" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPROTO_IMAPS" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPROTO_LDAP" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLPROTO_LDAPS" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLPROTO_POP3" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPROTO_POP3S" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPROTO_RTMP" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPROTO_RTMPE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPROTO_RTMPS" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPROTO_RTMPT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPROTO_RTMPTE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPROTO_RTMPTS" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPROTO_RTSP" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPROTO_SCP" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLPROTO_SFTP" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLPROTO_SMTP" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPROTO_SMTPS" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLPROTO_TELNET" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLPROTO_TFTP" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLPROXY_HTTP" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLPROXY_SOCKS4" : {
- "min" : "5.2.10",
- "max" : null
- },
- "CURLPROXY_SOCKS5" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURLSHOPT_NONE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLSHOPT_SHARE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLSHOPT_UNSHARE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLSSH_AUTH_ANY" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLSSH_AUTH_DEFAULT" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLSSH_AUTH_HOST" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLSSH_AUTH_KEYBOARD" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLSSH_AUTH_NONE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLSSH_AUTH_PASSWORD" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLSSH_AUTH_PUBLICKEY" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURLSSLOPT_ALLOW_BEAST" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLUSESSL_ALL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLUSESSL_CONTROL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLUSESSL_NONE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLUSESSL_TRY" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURLVERSION_NOW" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURL_FNMATCHFUNC_FAIL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_FNMATCHFUNC_MATCH" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_FNMATCHFUNC_NOMATCH" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_HTTP_VERSION_1_0" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURL_HTTP_VERSION_1_1" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURL_HTTP_VERSION_NONE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURL_IPRESOLVE_V4" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURL_IPRESOLVE_V6" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURL_IPRESOLVE_WHATEVER" : {
- "min" : "5.3.0",
- "max" : null
- },
- "CURL_LOCK_DATA_COOKIE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_LOCK_DATA_DNS" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_LOCK_DATA_SSL_SESSION" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_NETRC_IGNORED" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURL_NETRC_OPTIONAL" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURL_NETRC_REQUIRED" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURL_READFUNC_PAUSE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_RTSPREQ_ANNOUNCE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_RTSPREQ_DESCRIBE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_RTSPREQ_GET_PARAMETER" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_RTSPREQ_OPTIONS" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_RTSPREQ_PAUSE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_RTSPREQ_PLAY" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_RTSPREQ_RECEIVE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_RTSPREQ_RECORD" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_RTSPREQ_SETUP" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_RTSPREQ_SET_PARAMETER" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_RTSPREQ_TEARDOWN" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_SSLVERSION_DEFAULT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_SSLVERSION_SSLv2" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_SSLVERSION_SSLv3" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_SSLVERSION_TLSv1" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_TIMECOND_IFMODSINCE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURL_TIMECOND_IFUNMODSINCE" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURL_TIMECOND_LASTMOD" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURL_TIMECOND_NONE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_TLSAUTH_SRP" : {
- "min" : "5.5.0",
- "max" : null
- },
- "CURL_VERSION_IPV6" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURL_VERSION_KERBEROS4" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURL_VERSION_LIBZ" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURL_VERSION_SSL" : {
- "min" : "4.0.2",
- "max" : null
- },
- "CURL_WRITEFUNC_PAUSE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "DATE_ATOM" : {
- "min" : "5.1.1",
- "max" : null
- },
- "DATE_COOKIE" : {
- "min" : "5.1.1",
- "max" : null
- },
- "DATE_ISO8601" : {
- "min" : "5.1.1",
- "max" : null
- },
- "DATE_RFC1036" : {
- "min" : "5.1.1",
- "max" : null
- },
- "DATE_RFC1123" : {
- "min" : "5.1.1",
- "max" : null
- },
- "DATE_RFC2822" : {
- "min" : "5.1.1",
- "max" : null
- },
- "DATE_RFC3339" : {
- "min" : "5.1.3",
- "max" : null
- },
- "DATE_RFC822" : {
- "min" : "5.1.1",
- "max" : null
- },
- "DATE_RFC850" : {
- "min" : "5.1.1",
- "max" : null
- },
- "DATE_RSS" : {
- "min" : "5.1.1",
- "max" : null
- },
- "DATE_W3C" : {
- "min" : "5.1.1",
- "max" : null
- },
- "DAY_1" : {
- "min" : "4.1.0",
- "max" : null
- },
- "DAY_2" : {
- "min" : "4.1.0",
- "max" : null
- },
- "DAY_3" : {
- "min" : "4.1.0",
- "max" : null
- },
- "DAY_4" : {
- "min" : "4.1.0",
- "max" : null
- },
- "DAY_5" : {
- "min" : "4.1.0",
- "max" : null
- },
- "DAY_6" : {
- "min" : "4.1.0",
- "max" : null
- },
- "DAY_7" : {
- "min" : "4.1.0",
- "max" : null
- },
- "DEBUG_BACKTRACE_IGNORE_ARGS" : {
- "min" : "5.3.6",
- "max" : null
- },
- "DEBUG_BACKTRACE_PROVIDE_OBJECT" : {
- "min" : "5.3.6",
- "max" : null
- },
- "DEFAULT_INCLUDE_PATH" : {
- "min" : "4.0.0",
- "max" : null
- },
- "DIRECTORY_SEPARATOR" : {
- "min" : "4.0.6",
- "max" : null
- },
- "DNS_A" : {
- "min" : "4.0.0",
- "max" : null
- },
- "DNS_A6" : {
- "min" : "4.0.0",
- "max" : null
- },
- "DNS_AAAA" : {
- "min" : "4.0.0",
- "max" : null
- },
- "DNS_ALL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "DNS_ANY" : {
- "min" : "4.0.0",
- "max" : null
- },
- "DNS_CNAME" : {
- "min" : "4.0.0",
- "max" : null
- },
- "DNS_HINFO" : {
- "min" : "4.0.0",
- "max" : null
- },
- "DNS_MX" : {
- "min" : "4.0.0",
- "max" : null
- },
- "DNS_NAPTR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "DNS_NS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "DNS_PTR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "DNS_SOA" : {
- "min" : "4.0.0",
- "max" : null
- },
- "DNS_SRV" : {
- "min" : "4.0.0",
- "max" : null
- },
- "DNS_TXT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "D_FMT" : {
- "min" : "4.1.0",
- "max" : null
- },
- "D_T_FMT" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ENT_COMPAT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "ENT_DISALLOWED" : {
- "min" : "5.4.0",
- "max" : null
- },
- "ENT_HTML401" : {
- "min" : "5.4.0",
- "max" : null
- },
- "ENT_HTML5" : {
- "min" : "5.4.0",
- "max" : null
- },
- "ENT_IGNORE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "ENT_NOQUOTES" : {
- "min" : "4.0.0",
- "max" : null
- },
- "ENT_QUOTES" : {
- "min" : "4.0.0",
- "max" : null
- },
- "ENT_SUBSTITUTE" : {
- "min" : "5.4.0",
- "max" : null
- },
- "ENT_XHTML" : {
- "min" : "5.4.0",
- "max" : null
- },
- "ENT_XML1" : {
- "min" : "5.4.0",
- "max" : null
- },
- "ERA" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ERA_D_FMT" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ERA_D_T_FMT" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ERA_T_FMT" : {
- "min" : "4.1.0",
- "max" : null
- },
- "EXTR_IF_EXISTS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "EXTR_OVERWRITE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "EXTR_PREFIX_ALL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "EXTR_PREFIX_IF_EXISTS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "EXTR_PREFIX_INVALID" : {
- "min" : "4.0.0",
- "max" : null
- },
- "EXTR_PREFIX_SAME" : {
- "min" : "4.0.0",
- "max" : null
- },
- "EXTR_REFS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "EXTR_SKIP" : {
- "min" : "4.0.0",
- "max" : null
- },
- "E_ALL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "E_COMPILE_ERROR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "E_COMPILE_WARNING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "E_CORE_ERROR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "E_CORE_WARNING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "E_DEPRECATED" : {
- "min" : "5.3.0",
- "max" : null
- },
- "E_ERROR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "E_NOTICE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "E_PARSE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "E_RECOVERABLE_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "E_STRICT" : {
- "min" : "5.0.0",
- "max" : null
- },
- "E_USER_DEPRECATED" : {
- "min" : "5.3.0",
- "max" : null
- },
- "E_USER_ERROR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "E_USER_NOTICE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "E_USER_WARNING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "E_WARNING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FALSE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FILEINFO_COMPRESS" : {
- "min" : "4.0.0",
- "max" : "5.2.17"
- },
- "FILEINFO_CONTINUE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FILEINFO_DEVICES" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FILEINFO_MIME" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FILEINFO_MIME_ENCODING" : {
- "min" : "5.3.0",
- "max" : null
- },
- "FILEINFO_MIME_TYPE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "FILEINFO_NONE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FILEINFO_PRESERVE_ATIME" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FILEINFO_RAW" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FILEINFO_SYMLINK" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FILE_APPEND" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FILE_BINARY" : {
- "min" : "5.2.7",
- "max" : null
- },
- "FILE_IGNORE_NEW_LINES" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FILE_NO_DEFAULT_CONTEXT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FILE_SKIP_EMPTY_LINES" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FILE_TEXT" : {
- "min" : "5.2.7",
- "max" : null
- },
- "FILE_USE_INCLUDE_PATH" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FNM_CASEFOLD" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FNM_NOESCAPE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FNM_PATHNAME" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FNM_PERIOD" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FORCE_DEFLATE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FORCE_GZIP" : {
- "min" : "4.0.0",
- "max" : null
- },
- "FPE_FLTDIV" : {
- "min" : "5.3.0",
- "max" : null
- },
- "FPE_FLTINV" : {
- "min" : "5.3.0",
- "max" : null
- },
- "FPE_FLTOVF" : {
- "min" : "5.3.0",
- "max" : null
- },
- "FPE_FLTRES" : {
- "min" : "5.3.0",
- "max" : null
- },
- "FPE_FLTSUB" : {
- "min" : "5.3.0",
- "max" : null
- },
- "FPE_FLTUND" : {
- "min" : "5.3.0",
- "max" : null
- },
- "FPE_INTDIV" : {
- "min" : "5.3.0",
- "max" : null
- },
- "FPE_INTOVF" : {
- "min" : "5.3.0",
- "max" : null
- },
- "GD_BUNDLED" : {
- "min" : "4.0.0",
- "max" : null
- },
- "GD_EXTRA_VERSION" : {
- "min" : "5.2.4",
- "max" : null
- },
- "GD_MAJOR_VERSION" : {
- "min" : "5.2.4",
- "max" : null
- },
- "GD_MINOR_VERSION" : {
- "min" : "5.2.4",
- "max" : null
- },
- "GD_RELEASE_VERSION" : {
- "min" : "5.2.4",
- "max" : null
- },
- "GD_VERSION" : {
- "min" : "5.2.4",
- "max" : null
- },
- "GLOB_AVAILABLE_FLAGS" : {
- "min" : "5.2.4",
- "max" : null
- },
- "GLOB_BRACE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "GLOB_ERR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "GLOB_MARK" : {
- "min" : "4.0.0",
- "max" : null
- },
- "GLOB_NOCHECK" : {
- "min" : "4.0.0",
- "max" : null
- },
- "GLOB_NOESCAPE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "GLOB_NOSORT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "GLOB_ONLYDIR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "GRAPHEME_EXTR_COUNT" : {
- "min" : "5.2.4",
- "max" : null
- },
- "GRAPHEME_EXTR_MAXBYTES" : {
- "min" : "5.2.4",
- "max" : null
- },
- "GRAPHEME_EXTR_MAXCHARS" : {
- "min" : "5.2.4",
- "max" : null
- },
- "HTML_ENTITIES" : {
- "min" : "4.0.0",
- "max" : null
- },
- "HTML_SPECIALCHARS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IDNA_ALLOW_UNASSIGNED" : {
- "min" : "5.2.4",
- "max" : null
- },
- "IDNA_DEFAULT" : {
- "min" : "5.2.4",
- "max" : null
- },
- "IDNA_USE_STD3_RULES" : {
- "min" : "5.2.4",
- "max" : null
- },
- "ILL_BADSTK" : {
- "min" : "5.3.0",
- "max" : null
- },
- "ILL_COPROC" : {
- "min" : "5.3.0",
- "max" : null
- },
- "ILL_ILLADR" : {
- "min" : "5.3.0",
- "max" : null
- },
- "ILL_ILLOPC" : {
- "min" : "5.3.0",
- "max" : null
- },
- "ILL_ILLOPN" : {
- "min" : "5.3.0",
- "max" : null
- },
- "ILL_ILLTRP" : {
- "min" : "5.3.0",
- "max" : null
- },
- "ILL_PRVOPC" : {
- "min" : "5.3.0",
- "max" : null
- },
- "ILL_PRVREG" : {
- "min" : "5.3.0",
- "max" : null
- },
- "IMAGETYPE_BMP" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_COUNT" : {
- "min" : "5.3.0",
- "max" : null
- },
- "IMAGETYPE_GIF" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_ICO" : {
- "min" : "5.3.0",
- "max" : null
- },
- "IMAGETYPE_IFF" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_JB2" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_JP2" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_JPC" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_JPEG" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_JPEG2000" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_JPX" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_PNG" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_PSD" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_SWC" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_SWF" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_TIFF_II" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_TIFF_MM" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_UNKNOWN" : {
- "min" : "5.3.0",
- "max" : null
- },
- "IMAGETYPE_WBMP" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMAGETYPE_XBM" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_AFFINE_ROTATE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_AFFINE_SCALE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_AFFINE_SHEAR_HORIZONTAL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_AFFINE_SHEAR_VERTICAL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_AFFINE_TRANSLATE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_ARC_CHORD" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_ARC_EDGED" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_ARC_NOFILL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_ARC_PIE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_ARC_ROUNDED" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_BELL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_BESSEL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_BICUBIC" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_BICUBIC_FIXED" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_BILINEAR_FIXED" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_BLACKMAN" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_BOX" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_BSPLINE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_CATMULLROM" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_COLOR_BRUSHED" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_COLOR_STYLED" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_COLOR_STYLEDBRUSHED" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_COLOR_TILED" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_COLOR_TRANSPARENT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_CROP_BLACK" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_CROP_DEFAULT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_CROP_SIDES" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_CROP_THRESHOLD" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_CROP_TRANSPARENT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_CROP_WHITE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_EFFECT_ALPHABLEND" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_EFFECT_NORMAL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_EFFECT_OVERLAY" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_EFFECT_REPLACE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_FILTER_BRIGHTNESS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_FILTER_COLORIZE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_FILTER_CONTRAST" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_FILTER_EDGEDETECT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_FILTER_EMBOSS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_FILTER_GAUSSIAN_BLUR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_FILTER_GRAYSCALE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_FILTER_MEAN_REMOVAL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_FILTER_NEGATE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_FILTER_PIXELATE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "IMG_FILTER_SELECTIVE_BLUR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_FILTER_SMOOTH" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_FLIP_BOTH" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_FLIP_HORIZONTAL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_FLIP_VERTICAL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_GAUSSIAN" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_GD2_COMPRESSED" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_GD2_RAW" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_GENERALIZED_CUBIC" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_GIF" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_HAMMING" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_HANNING" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_HERMITE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_JPEG" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_JPG" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_MITCHELL" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_NEAREST_NEIGHBOUR" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_PNG" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_POWER" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_QUADRATIC" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_SINC" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_TRIANGLE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_WBMP" : {
- "min" : "4.0.0",
- "max" : null
- },
- "IMG_WEIGHTED4" : {
- "min" : "5.5.0",
- "max" : null
- },
- "IMG_XPM" : {
- "min" : "4.0.0",
- "max" : null
- },
- "INF" : {
- "min" : "4.0.0",
- "max" : null
- },
- "INFO_ALL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "INFO_CONFIGURATION" : {
- "min" : "4.0.0",
- "max" : null
- },
- "INFO_CREDITS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "INFO_ENVIRONMENT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "INFO_GENERAL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "INFO_LICENSE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "INFO_MODULES" : {
- "min" : "4.0.0",
- "max" : null
- },
- "INFO_VARIABLES" : {
- "min" : "4.0.0",
- "max" : null
- },
- "INI_ALL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "INI_PERDIR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "INI_SCANNER_NORMAL" : {
- "min" : "5.3.0",
- "max" : null
- },
- "INI_SCANNER_RAW" : {
- "min" : "5.3.0",
- "max" : null
- },
- "INI_SYSTEM" : {
- "min" : "4.0.0",
- "max" : null
- },
- "INI_USER" : {
- "min" : "4.0.0",
- "max" : null
- },
- "INTL_ICU_VERSION" : {
- "min" : "5.3.7",
- "max" : null
- },
- "INTL_IDNA_VARIANT_2003" : {
- "min" : "5.4.0",
- "max" : null
- },
- "INTL_MAX_LOCALE_LEN" : {
- "min" : "5.2.4",
- "max" : null
- },
- "JSON_BIGINT_AS_STRING" : {
- "min" : "5.4.0",
- "max" : null
- },
- "JSON_ERROR_CTRL_CHAR" : {
- "min" : "5.3.0",
- "max" : null
- },
- "JSON_ERROR_DEPTH" : {
- "min" : "5.3.0",
- "max" : null
- },
- "JSON_ERROR_INF_OR_NAN" : {
- "min" : "5.5.0",
- "max" : null
- },
- "JSON_ERROR_NONE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "JSON_ERROR_RECURSION" : {
- "min" : "5.5.0",
- "max" : null
- },
- "JSON_ERROR_STATE_MISMATCH" : {
- "min" : "5.3.0",
- "max" : null
- },
- "JSON_ERROR_SYNTAX" : {
- "min" : "5.3.0",
- "max" : null
- },
- "JSON_ERROR_UNSUPPORTED_TYPE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "JSON_ERROR_UTF8" : {
- "min" : "5.3.3",
- "max" : null
- },
- "JSON_FORCE_OBJECT" : {
- "min" : "5.3.0",
- "max" : null
- },
- "JSON_HEX_AMP" : {
- "min" : "5.3.0",
- "max" : null
- },
- "JSON_HEX_APOS" : {
- "min" : "5.3.0",
- "max" : null
- },
- "JSON_HEX_QUOT" : {
- "min" : "5.3.0",
- "max" : null
- },
- "JSON_HEX_TAG" : {
- "min" : "5.3.0",
- "max" : null
- },
- "JSON_NUMERIC_CHECK" : {
- "min" : "5.3.3",
- "max" : null
- },
- "JSON_OBJECT_AS_ARRAY" : {
- "min" : "5.4.0",
- "max" : null
- },
- "JSON_PARTIAL_OUTPUT_ON_ERROR" : {
- "min" : "5.5.0",
- "max" : null
- },
- "JSON_PRETTY_PRINT" : {
- "min" : "5.4.0",
- "max" : null
- },
- "JSON_UNESCAPED_SLASHES" : {
- "min" : "5.4.0",
- "max" : null
- },
- "JSON_UNESCAPED_UNICODE" : {
- "min" : "5.4.0",
- "max" : null
- },
- "LC_ALL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LC_COLLATE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LC_CTYPE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LC_MESSAGES" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LC_MONETARY" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LC_NUMERIC" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LC_TIME" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_DEREF_ALWAYS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_DEREF_FINDING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_DEREF_NEVER" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_DEREF_SEARCHING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_MODIFY_BATCH_ADD" : {
- "min" : "5.4.26",
- "max" : null
- },
- "LDAP_MODIFY_BATCH_ATTRIB" : {
- "min" : "5.4.26",
- "max" : null
- },
- "LDAP_MODIFY_BATCH_MODTYPE" : {
- "min" : "5.4.26",
- "max" : null
- },
- "LDAP_MODIFY_BATCH_REMOVE" : {
- "min" : "5.4.26",
- "max" : null
- },
- "LDAP_MODIFY_BATCH_REMOVE_ALL" : {
- "min" : "5.4.26",
- "max" : null
- },
- "LDAP_MODIFY_BATCH_REPLACE" : {
- "min" : "5.4.26",
- "max" : null
- },
- "LDAP_MODIFY_BATCH_VALUES" : {
- "min" : "5.4.26",
- "max" : null
- },
- "LDAP_OPT_CLIENT_CONTROLS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_DEBUG_LEVEL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_DEREF" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_ERROR_NUMBER" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_ERROR_STRING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_HOST_NAME" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_MATCHED_DN" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_NETWORK_TIMEOUT" : {
- "min" : "5.3.0",
- "max" : null
- },
- "LDAP_OPT_PROTOCOL_VERSION" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_REFERRALS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_RESTART" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_SERVER_CONTROLS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_SIZELIMIT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_TIMELIMIT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_X_SASL_AUTHCID" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_X_SASL_AUTHZID" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_X_SASL_MECH" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LDAP_OPT_X_SASL_REALM" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LIBXML_COMPACT" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_DOTTED_VERSION" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_DTDATTR" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_DTDLOAD" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_DTDVALID" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_ERR_ERROR" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_ERR_FATAL" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_ERR_NONE" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_ERR_WARNING" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_HTML_NODEFDTD" : {
- "min" : "5.4.0",
- "max" : null
- },
- "LIBXML_HTML_NOIMPLIED" : {
- "min" : "5.4.0",
- "max" : null
- },
- "LIBXML_LOADED_VERSION" : {
- "min" : "5.3.0",
- "max" : null
- },
- "LIBXML_NOBLANKS" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_NOCDATA" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_NOEMPTYTAG" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_NOENT" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_NOERROR" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_NONET" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_NOWARNING" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_NOXMLDECL" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_NSCLEAN" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_PARSEHUGE" : {
- "min" : "5.2.12",
- "max" : null
- },
- "LIBXML_PEDANTIC" : {
- "min" : "5.4.0",
- "max" : null
- },
- "LIBXML_SCHEMA_CREATE" : {
- "min" : "5.5.2",
- "max" : null
- },
- "LIBXML_VERSION" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LIBXML_XINCLUDE" : {
- "min" : "5.1.0",
- "max" : null
- },
- "LOCK_EX" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOCK_NB" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOCK_SH" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOCK_UN" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_ALERT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_AUTH" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_AUTHPRIV" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_CONS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_CRIT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_CRON" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_DAEMON" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_DEBUG" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_EMERG" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_ERR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_INFO" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_KERN" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_LOCAL0" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_LOCAL1" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_LOCAL2" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_LOCAL3" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_LOCAL4" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_LOCAL5" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_LOCAL6" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_LOCAL7" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_LPR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_MAIL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_NDELAY" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_NEWS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_NOTICE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_NOWAIT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_ODELAY" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_PERROR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_PID" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_SYSLOG" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_USER" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_UUCP" : {
- "min" : "4.0.0",
- "max" : null
- },
- "LOG_WARNING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "MB_CASE_LOWER" : {
- "min" : "4.0.6",
- "max" : null
- },
- "MB_CASE_TITLE" : {
- "min" : "4.0.6",
- "max" : null
- },
- "MB_CASE_UPPER" : {
- "min" : "4.0.6",
- "max" : null
- },
- "MB_OVERLOAD_MAIL" : {
- "min" : "4.0.6",
- "max" : null
- },
- "MB_OVERLOAD_REGEX" : {
- "min" : "4.0.6",
- "max" : null
- },
- "MB_OVERLOAD_STRING" : {
- "min" : "4.0.6",
- "max" : null
- },
- "MON_1" : {
- "min" : "4.1.0",
- "max" : null
- },
- "MON_10" : {
- "min" : "4.1.0",
- "max" : null
- },
- "MON_11" : {
- "min" : "4.1.0",
- "max" : null
- },
- "MON_12" : {
- "min" : "4.1.0",
- "max" : null
- },
- "MON_2" : {
- "min" : "4.1.0",
- "max" : null
- },
- "MON_3" : {
- "min" : "4.1.0",
- "max" : null
- },
- "MON_4" : {
- "min" : "4.1.0",
- "max" : null
- },
- "MON_5" : {
- "min" : "4.1.0",
- "max" : null
- },
- "MON_6" : {
- "min" : "4.1.0",
- "max" : null
- },
- "MON_7" : {
- "min" : "4.1.0",
- "max" : null
- },
- "MON_8" : {
- "min" : "4.1.0",
- "max" : null
- },
- "MON_9" : {
- "min" : "4.1.0",
- "max" : null
- },
- "MYSQLI_ASSOC" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_ASYNC" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_AUTO_INCREMENT_FLAG" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_BINARY_FLAG" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_BLOB_FLAG" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_BOTH" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_CLIENT_COMPRESS" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_CLIENT_FOUND_ROWS" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_CLIENT_IGNORE_SPACE" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_CLIENT_INTERACTIVE" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_CLIENT_NO_SCHEMA" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_CLIENT_SSL" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_CURSOR_TYPE_FOR_UPDATE" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_CURSOR_TYPE_NO_CURSOR" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_CURSOR_TYPE_READ_ONLY" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_CURSOR_TYPE_SCROLLABLE" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_DATA_TRUNCATED" : {
- "min" : "5.1.0",
- "max" : null
- },
- "MYSQLI_DEBUG_TRACE_ENABLED" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_ENUM_FLAG" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_GROUP_FLAG" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_INIT_COMMAND" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_MULTIPLE_KEY_FLAG" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_NOT_NULL_FLAG" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_NO_DATA" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_NO_DEFAULT_VALUE_FLAG" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_NUM" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_NUM_FLAG" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_ON_UPDATE_NOW_FLAG" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS" : {
- "min" : "5.4.12",
- "max" : null
- },
- "MYSQLI_OPT_CONNECT_TIMEOUT" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_OPT_INT_AND_FLOAT_NATIVE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_OPT_LOCAL_INFILE" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_OPT_NET_CMD_BUFFER_SIZE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_OPT_NET_READ_BUFFER_SIZE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_OPT_SSL_VERIFY_SERVER_CERT" : {
- "min" : "5.3.4",
- "max" : null
- },
- "MYSQLI_PART_KEY_FLAG" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_PRI_KEY_FLAG" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_READ_DEFAULT_FILE" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_READ_DEFAULT_GROUP" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_REFRESH_BACKUP_LOG" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_REFRESH_GRANT" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_REFRESH_HOSTS" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_REFRESH_LOG" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_REFRESH_MASTER" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_REFRESH_SLAVE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_REFRESH_STATUS" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_REFRESH_TABLES" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_REFRESH_THREADS" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_REPORT_ALL" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_REPORT_ERROR" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_REPORT_INDEX" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_REPORT_OFF" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_REPORT_STRICT" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_RPL_ADMIN" : {
- "min" : "5.0.0",
- "max" : "5.2.17"
- },
- "MYSQLI_RPL_MASTER" : {
- "min" : "5.0.0",
- "max" : "5.2.17"
- },
- "MYSQLI_RPL_SLAVE" : {
- "min" : "5.0.0",
- "max" : "5.2.17"
- },
- "MYSQLI_SERVER_PS_OUT_PARAMS" : {
- "min" : "5.3.4",
- "max" : null
- },
- "MYSQLI_SERVER_PUBLIC_KEY" : {
- "min" : "5.5.0",
- "max" : null
- },
- "MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_SERVER_QUERY_NO_INDEX_USED" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_SERVER_QUERY_WAS_SLOW" : {
- "min" : "5.3.0",
- "max" : null
- },
- "MYSQLI_SET_CHARSET_DIR" : {
- "min" : "5.3.4",
- "max" : null
- },
- "MYSQLI_SET_CHARSET_NAME" : {
- "min" : "5.2.5",
- "max" : null
- },
- "MYSQLI_SET_FLAG" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_STMT_ATTR_CURSOR_TYPE" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_STMT_ATTR_PREFETCH_ROWS" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_STORE_RESULT" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TIMESTAMP_FLAG" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TRANS_COR_AND_CHAIN" : {
- "min" : "5.5.0",
- "max" : null
- },
- "MYSQLI_TRANS_COR_AND_NO_CHAIN" : {
- "min" : "5.5.0",
- "max" : null
- },
- "MYSQLI_TRANS_COR_NO_RELEASE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "MYSQLI_TRANS_COR_RELEASE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "MYSQLI_TRANS_START_READ_ONLY" : {
- "min" : "5.5.0",
- "max" : null
- },
- "MYSQLI_TRANS_START_READ_WRITE" : {
- "min" : "5.5.0",
- "max" : null
- },
- "MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "MYSQLI_TYPE_BIT" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_BLOB" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_CHAR" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_DATE" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_DATETIME" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_DECIMAL" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_DOUBLE" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_ENUM" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_FLOAT" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_GEOMETRY" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_INT24" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_INTERVAL" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_LONG" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_LONGLONG" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_LONG_BLOB" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_MEDIUM_BLOB" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_NEWDATE" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_NEWDECIMAL" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_NULL" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_SET" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_SHORT" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_STRING" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_TIME" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_TIMESTAMP" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_TINY" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_TINY_BLOB" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_VAR_STRING" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_TYPE_YEAR" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_UNIQUE_KEY_FLAG" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_UNSIGNED_FLAG" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_USE_RESULT" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQLI_ZEROFILL_FLAG" : {
- "min" : "5.0.0",
- "max" : null
- },
- "MYSQL_ASSOC" : {
- "min" : "4.0.0",
- "max" : null
- },
- "MYSQL_BOTH" : {
- "min" : "4.0.0",
- "max" : null
- },
- "MYSQL_CLIENT_COMPRESS" : {
- "min" : "4.3.0",
- "max" : null
- },
- "MYSQL_CLIENT_IGNORE_SPACE" : {
- "min" : "4.3.0",
- "max" : null
- },
- "MYSQL_CLIENT_INTERACTIVE" : {
- "min" : "4.3.0",
- "max" : null
- },
- "MYSQL_CLIENT_SSL" : {
- "min" : "4.3.0",
- "max" : null
- },
- "MYSQL_NUM" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_1_PI" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_2_PI" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_2_SQRTPI" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_E" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_EULER" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_LN10" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_LN2" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_LNPI" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_LOG10E" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_LOG2E" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_PI" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_PI_2" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_PI_4" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_SQRT1_2" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_SQRT2" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_SQRT3" : {
- "min" : "4.0.0",
- "max" : null
- },
- "M_SQRTPI" : {
- "min" : "4.0.0",
- "max" : null
- },
- "NAN" : {
- "min" : "4.0.0",
- "max" : null
- },
- "NOEXPR" : {
- "min" : "4.1.0",
- "max" : null
- },
- "NULL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PASSWORD_BCRYPT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "PASSWORD_BCRYPT_DEFAULT_COST" : {
- "min" : "5.5.0",
- "max" : null
- },
- "PASSWORD_DEFAULT" : {
- "min" : "5.5.0",
- "max" : null
- },
- "PATHINFO_BASENAME" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PATHINFO_DIRNAME" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PATHINFO_EXTENSION" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PATHINFO_FILENAME" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PATH_SEPARATOR" : {
- "min" : "4.3.0",
- "max" : null
- },
- "PCNTL_E2BIG" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_EACCES" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_EAGAIN" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_ECHILD" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_EFAULT" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_EINTR" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_EINVAL" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_EIO" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_EISDIR" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_ELIBBAD" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_ELOOP" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_EMFILE" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_ENAMETOOLONG" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_ENFILE" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_ENOENT" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_ENOEXEC" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_ENOMEM" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_ENOTDIR" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_EPERM" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_ESRCH" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCNTL_ETXTBSY" : {
- "min" : "5.3.4",
- "max" : null
- },
- "PCRE_VERSION" : {
- "min" : "5.2.4",
- "max" : null
- },
- "PEAR_EXTENSION_DIR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PEAR_INSTALL_DIR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_BINARY" : {
- "min" : "5.4.0",
- "max" : null
- },
- "PHP_BINDIR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_CONFIG_FILE_PATH" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_CONFIG_FILE_SCAN_DIR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_DATADIR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_DEBUG" : {
- "min" : "5.2.7",
- "max" : null
- },
- "PHP_EOL" : {
- "min" : "4.3.10",
- "max" : null
- },
- "PHP_EXTENSION_DIR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_EXTRA_VERSION" : {
- "min" : "5.2.7",
- "max" : null
- },
- "PHP_INT_MAX" : {
- "min" : "4.4.0",
- "max" : null
- },
- "PHP_INT_SIZE" : {
- "min" : "4.4.0",
- "max" : null
- },
- "PHP_LIBDIR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_LOCALSTATEDIR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_MAJOR_VERSION" : {
- "min" : "5.2.7",
- "max" : null
- },
- "PHP_MANDIR" : {
- "min" : "5.3.7",
- "max" : null
- },
- "PHP_MAXPATHLEN" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_MINOR_VERSION" : {
- "min" : "5.2.7",
- "max" : null
- },
- "PHP_OS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_OUTPUT_HANDLER_CLEAN" : {
- "min" : "5.4.0",
- "max" : null
- },
- "PHP_OUTPUT_HANDLER_CLEANABLE" : {
- "min" : "5.4.0",
- "max" : null
- },
- "PHP_OUTPUT_HANDLER_CONT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_OUTPUT_HANDLER_DISABLED" : {
- "min" : "5.4.0",
- "max" : null
- },
- "PHP_OUTPUT_HANDLER_END" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_OUTPUT_HANDLER_FINAL" : {
- "min" : "5.4.0",
- "max" : null
- },
- "PHP_OUTPUT_HANDLER_FLUSH" : {
- "min" : "5.4.0",
- "max" : null
- },
- "PHP_OUTPUT_HANDLER_FLUSHABLE" : {
- "min" : "5.4.0",
- "max" : null
- },
- "PHP_OUTPUT_HANDLER_REMOVABLE" : {
- "min" : "5.4.0",
- "max" : null
- },
- "PHP_OUTPUT_HANDLER_START" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_OUTPUT_HANDLER_STARTED" : {
- "min" : "5.4.0",
- "max" : null
- },
- "PHP_OUTPUT_HANDLER_STDFLAGS" : {
- "min" : "5.4.0",
- "max" : null
- },
- "PHP_OUTPUT_HANDLER_WRITE" : {
- "min" : "5.4.0",
- "max" : null
- },
- "PHP_PREFIX" : {
- "min" : "4.3.0",
- "max" : null
- },
- "PHP_QUERY_RFC1738" : {
- "min" : "5.4.0",
- "max" : null
- },
- "PHP_QUERY_RFC3986" : {
- "min" : "5.4.0",
- "max" : null
- },
- "PHP_RELEASE_VERSION" : {
- "min" : "5.2.7",
- "max" : null
- },
- "PHP_ROUND_HALF_DOWN" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_ROUND_HALF_EVEN" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_ROUND_HALF_ODD" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_ROUND_HALF_UP" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_SAPI" : {
- "min" : "4.2.0",
- "max" : null
- },
- "PHP_SHLIB_SUFFIX" : {
- "min" : "4.3.0",
- "max" : null
- },
- "PHP_SYSCONFDIR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_URL_FRAGMENT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_URL_HOST" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_URL_PASS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_URL_PATH" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_URL_PORT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_URL_QUERY" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_URL_SCHEME" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_URL_USER" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_VERSION" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PHP_VERSION_ID" : {
- "min" : "5.2.7",
- "max" : null
- },
- "PHP_WINDOWS_NT_DOMAIN_CONTROLLER" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_WINDOWS_NT_SERVER" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_WINDOWS_NT_WORKSTATION" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_WINDOWS_VERSION_BUILD" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_WINDOWS_VERSION_MAJOR" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_WINDOWS_VERSION_MINOR" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_WINDOWS_VERSION_PLATFORM" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_WINDOWS_VERSION_PRODUCTTYPE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_WINDOWS_VERSION_SP_MAJOR" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_WINDOWS_VERSION_SP_MINOR" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_WINDOWS_VERSION_SUITEMASK" : {
- "min" : "5.3.0",
- "max" : null
- },
- "PHP_ZTS" : {
- "min" : "5.2.7",
- "max" : null
- },
- "PM_STR" : {
- "min" : "4.1.0",
- "max" : null
- },
- "PNG_ALL_FILTERS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PNG_FILTER_AVG" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PNG_FILTER_NONE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PNG_FILTER_PAETH" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PNG_FILTER_SUB" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PNG_FILTER_UP" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PNG_NO_FILTER" : {
- "min" : "4.0.0",
- "max" : null
- },
- "POLL_ERR" : {
- "min" : "5.3.0",
- "max" : null
- },
- "POLL_HUP" : {
- "min" : "5.3.0",
- "max" : null
- },
- "POLL_IN" : {
- "min" : "5.3.0",
- "max" : null
- },
- "POLL_MSG" : {
- "min" : "5.3.0",
- "max" : null
- },
- "POLL_OUT" : {
- "min" : "5.3.0",
- "max" : null
- },
- "POLL_PRI" : {
- "min" : "5.3.0",
- "max" : null
- },
- "POSIX_F_OK" : {
- "min" : "5.1.0",
- "max" : null
- },
- "POSIX_R_OK" : {
- "min" : "5.1.0",
- "max" : null
- },
- "POSIX_S_IFBLK" : {
- "min" : "5.1.0",
- "max" : null
- },
- "POSIX_S_IFCHR" : {
- "min" : "5.1.0",
- "max" : null
- },
- "POSIX_S_IFIFO" : {
- "min" : "5.1.0",
- "max" : null
- },
- "POSIX_S_IFREG" : {
- "min" : "5.1.0",
- "max" : null
- },
- "POSIX_S_IFSOCK" : {
- "min" : "5.1.0",
- "max" : null
- },
- "POSIX_W_OK" : {
- "min" : "5.1.0",
- "max" : null
- },
- "POSIX_X_OK" : {
- "min" : "5.1.0",
- "max" : null
- },
- "PREG_BACKTRACK_LIMIT_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "PREG_BAD_UTF8_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "PREG_BAD_UTF8_OFFSET_ERROR" : {
- "min" : "5.2.9",
- "max" : null
- },
- "PREG_GREP_INVERT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PREG_INTERNAL_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "PREG_NO_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "PREG_OFFSET_CAPTURE" : {
- "min" : "4.3.0",
- "max" : null
- },
- "PREG_PATTERN_ORDER" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PREG_RECURSION_LIMIT_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "PREG_SET_ORDER" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PREG_SPLIT_DELIM_CAPTURE" : {
- "min" : "4.0.5",
- "max" : null
- },
- "PREG_SPLIT_NO_EMPTY" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PREG_SPLIT_OFFSET_CAPTURE" : {
- "min" : "4.3.0",
- "max" : null
- },
- "PRIO_PGRP" : {
- "min" : "5.0.0",
- "max" : null
- },
- "PRIO_PROCESS" : {
- "min" : "5.0.0",
- "max" : null
- },
- "PRIO_USER" : {
- "min" : "5.0.0",
- "max" : null
- },
- "PSFS_ERR_FATAL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PSFS_FEED_ME" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PSFS_FLAG_FLUSH_CLOSE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PSFS_FLAG_FLUSH_INC" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PSFS_FLAG_NORMAL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "PSFS_PASS_ON" : {
- "min" : "4.0.0",
- "max" : null
- },
- "RADIXCHAR" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SCANDIR_SORT_ASCENDING" : {
- "min" : "5.4.0",
- "max" : null
- },
- "SCANDIR_SORT_DESCENDING" : {
- "min" : "5.4.0",
- "max" : null
- },
- "SCANDIR_SORT_NONE" : {
- "min" : "5.4.0",
- "max" : null
- },
- "SEEK_CUR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "SEEK_END" : {
- "min" : "4.0.0",
- "max" : null
- },
- "SEEK_SET" : {
- "min" : "4.0.0",
- "max" : null
- },
- "SEGV_ACCERR" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SEGV_MAPERR" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SIGABRT" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGALRM" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGBABY" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGBUS" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGCHLD" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGCLD" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGCONT" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGFPE" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGHUP" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGILL" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGINT" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGIO" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGIOT" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGKILL" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGPIPE" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGPOLL" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGPROF" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGPWR" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGQUIT" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGSEGV" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGSTKFLT" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGSTOP" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGSYS" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGTERM" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGTRAP" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGTSTP" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGTTIN" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGTTOU" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGURG" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGUSR1" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGUSR2" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGVTALRM" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGWINCH" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGXCPU" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIGXFSZ" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIG_BLOCK" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SIG_DFL" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIG_ERR" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIG_IGN" : {
- "min" : "4.1.0",
- "max" : null
- },
- "SIG_SETMASK" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SIG_UNBLOCK" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SI_ASYNCIO" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SI_KERNEL" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SI_MESGQ" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SI_NOINFO" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SI_QUEUE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SI_SIGIO" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SI_TIMER" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SI_TKILL" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SI_USER" : {
- "min" : "5.3.0",
- "max" : null
- },
- "SORT_ASC" : {
- "min" : "4.0.0",
- "max" : null
- },
- "SORT_DESC" : {
- "min" : "4.0.0",
- "max" : null
- },
- "SORT_FLAG_CASE" : {
- "min" : "5.4.0",
- "max" : null
- },
- "SORT_LOCALE_STRING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "SORT_NATURAL" : {
- "min" : "5.4.0",
- "max" : null
- },
- "SORT_NUMERIC" : {
- "min" : "4.0.0",
- "max" : null
- },
- "SORT_REGULAR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "SORT_STRING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STDERR" : {
- "min" : "4.3.0",
- "max" : null
- },
- "STDIN" : {
- "min" : "4.3.0",
- "max" : null
- },
- "STDOUT" : {
- "min" : "4.3.0",
- "max" : null
- },
- "STREAM_BUFFER_FULL" : {
- "min" : "5.3.0",
- "max" : null
- },
- "STREAM_BUFFER_LINE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "STREAM_BUFFER_NONE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "STREAM_CAST_AS_STREAM" : {
- "min" : "5.3.0",
- "max" : null
- },
- "STREAM_CAST_FOR_SELECT" : {
- "min" : "5.3.0",
- "max" : null
- },
- "STREAM_CLIENT_ASYNC_CONNECT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_CLIENT_CONNECT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_CLIENT_PERSISTENT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_CRYPTO_METHOD_SSLv23_CLIENT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_CRYPTO_METHOD_SSLv23_SERVER" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_CRYPTO_METHOD_SSLv2_CLIENT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_CRYPTO_METHOD_SSLv2_SERVER" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_CRYPTO_METHOD_SSLv3_CLIENT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_CRYPTO_METHOD_SSLv3_SERVER" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_CRYPTO_METHOD_TLS_CLIENT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_CRYPTO_METHOD_TLS_SERVER" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_ENFORCE_SAFE_MODE" : {
- "min" : "4.0.0",
- "max" : "5.3.28"
- },
- "STREAM_FILTER_ALL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_FILTER_READ" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_FILTER_WRITE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_IGNORE_URL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_IPPROTO_ICMP" : {
- "min" : "5.1.0",
- "max" : null
- },
- "STREAM_IPPROTO_IP" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_IPPROTO_RAW" : {
- "min" : "5.1.0",
- "max" : null
- },
- "STREAM_IPPROTO_TCP" : {
- "min" : "5.1.0",
- "max" : null
- },
- "STREAM_IPPROTO_UDP" : {
- "min" : "5.1.0",
- "max" : null
- },
- "STREAM_IS_URL" : {
- "min" : "5.2.4",
- "max" : null
- },
- "STREAM_META_ACCESS" : {
- "min" : "5.4.0",
- "max" : null
- },
- "STREAM_META_GROUP" : {
- "min" : "5.4.0",
- "max" : null
- },
- "STREAM_META_GROUP_NAME" : {
- "min" : "5.4.0",
- "max" : null
- },
- "STREAM_META_OWNER" : {
- "min" : "5.4.0",
- "max" : null
- },
- "STREAM_META_OWNER_NAME" : {
- "min" : "5.4.0",
- "max" : null
- },
- "STREAM_META_TOUCH" : {
- "min" : "5.4.0",
- "max" : null
- },
- "STREAM_MKDIR_RECURSIVE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_MUST_SEEK" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_NOTIFY_AUTH_REQUIRED" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_NOTIFY_AUTH_RESULT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_NOTIFY_COMPLETED" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_NOTIFY_CONNECT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_NOTIFY_FAILURE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_NOTIFY_FILE_SIZE_IS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_NOTIFY_MIME_TYPE_IS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_NOTIFY_PROGRESS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_NOTIFY_REDIRECTED" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_NOTIFY_RESOLVE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_NOTIFY_SEVERITY_ERR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_NOTIFY_SEVERITY_INFO" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_NOTIFY_SEVERITY_WARN" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_OOB" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_OPTION_BLOCKING" : {
- "min" : "5.3.0",
- "max" : null
- },
- "STREAM_OPTION_READ_BUFFER" : {
- "min" : "5.3.0",
- "max" : null
- },
- "STREAM_OPTION_READ_TIMEOUT" : {
- "min" : "5.3.0",
- "max" : null
- },
- "STREAM_OPTION_WRITE_BUFFER" : {
- "min" : "5.3.0",
- "max" : null
- },
- "STREAM_PEEK" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_PF_INET" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_PF_INET6" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_PF_UNIX" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_REPORT_ERRORS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_SERVER_BIND" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_SERVER_LISTEN" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_SHUT_RD" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_SHUT_RDWR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_SHUT_WR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_SOCK_DGRAM" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_SOCK_RAW" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_SOCK_RDM" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_SOCK_SEQPACKET" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_SOCK_STREAM" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_URL_STAT_LINK" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_URL_STAT_QUIET" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STREAM_USE_PATH" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STR_PAD_BOTH" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STR_PAD_LEFT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "STR_PAD_RIGHT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "SUNFUNCS_RET_DOUBLE" : {
- "min" : "5.1.2",
- "max" : null
- },
- "SUNFUNCS_RET_STRING" : {
- "min" : "5.1.2",
- "max" : null
- },
- "SUNFUNCS_RET_TIMESTAMP" : {
- "min" : "5.1.2",
- "max" : null
- },
- "THOUSEP" : {
- "min" : "4.1.0",
- "max" : null
- },
- "TRAP_BRKPT" : {
- "min" : "5.3.0",
- "max" : null
- },
- "TRAP_TRACE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "TRUE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "T_FMT" : {
- "min" : "4.1.0",
- "max" : null
- },
- "T_FMT_AMPM" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ULOC_ACTUAL_LOCALE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "ULOC_VALID_LOCALE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "UPLOAD_ERR_CANT_WRITE" : {
- "min" : "5.1.0",
- "max" : null
- },
- "UPLOAD_ERR_EXTENSION" : {
- "min" : "5.2.0",
- "max" : null
- },
- "UPLOAD_ERR_FORM_SIZE" : {
- "min" : "4.3.0",
- "max" : null
- },
- "UPLOAD_ERR_INI_SIZE" : {
- "min" : "4.3.0",
- "max" : null
- },
- "UPLOAD_ERR_NO_FILE" : {
- "min" : "4.3.0",
- "max" : null
- },
- "UPLOAD_ERR_NO_TMP_DIR" : {
- "min" : "4.3.10",
- "max" : null
- },
- "UPLOAD_ERR_OK" : {
- "min" : "4.3.0",
- "max" : null
- },
- "UPLOAD_ERR_PARTIAL" : {
- "min" : "4.3.0",
- "max" : null
- },
- "U_AMBIGUOUS_ALIAS_WARNING" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BAD_VARIABLE_DEFINITION" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_ASSIGN_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_ERROR_LIMIT" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_ERROR_START" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_HEX_DIGITS_EXPECTED" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_INIT_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_INTERNAL_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_MALFORMED_RULE_TAG" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_MISMATCHED_PAREN" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_NEW_LINE_IN_QUOTED_STRING" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_RULE_EMPTY_SET" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_RULE_SYNTAX" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_SEMICOLON_EXPECTED" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_UNCLOSED_SET" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_UNDEFINED_VARIABLE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_UNRECOGNIZED_OPTION" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BRK_VARIABLE_REDFINITION" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_BUFFER_OVERFLOW_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_CE_NOT_FOUND_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_COLLATOR_VERSION_MISMATCH" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_DIFFERENT_UCA_VERSION" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_ENUM_OUT_OF_SYNC_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_ERROR_LIMIT" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_ERROR_WARNING_LIMIT" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_ERROR_WARNING_START" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_FILE_ACCESS_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_FMT_PARSE_ERROR_LIMIT" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_FMT_PARSE_ERROR_START" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_ILLEGAL_ARGUMENT_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_ILLEGAL_CHARACTER" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_ILLEGAL_CHAR_FOUND" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_ILLEGAL_CHAR_IN_SEGMENT" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_ILLEGAL_ESCAPE_SEQUENCE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_ILLEGAL_PAD_POSITION" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_INDEX_OUTOFBOUNDS_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_INTERNAL_PROGRAM_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_INTERNAL_TRANSLITERATOR_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_INVALID_CHAR_FOUND" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_INVALID_FORMAT_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_INVALID_FUNCTION" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_INVALID_ID" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_INVALID_PROPERTY_PATTERN" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_INVALID_RBT_SYNTAX" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_INVALID_STATE_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_INVALID_TABLE_FILE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_INVALID_TABLE_FORMAT" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_INVARIANT_CONVERSION_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MALFORMED_EXPONENTIAL_PATTERN" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MALFORMED_PRAGMA" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MALFORMED_RULE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MALFORMED_SET" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MALFORMED_SYMBOL_REFERENCE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MALFORMED_UNICODE_ESCAPE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MALFORMED_VARIABLE_DEFINITION" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MALFORMED_VARIABLE_REFERENCE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MEMORY_ALLOCATION_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MESSAGE_PARSE_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MISMATCHED_SEGMENT_DELIMITERS" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MISPLACED_ANCHOR_START" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MISPLACED_COMPOUND_FILTER" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MISPLACED_CURSOR_OFFSET" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MISPLACED_QUANTIFIER" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MISSING_OPERATOR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MISSING_RESOURCE_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MISSING_SEGMENT_CLOSE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MULTIPLE_ANTE_CONTEXTS" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MULTIPLE_COMPOUND_FILTERS" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MULTIPLE_CURSORS" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MULTIPLE_DECIMAL_SEPARATORS" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MULTIPLE_DECIMAL_SEPERATORS" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MULTIPLE_EXPONENTIAL_SYMBOLS" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MULTIPLE_PAD_SPECIFIERS" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MULTIPLE_PERCENT_SYMBOLS" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MULTIPLE_PERMILL_SYMBOLS" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_MULTIPLE_POST_CONTEXTS" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_NO_SPACE_AVAILABLE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_NO_WRITE_PERMISSION" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_PARSE_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_PARSE_ERROR_LIMIT" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_PARSE_ERROR_START" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_PATTERN_SYNTAX_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_PRIMARY_TOO_LONG_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_BAD_ESCAPE_SEQUENCE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_BAD_INTERVAL" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_ERROR_LIMIT" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_ERROR_START" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_INTERNAL_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_INVALID_BACK_REF" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_INVALID_FLAG" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_INVALID_STATE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_LOOK_BEHIND_LIMIT" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_MAX_LT_MIN" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_MISMATCHED_PAREN" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_NUMBER_TOO_BIG" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_PROPERTY_SYNTAX" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_RULE_SYNTAX" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_SET_CONTAINS_STRING" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_REGEX_UNIMPLEMENTED" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_RESOURCE_TYPE_MISMATCH" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_RULE_MASK_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_SAFECLONE_ALLOCATED_WARNING" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_SORT_KEY_TOO_SHORT_WARNING" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_STANDARD_ERROR_LIMIT" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_STATE_OLD_WARNING" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_STATE_TOO_OLD_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_STRINGPREP_CHECK_BIDI_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_STRINGPREP_PROHIBITED_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_STRINGPREP_UNASSIGNED_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_STRING_NOT_TERMINATED_WARNING" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_TOO_MANY_ALIASES_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_TRAILING_BACKSLASH" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_TRUNCATED_CHAR_FOUND" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_UNCLOSED_SEGMENT" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_UNDEFINED_SEGMENT_REFERENCE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_UNDEFINED_VARIABLE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_UNEXPECTED_TOKEN" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_UNMATCHED_BRACES" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_UNQUOTED_SPECIAL" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_UNSUPPORTED_ATTRIBUTE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_UNSUPPORTED_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_UNSUPPORTED_ESCAPE_SEQUENCE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_UNSUPPORTED_PROPERTY" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_UNTERMINATED_QUOTE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_USELESS_COLLATOR_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_USING_DEFAULT_WARNING" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_USING_FALLBACK_WARNING" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_VARIABLE_RANGE_EXHAUSTED" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_VARIABLE_RANGE_OVERLAP" : {
- "min" : "5.2.0",
- "max" : null
- },
- "U_ZERO_ERROR" : {
- "min" : "5.2.0",
- "max" : null
- },
- "WNOHANG" : {
- "min" : "4.1.0",
- "max" : null
- },
- "WUNTRACED" : {
- "min" : "4.1.0",
- "max" : null
- },
- "XML_ERROR_ASYNC_ENTITY" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_BAD_CHAR_REF" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_BINARY_ENTITY_REF" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_DUPLICATE_ATTRIBUTE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_EXTERNAL_ENTITY_HANDLING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_INCORRECT_ENCODING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_INVALID_TOKEN" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_JUNK_AFTER_DOC_ELEMENT" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_MISPLACED_XML_PI" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_NONE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_NO_ELEMENTS" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_NO_MEMORY" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_PARAM_ENTITY_REF" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_PARTIAL_CHAR" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_RECURSIVE_ENTITY_REF" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_SYNTAX" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_TAG_MISMATCH" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_UNCLOSED_CDATA_SECTION" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_UNCLOSED_TOKEN" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_UNDEFINED_ENTITY" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_ERROR_UNKNOWN_ENCODING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_OPTION_CASE_FOLDING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_OPTION_SKIP_TAGSTART" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_OPTION_SKIP_WHITE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_OPTION_TARGET_ENCODING" : {
- "min" : "4.0.0",
- "max" : null
- },
- "XML_SAX_IMPL" : {
- "min" : "4.0.0",
- "max" : null
- },
- "YAML_ANY_BREAK" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_ANY_ENCODING" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_ANY_SCALAR_STYLE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_BINARY_TAG" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_BOOL_TAG" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_CRLN_BREAK" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_CR_BREAK" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_DOUBLE_QUOTED_SCALAR_STYLE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_FLOAT_TAG" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_FOLDED_SCALAR_STYLE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_INT_TAG" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_LITERAL_SCALAR_STYLE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_LN_BREAK" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_MAP_TAG" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_MERGE_TAG" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_NULL_TAG" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_PHP_TAG" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_PLAIN_SCALAR_STYLE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_SEQ_TAG" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_SINGLE_QUOTED_SCALAR_STYLE" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_STR_TAG" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_TIMESTAMP_TAG" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_UTF16BE_ENCODING" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_UTF16LE_ENCODING" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YAML_UTF8_ENCODING" : {
- "min" : "5.2.0",
- "max" : null
- },
- "YESEXPR" : {
- "min" : "4.1.0",
- "max" : null
- },
- "ZEND_DEBUG_BUILD" : {
- "min" : "5.3.0",
- "max" : null
- },
- "ZEND_MULTIBYTE" : {
- "min" : "5.3.4",
- "max" : "5.3.28"
- },
- "ZEND_THREAD_SAFE" : {
- "min" : "4.0.0",
- "max" : null
- },
- "ZLIB_ENCODING_DEFLATE" : {
- "min" : "5.4.0",
- "max" : null
- },
- "ZLIB_ENCODING_GZIP" : {
- "min" : "5.4.0",
- "max" : null
- },
- "ZLIB_ENCODING_RAW" : {
- "min" : "5.4.0",
- "max" : null
- },
- "__CLASS__" : {
- "min" : "4.3.0",
- "max" : null
- },
- "__COMPILER_HALT_OFFSET__" : {
- "min" : "5.1.0",
- "max" : null
- },
- "__DIR__" : {
- "min" : "5.3.0",
- "max" : null
- },
- "__FILE__" : {
- "min" : "4.0.0",
- "max" : null
- },
- "__FUNCTION__" : {
- "min" : "4.3.0",
- "max" : null
- },
- "__LINE__" : {
- "min" : "4.0.0",
- "max" : null
- },
- "__METHOD__" : {
- "min" : "5.0.0",
- "max" : null
- },
- "__NAMESPACE__" : {
- "min" : "5.3.0",
- "max" : null
- },
- "__TRAIT__" : {
- "min" : "5.4.0",
- "max" : null
- },
- "http\\Client\\Curl\\AUTH_ANY" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\AUTH_BASIC" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\AUTH_DIGEST" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\AUTH_DIGEST_IE" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\AUTH_GSSNEG" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\AUTH_NTLM" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\HTTP_VERSION_1_0" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\HTTP_VERSION_1_1" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\HTTP_VERSION_ANY" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\IPRESOLVE_ANY" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\IPRESOLVE_V4" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\IPRESOLVE_V6" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\POSTREDIR_301" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\POSTREDIR_302" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\POSTREDIR_ALL" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\PROXY_HTTP" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\PROXY_HTTP_1_0" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\PROXY_SOCKS4" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\PROXY_SOCKS4A" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\PROXY_SOCKS5" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\PROXY_SOCKS5_HOSTNAME" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\SSL_VERSION_ANY" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\SSL_VERSION_SSLv2" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\SSL_VERSION_SSLv3" : {
- "min" : "5.3.0",
- "max" : null
- },
- "http\\Client\\Curl\\SSL_VERSION_TLSv1" : {
- "min" : "5.3.0",
- "max" : null
- }
- },
- "classMethods" : {
- "DateTime" : {
- "diff" : {
- "min" : "5.3.0",
- "max" : null
- }
- },
- "Directory" : {
- "close" : {
- "min" : "4.0.0",
- "max" : null
- },
- "read" : {
- "min" : "4.0.0",
- "max" : null
- },
- "rewind" : {
- "min" : "4.0.0",
- "max" : null
- }
- },
- "php_user_filter" : {
- "filter" : {
- "min" : "5.0.0",
- "max" : null
- },
- "onClose" : {
- "min" : "5.0.0",
- "max" : null
- },
- "onCreate" : {
- "min" : "5.0.0",
- "max" : null
- }
- }
- },
- "functions_windows" : {
- "apache_child_terminate" : false,
- "chroot" : false,
- "getrusage" : false,
- "imagecreatefromxpm" : false,
- "lchgrp" : false,
- "lchown" : false,
- "nl_langinfo" : false,
- "strptime" : false,
- "sys_getloadavg" : false,
- "checkdnsrr" : "5.3.0",
- "dns_get_record" : "5.3.0",
- "fnmatch" : "5.3.0",
- "getmxrr" : "5.3.0",
- "getopt" : "5.3.0",
- "imagecolorclosesthwb" : "5.3.0",
- "inet_ntop" : "5.3.0",
- "inet_pton" : "5.3.0",
- "link" : "5.3.0",
- "linkinfo" : "5.3.0",
- "readlink" : "5.3.0",
- "socket_create_pair" : "5.3.0",
- "stream_socket_pair" : "5.3.0",
- "symlink" : "5.3.0",
- "time_nanosleep" : "5.3.0",
- "time_sleep_until" : "5.3.0"
- }
-}
diff --git a/resources/test/diverse_symbols.php.example b/resources/test/diverse_symbols.php.example
deleted file mode 100644
index e9a4df07..00000000
--- a/resources/test/diverse_symbols.php.example
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-// This file has diverse symbol declarations and requirements, and can be used
-// to test changes to phutil_symbols.php.
-
-/**
- * @phutil-external-symbol function ext_func
- * @phutil-external-symbol class ExtClass
- * @phutil-external-symbol interface ExtInterface
- */
-ext_func();
-new ExtClass();
-class L implements ExtInterface { }
-
-function f() { }
-
-(function () {
- // Anonymous function.
-});
-
-g();
-$g();
-$$g();
-
-X::f();
-call_user_func();
-call_user_func('h');
-call_user_func($var);
-
-class A { }
-class C extends B { }
-class D extends C { }
-
-new U();
-V::m();
-W::$n;
-P::CONST;
-
-interface ILocal extends IForeign { }
-class CLocal extends INonlocal { }
-
-strtoupper('');
-
-
-// Various magic things.
-
-die($x);
-empty($x);
-isset($x);
-echo($x);
-print($x);
-exit($x);
-include($x);
-include_once($x);
-require($x);
-require_once($x);
diff --git a/scripts/lib/PhutilLibraryMapBuilder.php b/scripts/lib/PhutilLibraryMapBuilder.php
deleted file mode 100644
index 555d5191..00000000
--- a/scripts/lib/PhutilLibraryMapBuilder.php
+++ /dev/null
@@ -1,511 +0,0 @@
-<?php
-
-/**
- * Build maps of libphutil libraries. libphutil uses the library map to locate
- * and load classes and functions in the library.
- *
- * @task map Mapping libphutil Libraries
- * @task path Path Management
- * @task symbol Symbol Analysis and Caching
- * @task source Source Management
- */
-final class PhutilLibraryMapBuilder {
-
- private $root;
- private $quiet;
- private $subprocessLimit = 8;
- private $ugly;
- private $showMap;
-
- const LIBRARY_MAP_VERSION_KEY = '__library_version__';
- const LIBRARY_MAP_VERSION = 2;
-
- const SYMBOL_CACHE_VERSION_KEY = '__symbol_cache_version__';
- const SYMBOL_CACHE_VERSION = 11;
-
-
-/* -( Mapping libphutil Libraries )---------------------------------------- */
-
-
- /**
- * Create a new map builder for a library.
- *
- * @param string Path to the library root.
- *
- * @task map
- */
- public function __construct($root) {
- $this->root = $root;
- }
-
-
- /**
- * Control status output. Use --quiet to set this.
- *
- * @param bool If true, don't show status output.
- * @return this
- *
- * @task map
- */
- public function setQuiet($quiet) {
- $this->quiet = $quiet;
- return $this;
- }
-
-
- /**
- * Control subprocess parallelism limit. Use --limit to set this.
- *
- * @param int Maximum number of subprocesses to run in parallel.
- * @return this
- *
- * @task map
- */
- public function setSubprocessLimit($limit) {
- $this->subprocessLimit = $limit;
- return $this;
- }
-
-
- /**
- * Control whether the ugly (but fast) or pretty (but slower) JSON formatter
- * is used.
- *
- * @param bool If true, use the fastest formatter.
- * @return this
- *
- * @task map
- */
- public function setUgly($ugly) {
- $this->ugly = $ugly;
- return $this;
- }
-
-
- /**
- * Control whether the map should be rebuilt, or just shown (printed to
- * stdout in JSON).
- *
- * @param bool If true, show map instead of updating.
- * @return this
- *
- * @task map
- */
- public function setShowMap($show_map) {
- $this->showMap = $show_map;
- return $this;
- }
-
-
- /**
- * Build or rebuild the library map.
- *
- * @return this
- *
- * @task map
- */
- public function buildMap() {
-
- // Identify all the ".php" source files in the library.
- $this->log("Finding source files...\n");
- $source_map = $this->loadSourceFileMap();
- $this->log("Found ".number_format(count($source_map))." files.\n");
-
-
- // Load the symbol cache with existing parsed symbols. This allows us
- // to remap libraries quickly by analyzing only changed files.
- $this->log("Loading symbol cache...\n");
- $symbol_cache = $this->loadSymbolCache();
-
-
- // Build out the symbol analysis for all the files in the library. For
- // each file, check if it's in cache. If we miss in the cache, do a fresh
- // analysis.
- $symbol_map = array();
- $futures = array();
- foreach ($source_map as $file => $hash) {
- if (!empty($symbol_cache[$hash])) {
- $symbol_map[$file] = $symbol_cache[$hash];
- continue;
- }
- $futures[$file] = $this->buildSymbolAnalysisFuture($file);
- }
- $this->log("Found ".number_format(count($symbol_map))." files in cache.\n");
-
-
- // Run the analyzer on any files which need analysis.
- if ($futures) {
- $limit = $this->subprocessLimit;
- $count = number_format(count($futures));
-
- $this->log("Analyzing {$count} files with {$limit} subprocesses...\n");
-
- $progress = new PhutilConsoleProgressBar();
- if ($this->quiet) {
- $progress->setQuiet(true);
- }
- $progress->setTotal(count($futures));
-
- foreach (Futures($futures)->limit($limit) as $file => $future) {
- $result = $future->resolveJSON();
- if (empty($result['error'])) {
- $symbol_map[$file] = $result;
- } else {
- $progress->done(false);
- echo phutil_console_format(
- "\n**SYNTAX ERROR!**\nFile: %s\nLine: %d\n\n%s\n",
- Filesystem::readablePath($result['file']),
- $result['line'],
- $result['error']);
- exit(1);
- }
- $progress->update(1);
- }
- $progress->done();
- $this->log("\nDone.\n");
- }
-
-
- // We're done building the cache, so write it out immediately. Note that
- // we've only retained entries for files we found, so this implicitly cleans
- // out old cache entries.
- $this->writeSymbolCache($symbol_map, $source_map);
-
-
- // Our map is up to date, so either show it on stdout or write it to disk.
-
- if ($this->showMap) {
- $this->log("Showing map...\n");
-
- if ($this->ugly) {
- echo json_encode($symbol_map);
- } else {
- $json = new PhutilJSON();
- echo $json->encodeFormatted($symbol_map);
- }
- } else {
- $this->log("Building library map...\n");
- $library_map = $this->buildLibraryMap($symbol_map);
-
- $this->log("Writing map...\n");
- $this->writeLibraryMap($library_map);
- }
-
- $this->log("Done.\n");
-
- return $this;
- }
-
-
- /**
- * Write a status message to the user, if not running in quiet mode.
- *
- * @param string Message to write.
- * @return this
- *
- * @task map
- */
- private function log($message) {
- if (!$this->quiet) {
- @fwrite(STDERR, $message);
- }
- return $this;
- }
-
-
-/* -( Path Management )---------------------------------------------------- */
-
-
- /**
- * Get the path to some file in the library.
- *
- * @param string A library-relative path. If omitted, returns the library
- * root path.
- * @return string An absolute path.
- *
- * @task path
- */
- private function getPath($path = '') {
- return $this->root.'/'.$path;
- }
-
-
- /**
- * Get the path to the symbol cache file.
- *
- * @return string Absolute path to symbol cache.
- *
- * @task path
- */
- private function getPathForSymbolCache() {
- return $this->getPath('.phutil_module_cache');
- }
-
-
- /**
- * Get the path to the map file.
- *
- * @return string Absolute path to the library map.
- *
- * @task path
- */
- private function getPathForLibraryMap() {
- return $this->getPath('__phutil_library_map__.php');
- }
-
-
- /**
- * Get the path to the library init file.
- *
- * @return string Absolute path to the library init file
- *
- * @task path
- */
- private function getPathForLibraryInit() {
- return $this->getPath('__phutil_library_init__.php');
- }
-
-
-/* -( Symbol Analysis and Caching )---------------------------------------- */
-
-
- /**
- * Load the library symbol cache, if it exists and is readable and valid.
- *
- * @return dict Map of content hashes to cache of output from
- * `phutil_symbols.php`.
- *
- * @task symbol
- */
- private function loadSymbolCache() {
- $cache_file = $this->getPathForSymbolCache();
-
- try {
- $cache = Filesystem::readFile($cache_file);
- } catch (Exception $ex) {
- $cache = null;
- }
-
- $symbol_cache = array();
- if ($cache) {
- $symbol_cache = json_decode($cache, true);
- if (!is_array($symbol_cache)) {
- $symbol_cache = array();
- }
- }
-
- $version = idx($symbol_cache, self::SYMBOL_CACHE_VERSION_KEY);
- if ($version != self::SYMBOL_CACHE_VERSION) {
- // Throw away caches from a different version of the library.
- $symbol_cache = array();
- }
- unset($symbol_cache[self::SYMBOL_CACHE_VERSION_KEY]);
-
- return $symbol_cache;
- }
-
-
- /**
- * Write a symbol map to disk cache.
- *
- * @param dict Symbol map of relative paths to symbols.
- * @param dict Source map (like @{method:loadSourceFileMap}).
- * @return void
- *
- * @task symbol
- */
- private function writeSymbolCache(array $symbol_map, array $source_map) {
- $cache_file = $this->getPathForSymbolCache();
-
- $cache = array(
- self::SYMBOL_CACHE_VERSION_KEY => self::SYMBOL_CACHE_VERSION,
- );
-
- foreach ($symbol_map as $file => $symbols) {
- $cache[$source_map[$file]] = $symbols;
- }
-
- $json = json_encode($cache);
- try {
- Filesystem::writeFile($cache_file, $json);
- } catch (FilesystemException $ex) {
- $this->log("Unable to save the cache!\n");
- }
- }
-
-
- /**
- * Drop the symbol cache, forcing a clean rebuild.
- *
- * @return this
- *
- * @task symbol
- */
- public function dropSymbolCache() {
- $this->log("Dropping symbol cache...\n");
- Filesystem::remove($this->getPathForSymbolCache());
- }
-
-
- /**
- * Build a future which returns a `phutil_symbols.php` analysis of a source
- * file.
- *
- * @param string Relative path to the source file to analyze.
- * @return Future Analysis future.
- *
- * @task symbol
- */
- private function buildSymbolAnalysisFuture($file) {
- $absolute_file = $this->getPath($file);
- $bin = dirname(dirname(__FILE__)).'/phutil_symbols.php';
-
- return new ExecFuture('php %s --ugly -- %s', $bin, $absolute_file);
- }
-
-
-/* -( Source Management )-------------------------------------------------- */
-
-
- /**
- * Build a map of all source files in a library to hashes of their content.
- * Returns an array like this:
- *
- * array(
- * 'src/parser/ExampleParser.php' => '60b725f10c9c85c70d97880dfe8191b3',
- * // ...
- * );
- *
- * @return dict Map of library-relative paths to content hashes.
- * @task source
- */
- private function loadSourceFileMap() {
- $root = $this->getPath();
-
- $init = $this->getPathForLibraryInit();
- if (!Filesystem::pathExists($init)) {
- throw new Exception("Provided path '{$root}' is not a phutil library.");
- }
-
- $files = id(new FileFinder($root))
- ->withType('f')
- ->withSuffix('php')
- ->excludePath('*/.*')
- ->setGenerateChecksums(true)
- ->find();
-
- $map = array();
- foreach ($files as $file => $hash) {
- $file = Filesystem::readablePath($file, $root);
- $file = ltrim($file, '/');
-
- if (dirname($file) == '.') {
- // We don't permit normal source files at the root level, so just ignore
- // them; they're special library files.
- continue;
- }
-
- if (dirname($file) == 'extensions') {
- // Ignore files in the extensions/ directory.
- continue;
- }
-
- // We include also filename in the hash to handle cases when the file is
- // moved without modifying its content.
- $map[$file] = md5($hash.$file);
- }
-
- return $map;
- }
-
-
- /**
- * Convert the symbol analysis of all the source files in the library into
- * a library map.
- *
- * @param dict Symbol analysis of all source files.
- * @return dict Library map.
- * @task source
- */
- private function buildLibraryMap(array $symbol_map) {
- $library_map = array(
- 'class' => array(),
- 'function' => array(),
- 'xmap' => array(),
- );
-
- // Detect duplicate symbols within the library.
- foreach ($symbol_map as $file => $info) {
- foreach ($info['have'] as $type => $symbols) {
- foreach ($symbols as $symbol => $declaration) {
- $lib_type = ($type == 'interface') ? 'class' : $type;
- if (!empty($library_map[$lib_type][$symbol])) {
- $prior = $library_map[$lib_type][$symbol];
- throw new Exception(
- "Definition of {$type} '{$symbol}' in file '{$file}' duplicates ".
- "prior definition in file '{$prior}'. You can not declare the ".
- "same symbol twice.");
- }
- $library_map[$lib_type][$symbol] = $file;
- }
- }
- $library_map['xmap'] += $info['xmap'];
- }
-
- // Simplify the common case (one parent) to make the file a little easier
- // to deal with.
- foreach ($library_map['xmap'] as $class => $extends) {
- if (count($extends) == 1) {
- $library_map['xmap'][$class] = reset($extends);
- }
- }
-
- // Sort the map so it is relatively stable across changes.
- foreach ($library_map as $key => $symbols) {
- ksort($symbols);
- $library_map[$key] = $symbols;
- }
- ksort($library_map);
-
- return $library_map;
- }
-
-
- /**
- * Write a finalized library map.
- *
- * @param dict Library map structure to write.
- * @return void
- *
- * @task source
- */
- private function writeLibraryMap(array $library_map) {
- $map_file = $this->getPathForLibraryMap();
- $version = self::LIBRARY_MAP_VERSION;
-
- $library_map = array(
- self::LIBRARY_MAP_VERSION_KEY => $version,
- ) + $library_map;
-
- $library_map = var_export($library_map, $return_string = true);
- $library_map = preg_replace('/\s+$/m', '', $library_map);
- $library_map = preg_replace('/array \(/', 'array(', $library_map);
- $at = '@';
-
- $source_file = <<<EOPHP
-<?php
-
-/**
- * This file is automatically generated. Use 'arc liberate' to rebuild it.
- * {$at}generated
- * {$at}phutil-library-version {$version}
- */
-
-phutil_register_library_map({$library_map});
-
-EOPHP;
-
- Filesystem::writeFile($map_file, $source_file);
- }
-
-}
diff --git a/scripts/phutil_rebuild_map.php b/scripts/phutil_rebuild_map.php
deleted file mode 100755
index 517ba97b..00000000
--- a/scripts/phutil_rebuild_map.php
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-require_once dirname(__FILE__).'/__init_script__.php';
-require_once dirname(__FILE__).'/lib/PhutilLibraryMapBuilder.php';
-
-$args = new PhutilArgumentParser($argv);
-$args->setTagline('rebuild the library map file');
-$args->setSynopsis(<<<EOHELP
- **phutil_rebuild_map.php** [__options__] __root__
- Rebuild the library map file for a libphutil library.
-
-EOHELP
-);
-
-$args->parseStandardArguments();
-$args->parse(
- array(
- array(
- 'name' => 'quiet',
- 'help' => 'Do not write status messages to stderr.',
- ),
- array(
- 'name' => 'drop-cache',
- 'help' => 'Drop the symbol cache and rebuild the entire map from '.
- 'scratch.',
- ),
- array(
- 'name' => 'limit',
- 'param' => 'N',
- 'default' => 8,
- 'help' => 'Controls the number of symbol mapper subprocesses run '.
- 'at once. Defaults to 8.',
- ),
- array(
- 'name' => 'show',
- 'help' => 'Print symbol map to stdout instead of writing it to the '.
- 'map file.',
- ),
- array(
- 'name' => 'ugly',
- 'help' => 'Use faster but less readable serialization for --show.',
- ),
- array(
- 'name' => 'root',
- 'wildcard' => true,
- )
- ));
-
-$root = $args->getArg('root');
-if (count($root) !== 1) {
- throw new Exception('Provide exactly one library root!');
-}
-$root = Filesystem::resolvePath(head($root));
-
-$builder = new PhutilLibraryMapBuilder($root);
-
-$builder->setQuiet($args->getArg('quiet'));
-$builder->setSubprocessLimit($args->getArg('limit'));
-
-if ($args->getArg('drop-cache')) {
- $builder->dropSymbolCache();
-}
-
-if ($args->getArg('show')) {
- $builder->setShowMap(true);
- $builder->setUgly($args->getArg('ugly'));
-}
-
-$builder->buildMap();
-
-exit(0);
diff --git a/scripts/phutil_symbols.php b/scripts/phutil_symbols.php
deleted file mode 100755
index ca151c60..00000000
--- a/scripts/phutil_symbols.php
+++ /dev/null
@@ -1,557 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-// We have to do this first before we load any symbols, because we define the
-// builtin symbol list through introspection.
-$builtins = phutil_symbols_get_builtins();
-
-require_once dirname(__FILE__).'/__init_script__.php';
-
-$args = new PhutilArgumentParser($argv);
-$args->setTagline('identify symbols in a PHP source file');
-$args->setSynopsis(<<<EOHELP
- **phutil_symbols.php** [__options__] __path.php__
- Identify the symbols (clases, functions and interfaces) in a PHP
- source file. Symbols are divided into "have" symbols (symbols the file
- declares) and "need" symbols (symbols the file depends on). For example,
- class declarations are "have" symbols, while object instantiations
- with "new X()" are "need" symbols.
-
- Dependencies on builtins and symbols marked '@phutil-external-symbol'
- in docblocks are omitted without __--all__.
-
- Symbols are reported in JSON on stdout.
-
- This script is used internally by libphutil/arcanist to build maps of
- library symbols.
-
- It would be nice to eventually implement this as a C++ xhpast binary,
- as it's relatively stable and performance is currently awful
- (500ms+ for moderately large files).
-
-EOHELP
-);
-$args->parseStandardArguments();
-$args->parse(
- array(
- array(
- 'name' => 'all',
- 'help' => 'Report all symbols, including builtins and declared '.
- 'externals.',
- ),
- array(
- 'name' => 'ugly',
- 'help' => 'Do not prettify JSON output.',
- ),
- array(
- 'name' => 'path',
- 'wildcard' => true,
- 'help' => 'PHP Source file to analyze.',
- ),
- ));
-
-$paths = $args->getArg('path');
-if (count($paths) !== 1) {
- throw new Exception('Specify exactly one path!');
-}
-$path = Filesystem::resolvePath(head($paths));
-
-$show_all = $args->getArg('all');
-
-$source_code = Filesystem::readFile($path);
-
-try {
- $tree = XHPASTTree::newFromData($source_code);
-} catch (XHPASTSyntaxErrorException $ex) {
- $result = array(
- 'error' => $ex->getMessage(),
- 'line' => $ex->getErrorLine(),
- 'file' => $path,
- );
- $json = new PhutilJSON();
- echo $json->encodeFormatted($result);
- exit(0);
-}
-
-$root = $tree->getRootNode();
-
-$root->buildSelectCache();
-
-// -( Unsupported Constructs )------------------------------------------------
-
-$namespaces = $root->selectDescendantsOfType('n_NAMESPACE');
-foreach ($namespaces as $namespace) {
- phutil_fail_on_unsupported_feature(
- $namespace, $path, pht('namespaces'));
-}
-
-$uses = $root->selectDescendantsOfType('n_USE');
-foreach ($namespaces as $namespace) {
- phutil_fail_on_unsupported_feature(
- $namespace, $path, pht('namespace `use` statements'));
-}
-
-$possible_traits = $root->selectDescendantsOfType('n_CLASS_DECLARATION');
-foreach ($possible_traits as $possible_trait) {
- $attributes = $possible_trait->getChildByIndex(0);
- // can't use getChildByIndex here because not all classes have attributes
- foreach ($attributes->getChildren() as $attribute) {
- if (strtolower($attribute->getConcreteString()) == 'trait') {
- phutil_fail_on_unsupported_feature(
- $possible_trait, $path, pht('traits'));
- }
- }
-}
-
-
-// -( Marked Externals )------------------------------------------------------
-
-
-// Identify symbols marked with "@phutil-external-symbol", so we exclude them
-// from the dependency list.
-
-$externals = array();
-$doc_parser = new PhutilDocblockParser();
-foreach ($root->getTokens() as $token) {
- if ($token->getTypeName() == 'T_DOC_COMMENT') {
- list($block, $special) = $doc_parser->parse($token->getValue());
-
- $ext_list = idx($special, 'phutil-external-symbol');
- $ext_list = explode("\n", $ext_list);
- $ext_list = array_filter($ext_list);
-
- foreach ($ext_list as $ext_ref) {
- $matches = null;
- if (preg_match('/^\s*(\S+)\s+(\S+)/', $ext_ref, $matches)) {
- $externals[$matches[1]][$matches[2]] = true;
- }
- }
- }
-}
-
-
-// -( Declarations and Dependencies )-----------------------------------------
-
-
-// The first stage of analysis is to find all the symbols we declare in the
-// file (like functions and classes) and all the symbols we use in the file
-// (like calling functions and invoking classes). Later, we filter this list
-// to exclude builtins.
-
-
-$have = array(); // For symbols we declare.
-$need = array(); // For symbols we use.
-$xmap = array(); // For extended classes and implemented interfaces.
-
-
-// -( Functions )-------------------------------------------------------------
-
-
-// Find functions declared in this file.
-
-// This is "function f() { ... }".
-$functions = $root->selectDescendantsOfType('n_FUNCTION_DECLARATION');
-foreach ($functions as $function) {
- $name = $function->getChildByIndex(2);
- if ($name->getTypeName() == 'n_EMPTY') {
- // This is an anonymous function; don't record it into the symbol
- // index.
- continue;
- }
- $have[] = array(
- 'type' => 'function',
- 'symbol' => $name,
- );
-}
-
-
-// Find functions used by this file. Uses:
-//
-// - Explicit Call
-// - String literal passed to call_user_func() or call_user_func_array()
-// - String literal in array literal in call_user_func()/call_user_func_array()
-//
-// TODO: Possibly support these:
-//
-// - String literal in ReflectionFunction().
-
-// This is "f();".
-$calls = $root->selectDescendantsOfType('n_FUNCTION_CALL');
-foreach ($calls as $call) {
- $name = $call->getChildByIndex(0);
- if ($name->getTypeName() == 'n_VARIABLE' ||
- $name->getTypeName() == 'n_VARIABLE_VARIABLE') {
- // Ignore these, we can't analyze them.
- continue;
- }
- if ($name->getTypeName() == 'n_CLASS_STATIC_ACCESS') {
- // These are "C::f()", we'll pick this up later on.
- continue;
- }
- $call_name = $name->getConcreteString();
- if ($call_name == 'call_user_func' ||
- $call_name == 'call_user_func_array') {
- $params = $call->getChildByIndex(1)->getChildren();
- if (!count($params)) {
- // This is a bare call_user_func() with no arguments; just ignore it.
- continue;
- }
- $symbol = array_shift($params);
- $type = 'function';
- $symbol_value = $symbol->getStringLiteralValue();
- $pos = strpos($symbol_value, '::');
- if ($pos) {
- $type = 'class';
- $symbol_value = substr($symbol_value, 0, $pos);
- } else if ($symbol->getTypeName() == 'n_ARRAY_LITERAL') {
- try {
- $type = 'class';
- $symbol_value = idx($symbol->evalStatic(), 0);
- } catch (Exception $ex) {
- }
- }
- if ($symbol_value && strpos($symbol_value, '$') === false) {
- $need[] = array(
- 'type' => $type,
- 'name' => $symbol_value,
- 'symbol' => $symbol,
- );
- }
- } else {
- $need[] = array(
- 'type' => 'function',
- 'symbol' => $name,
- );
- }
-}
-
-
-// -( Classes )---------------------------------------------------------------
-
-
-// Find classes declared by this file.
-
-
-// This is "class X ... { ... }".
-$classes = $root->selectDescendantsOfType('n_CLASS_DECLARATION');
-foreach ($classes as $class) {
- $class_name = $class->getChildByIndex(1);
- $have[] = array(
- 'type' => 'class',
- 'symbol' => $class_name,
- );
-}
-
-
-// Find classes used by this file. We identify these:
-//
-// - class ... extends X
-// - new X
-// - Static method call
-// - Static property access
-// - Use of class constant
-// - typehints
-// - catch
-// - instanceof
-// - newv()
-//
-// TODO: Possibly support these:
-//
-// - String literal in ReflectionClass().
-
-
-// This is "class X ... { ... }".
-$classes = $root->selectDescendantsOfType('n_CLASS_DECLARATION');
-foreach ($classes as $class) {
- $class_name = $class->getChildByIndex(1)->getConcreteString();
- $extends = $class->getChildByIndex(2);
- foreach ($extends->selectDescendantsOfType('n_CLASS_NAME') as $parent) {
- $need[] = array(
- 'type' => 'class',
- 'symbol' => $parent,
- );
-
- // Track all 'extends' in the extension map.
- $xmap[$class_name][] = $parent->getConcreteString();
- }
-}
-
-// This is "new X()".
-$uses_of_new = $root->selectDescendantsOfType('n_NEW');
-foreach ($uses_of_new as $new_operator) {
- $name = $new_operator->getChildByIndex(0);
- if ($name->getTypeName() == 'n_VARIABLE' ||
- $name->getTypeName() == 'n_VARIABLE_VARIABLE') {
- continue;
- }
- $need[] = array(
- 'type' => 'class',
- 'symbol' => $name,
- );
-}
-
-// This covers all of "X::$y", "X::y()" and "X::CONST".
-$static_uses = $root->selectDescendantsOfType('n_CLASS_STATIC_ACCESS');
-foreach ($static_uses as $static_use) {
- $name = $static_use->getChildByIndex(0);
- if ($name->getTypeName() != 'n_CLASS_NAME') {
- continue;
- }
- $need[] = array(
- 'type' => 'class/interface',
- 'symbol' => $name,
- );
-}
-
-// This is "function (X $x)".
-$parameters = $root->selectDescendantsOfType('n_DECLARATION_PARAMETER');
-foreach ($parameters as $parameter) {
- $hint = $parameter->getChildByIndex(0);
- if ($hint->getTypeName() != 'n_CLASS_NAME') {
- continue;
- }
- $need[] = array(
- 'type' => 'class/interface',
- 'symbol' => $hint,
- );
-}
-
-// This is "catch (Exception $ex)".
-$catches = $root->selectDescendantsOfType('n_CATCH');
-foreach ($catches as $catch) {
- $need[] = array(
- 'type' => 'class/interface',
- 'symbol' => $catch->getChildOfType(0, 'n_CLASS_NAME'),
- );
-}
-
-// This is "$x instanceof X".
-$instanceofs = $root->selectDescendantsOfType('n_BINARY_EXPRESSION');
-foreach ($instanceofs as $instanceof) {
- $operator = $instanceof->getChildOfType(1, 'n_OPERATOR');
- if ($operator->getConcreteString() != 'instanceof') {
- continue;
- }
- $class = $instanceof->getChildByIndex(2);
- if ($class->getTypeName() != 'n_CLASS_NAME') {
- continue;
- }
- $need[] = array(
- 'type' => 'class/interface',
- 'symbol' => $class,
- );
-}
-
-// This is "newv('X')".
-$calls = $root->selectDescendantsOfType('n_FUNCTION_CALL');
-foreach ($calls as $call) {
- $call_name = $call->getChildByIndex(0)->getConcreteString();
- if ($call_name != 'newv') {
- continue;
- }
- $params = $call->getChildByIndex(1)->getChildren();
- if (!count($params)) {
- continue;
- }
- $symbol = reset($params);
- $symbol_value = $symbol->getStringLiteralValue();
- if ($symbol_value && strpos($symbol_value, '$') === false) {
- $need[] = array(
- 'type' => 'class',
- 'name' => $symbol_value,
- 'symbol' => $symbol,
- );
- }
-}
-
-
-// -( Interfaces )------------------------------------------------------------
-
-
-// Find interfaces declared in this file.
-
-
-// This is "interface X .. { ... }".
-$interfaces = $root->selectDescendantsOfType('n_INTERFACE_DECLARATION');
-foreach ($interfaces as $interface) {
- $interface_name = $interface->getChildByIndex(1);
- $have[] = array(
- 'type' => 'interface',
- 'symbol' => $interface_name,
- );
-}
-
-
-// Find interfaces used by this file. We identify these:
-//
-// - class ... implements X
-// - interface ... extends X
-
-
-// This is "class X ... { ... }".
-$classes = $root->selectDescendantsOfType('n_CLASS_DECLARATION');
-foreach ($classes as $class) {
- $class_name = $class->getChildByIndex(1)->getConcreteString();
- $implements = $class->getChildByIndex(3);
- $interfaces = $implements->selectDescendantsOfType('n_CLASS_NAME');
- foreach ($interfaces as $interface) {
- $need[] = array(
- 'type' => 'interface',
- 'symbol' => $interface,
- );
-
- // Track 'class ... implements' in the extension map.
- $xmap[$class_name][] = $interface->getConcreteString();
- }
-}
-
-
-// This is "interface X ... { ... }".
-$interfaces = $root->selectDescendantsOfType('n_INTERFACE_DECLARATION');
-foreach ($interfaces as $interface) {
- $interface_name = $interface->getChildByIndex(1)->getConcreteString();
-
- $extends = $interface->getChildByIndex(2);
- foreach ($extends->selectDescendantsOfType('n_CLASS_NAME') as $parent) {
- $need[] = array(
- 'type' => 'interface',
- 'symbol' => $parent,
- );
-
- // Track 'interface ... extends' in the extension map.
- $xmap[$interface_name][] = $parent->getConcreteString();
- }
-}
-
-
-// -( Analysis )--------------------------------------------------------------
-
-
-$declared_symbols = array();
-foreach ($have as $key => $spec) {
- $name = $spec['symbol']->getConcreteString();
- $declared_symbols[$spec['type']][$name] = $spec['symbol']->getOffset();
-}
-
-$required_symbols = array();
-foreach ($need as $key => $spec) {
- $name = idx($spec, 'name');
- if (!$name) {
- $name = $spec['symbol']->getConcreteString();
- }
-
- $type = $spec['type'];
- foreach (explode('/', $type) as $libtype) {
- if (!$show_all) {
- if (!empty($externals[$libtype][$name])) {
- // Ignore symbols declared as externals.
- continue 2;
- }
- if (!empty($builtins[$libtype][$name])) {
- // Ignore symbols declared as builtins.
- continue 2;
- }
- }
- if (!empty($declared_symbols[$libtype][$name])) {
- // We declare this symbol, so don't treat it as a requirement.
- continue 2;
- }
- }
- if (!empty($required_symbols[$type][$name])) {
- // Report only the first use of a symbol, since reporting all of them
- // isn't terribly informative.
- continue;
- }
- $required_symbols[$type][$name] = $spec['symbol']->getOffset();
-}
-
-$result = array(
- 'have' => $declared_symbols,
- 'need' => $required_symbols,
- 'xmap' => $xmap,
-);
-
-
-// -( Output )----------------------------------------------------------------
-
-
-if ($args->getArg('ugly')) {
- echo json_encode($result);
-} else {
- $json = new PhutilJSON();
- echo $json->encodeFormatted($result);
-}
-
-
-// -( Library )---------------------------------------------------------------
-
-function phutil_fail_on_unsupported_feature(XHPASTNode $node, $file, $what) {
- $line = $node->getLineNumber();
- $message = phutil_console_wrap(pht(
- '`arc liberate` has limited support for features introduced after PHP '.
- '5.2.3. This library uses an unsupported feature (%s) on line %d of %s',
- $what,
- $line,
- Filesystem::readablePath($file)));
-
- $result = array(
- 'error' => $message,
- 'line' => $line,
- 'file' => $file,
- );
- $json = new PhutilJSON();
- echo $json->encodeFormatted($result);
- exit(0);
-}
-
-function phutil_symbols_get_builtins() {
- $builtin = array();
- $builtin['classes'] = get_declared_classes();
- $builtin['interfaces'] = get_declared_interfaces();
-
- $funcs = get_defined_functions();
- $builtin['functions'] = $funcs['internal'];
-
- $compat = json_decode(
- file_get_contents(
- dirname(__FILE__).'/../resources/php_compat_info.json'),
- true);
-
- foreach (array('functions', 'classes', 'interfaces') as $type) {
- // Developers may not have every extension that a library potentially uses
- // installed. We supplement the list of declared functions and classes with
- // a list of known extension functions to avoid raising false positives just
- // because you don't have pcntl, etc.
- $extensions = array_keys($compat[$type]);
- $builtin[$type] = array_merge($builtin[$type], $extensions);
- }
-
- return array(
- 'class' => array_fill_keys($builtin['classes'], true) + array(
- 'static' => true,
- 'parent' => true,
- 'self' => true,
-
- 'PhutilBootloader' => true,
- ),
- 'function' => array_filter(
- array(
- 'empty' => true,
- 'isset' => true,
- 'die' => true,
-
- // These are provided by libphutil but not visible in the map.
-
- 'phutil_is_windows' => true,
- 'phutil_load_library' => true,
- 'phutil_is_hiphop_runtime' => true,
-
- // HPHP/i defines these functions as 'internal', but they are NOT
- // builtins and do not exist in vanilla PHP. Make sure we don't mark
- // them as builtin since we need to add dependencies for them.
- 'idx' => false,
- 'id' => false,
- ) + array_fill_keys($builtin['functions'], true)),
- 'interface' => array_fill_keys($builtin['interfaces'], true),
- );
-}
diff --git a/scripts/update_compat_info.php b/scripts/update_compat_info.php
deleted file mode 100755
index 40c0a18d..00000000
--- a/scripts/update_compat_info.php
+++ /dev/null
@@ -1,146 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-require_once dirname(__FILE__).'/__init_script__.php';
-
-$target = 'resources/php_compat_info.json';
-echo "Purpose: Updates {$target} used by ArcanistXHPASTLinter.\n";
-
-require_once 'vendor/autoload.php';
-
-$output = array();
-$output['@'.'generated'] = true;
-$output['params'] = array();
-$output['functions'] = array();
-$output['classes'] = array();
-$output['interfaces'] = array();
-$output['constants'] = array();
-$output['classMethods'] = array();
-
-$references = array(
- new \Bartlett\CompatInfo\Reference\Extension\ApcExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\BcmathExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\CoreExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\CurlExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\DateExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\DomExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\FileinfoExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\GdExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\GettextExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\HttpExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\ImagickExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\IntlExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\JsonExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\LdapExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\LibxmlExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\MbstringExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\MysqlExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\MysqliExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\OpensslExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\PcntlExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\PcreExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\PdoExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\PharExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\PosixExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\ReflectionExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\SimplexmlExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\SocketsExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\StandardExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\SplExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\XmlExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\XmlreaderExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\XmlwriterExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\YamlExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\ZipExtension(),
- new \Bartlett\CompatInfo\Reference\Extension\ZlibExtension(),
-);
-
-foreach ($references as $reference) {
- foreach ($reference->getFunctions() as $function => $compat) {
- $output['functions'][$function] = array(
- 'min' => nonempty($compat['php.min'], null),
- 'max' => nonempty($compat['php.max'], null),
- );
-
- if (idx($compat, 'parameters')) {
- $output['params'][$function] = array_map(
- 'trim', explode(',', $compat['parameters']));
- }
- }
-
- foreach ($reference->getInterfaces() as $interface => $compat) {
- $output['interfaces'][$interface] = array(
- 'min' => nonempty($compat['php.min'], null),
- 'max' => nonempty($compat['php.max'], null),
- );
- }
-
- foreach ($reference->getClasses() as $class => $compat) {
- $output['classes'][$class] = array(
- 'min' => nonempty($compat['php.min'], null),
- 'max' => nonempty($compat['php.max'], null),
- );
- }
-
- foreach ($reference->getConstants() as $constant => $compat) {
- $output['constants'][$constant] = array(
- 'min' => nonempty($compat['php.min'], null),
- 'max' => nonempty($compat['php.max'], null),
- );
- }
-
- foreach ($reference->getClassMethods() as $class => $methods) {
- if (!array_key_exists($class, $output['classMethods'])) {
- $output['classMethods'][$class] = array();
- }
-
- foreach ($methods as $method => $compat) {
- $output['classMethods'][$class][$method] = array(
- 'min' => nonempty($compat['php.min'], null),
- 'max' => nonempty($compat['php.max'], null),
- );
- }
- }
-}
-
-ksort($output['params']);
-ksort($output['functions']);
-ksort($output['classes']);
-ksort($output['interfaces']);
-ksort($output['constants']);
-ksort($output['classMethods']);
-
-// Grepped from PHP Manual.
-$output['functions_windows'] = array(
- 'apache_child_terminate' => false,
- 'chroot' => false,
- 'getrusage' => false,
- 'imagecreatefromxpm' => false,
- 'lchgrp' => false,
- 'lchown' => false,
- 'nl_langinfo' => false,
- 'strptime' => false,
- 'sys_getloadavg' => false,
- 'checkdnsrr' => '5.3.0',
- 'dns_get_record' => '5.3.0',
- 'fnmatch' => '5.3.0',
- 'getmxrr' => '5.3.0',
- 'getopt' => '5.3.0',
- 'imagecolorclosesthwb' => '5.3.0',
- 'inet_ntop' => '5.3.0',
- 'inet_pton' => '5.3.0',
- 'link' => '5.3.0',
- 'linkinfo' => '5.3.0',
- 'readlink' => '5.3.0',
- 'socket_create_pair' => '5.3.0',
- 'stream_socket_pair' => '5.3.0',
- 'symlink' => '5.3.0',
- 'time_nanosleep' => '5.3.0',
- 'time_sleep_until' => '5.3.0',
-);
-
-file_put_contents(
- phutil_get_library_root('arcanist').'/../'.$target,
- id(new PhutilJSON())->encodeFormatted($output));
-
-echo "Done.\n";
diff --git a/src/lint/linter/ArcanistPhutilLibraryLinter.php b/src/lint/linter/ArcanistPhutilLibraryLinter.php
index d9934dd0..d3972bf3 100644
--- a/src/lint/linter/ArcanistPhutilLibraryLinter.php
+++ b/src/lint/linter/ArcanistPhutilLibraryLinter.php
@@ -1,211 +1,211 @@
<?php
/**
* Applies lint rules for Phutil libraries. We enforce three rules:
*
* # If you use a symbol, it must be defined somewhere.
* # If you define a symbol, it must not duplicate another definition.
* # If you define a class or interface in a file, it MUST be the only symbol
* defined in that file.
*/
final class ArcanistPhutilLibraryLinter extends ArcanistLinter {
const LINT_UNKNOWN_SYMBOL = 1;
const LINT_DUPLICATE_SYMBOL = 2;
const LINT_ONE_CLASS_PER_FILE = 3;
public function getInfoName() {
return 'Phutil Library Linter';
}
public function getInfoDescription() {
return pht(
'Make sure all the symbols use in a libphutil library are defined and '.
'known. This linter is specific to PHP source in libphutil libraries.');
}
public function getLinterConfigurationName() {
return 'phutil-library';
}
public function getLintNameMap() {
return array(
self::LINT_UNKNOWN_SYMBOL => 'Unknown Symbol',
self::LINT_DUPLICATE_SYMBOL => 'Duplicate Symbol',
self::LINT_ONE_CLASS_PER_FILE => 'One Class Per File',
);
}
public function getLinterName() {
return 'PHL';
}
public function willLintPaths(array $paths) {
if (!xhpast_is_available()) {
throw new Exception(xhpast_get_build_instructions());
}
// NOTE: For now, we completely ignore paths and just lint every library in
// its entirety. This is simpler and relatively fast because we don't do any
// detailed checks and all the data we need for this comes out of module
// caches.
$bootloader = PhutilBootloader::getInstance();
$libs = $bootloader->getAllLibraries();
// Load the up-to-date map for each library, without loading the library
// itself. This means lint results will accurately reflect the state of
// the working copy.
- $arc_root = dirname(phutil_get_library_root('arcanist'));
- $bin = $arc_root.'/scripts/phutil_rebuild_map.php';
+ $root = dirname(phutil_get_library_root('phutil'));
+ $bin = $root.'/scripts/phutil_rebuild_map.php';
$symbols = array();
foreach ($libs as $lib) {
// Do these one at a time since they individually fanout to saturate
// available system resources.
$future = new ExecFuture(
'php %s --show --quiet --ugly -- %s',
$bin,
phutil_get_library_root($lib));
$symbols[$lib] = $future->resolveJSON();
}
$all_symbols = array();
foreach ($symbols as $library => $map) {
// Check for files which declare more than one class/interface in the same
// file, or mix function definitions with class/interface definitions. We
// must isolate autoloadable symbols to one per file so the autoloader
// can't end up in an unresolvable cycle.
foreach ($map as $file => $spec) {
$have = idx($spec, 'have', array());
$have_classes =
idx($have, 'class', array()) +
idx($have, 'interface', array());
$have_functions = idx($have, 'function');
if ($have_functions && $have_classes) {
$function_list = implode(', ', array_keys($have_functions));
$class_list = implode(', ', array_keys($have_classes));
$this->raiseLintInLibrary(
$library,
$file,
end($have_functions),
self::LINT_ONE_CLASS_PER_FILE,
"File '{$file}' mixes function ({$function_list}) and ".
"class/interface ({$class_list}) definitions in the same file. ".
"A file which declares a class or an interface MUST ".
"declare nothing else.");
} else if (count($have_classes) > 1) {
$class_list = implode(', ', array_keys($have_classes));
$this->raiseLintInLibrary(
$library,
$file,
end($have_classes),
self::LINT_ONE_CLASS_PER_FILE,
"File '{$file}' declares more than one class or interface ".
"({$class_list}). A file which declares a class or interface MUST ".
"declare nothing else.");
}
}
// Check for duplicate symbols: two files providing the same class or
// function.
foreach ($map as $file => $spec) {
$have = idx($spec, 'have', array());
foreach (array('class', 'function', 'interface') as $type) {
$libtype = ($type == 'interface') ? 'class' : $type;
foreach (idx($have, $type, array()) as $symbol => $offset) {
if (empty($all_symbols[$libtype][$symbol])) {
$all_symbols[$libtype][$symbol] = array(
'library' => $library,
'file' => $file,
'offset' => $offset,
);
continue;
}
$osrc = $all_symbols[$libtype][$symbol]['file'];
$olib = $all_symbols[$libtype][$symbol]['library'];
$this->raiseLintInLibrary(
$library,
$file,
$offset,
self::LINT_DUPLICATE_SYMBOL,
"Definition of {$type} '{$symbol}' in '{$file}' in library ".
"'{$library}' duplicates prior definition in '{$osrc}' in ".
"library '{$olib}'.");
}
}
}
}
$types = array('class', 'function', 'interface', 'class/interface');
foreach ($symbols as $library => $map) {
// Check for unknown symbols: uses of classes, functions or interfaces
// which are not defined anywhere. We reference the list of all symbols
// we built up earlier.
foreach ($map as $file => $spec) {
$need = idx($spec, 'need', array());
foreach ($types as $type) {
$libtype = $type;
if ($type == 'interface' || $type == 'class/interface') {
$libtype = 'class';
}
foreach (idx($need, $type, array()) as $symbol => $offset) {
if (!empty($all_symbols[$libtype][$symbol])) {
// Symbol is defined somewhere.
continue;
}
$libphutil_root = dirname(phutil_get_library_root('phutil'));
$this->raiseLintInLibrary(
$library,
$file,
$offset,
self::LINT_UNKNOWN_SYMBOL,
"Use of unknown {$type} '{$symbol}'. Common causes are:\n\n".
" - Your libphutil/ is out of date.\n".
" This is the most common cause.\n".
" Update this copy of libphutil: {$libphutil_root}\n".
"\n".
" - Some other library is out of date.\n".
" Update the library this symbol appears in.\n".
"\n".
" - This symbol is misspelled.\n".
" Spell the symbol name correctly.\n".
" Symbol name spelling is case-sensitive.\n".
"\n".
" - This symbol was added recently.\n".
" Run `arc liberate` on the library it was added to.\n".
"\n".
" - This symbol is external. Use `@phutil-external-symbol`.\n".
" Use `grep` to find usage examples of this directive.\n".
"\n".
"*** ALTHOUGH USUALLY EASY TO FIX, THIS IS A SERIOUS ERROR.\n".
"*** THIS ERROR IS YOUR FAULT. YOU MUST RESOLVE IT.");
}
}
}
}
}
private function raiseLintInLibrary($library, $path, $offset, $code, $desc) {
$root = phutil_get_library_root($library);
$this->activePath = $root.'/'.$path;
$this->raiseLintAtOffset($offset, $code, $desc);
}
public function lintPath($path) {
return;
}
public function getCacheGranularity() {
return self::GRANULARITY_GLOBAL;
}
}
diff --git a/src/lint/linter/ArcanistXHPASTLinter.php b/src/lint/linter/ArcanistXHPASTLinter.php
index 995b36b2..7afcc000 100644
--- a/src/lint/linter/ArcanistXHPASTLinter.php
+++ b/src/lint/linter/ArcanistXHPASTLinter.php
@@ -1,2573 +1,2573 @@
<?php
/**
* Uses XHPAST to apply lint rules to PHP.
*/
final class ArcanistXHPASTLinter extends ArcanistBaseXHPASTLinter {
const LINT_PHP_SYNTAX_ERROR = 1;
const LINT_UNABLE_TO_PARSE = 2;
const LINT_VARIABLE_VARIABLE = 3;
const LINT_EXTRACT_USE = 4;
const LINT_UNDECLARED_VARIABLE = 5;
const LINT_PHP_SHORT_TAG = 6;
const LINT_PHP_ECHO_TAG = 7;
const LINT_PHP_CLOSE_TAG = 8;
const LINT_NAMING_CONVENTIONS = 9;
const LINT_IMPLICIT_CONSTRUCTOR = 10;
const LINT_DYNAMIC_DEFINE = 12;
const LINT_STATIC_THIS = 13;
const LINT_PREG_QUOTE_MISUSE = 14;
const LINT_PHP_OPEN_TAG = 15;
const LINT_TODO_COMMENT = 16;
const LINT_EXIT_EXPRESSION = 17;
const LINT_COMMENT_STYLE = 18;
const LINT_CLASS_FILENAME_MISMATCH = 19;
const LINT_TAUTOLOGICAL_EXPRESSION = 20;
const LINT_PLUS_OPERATOR_ON_STRINGS = 21;
const LINT_DUPLICATE_KEYS_IN_ARRAY = 22;
const LINT_REUSED_ITERATORS = 23;
const LINT_BRACE_FORMATTING = 24;
const LINT_PARENTHESES_SPACING = 25;
const LINT_CONTROL_STATEMENT_SPACING = 26;
const LINT_BINARY_EXPRESSION_SPACING = 27;
const LINT_ARRAY_INDEX_SPACING = 28;
const LINT_IMPLICIT_FALLTHROUGH = 30;
const LINT_PHP_53_FEATURES = 31; // Deprecated
const LINT_REUSED_AS_ITERATOR = 32;
const LINT_COMMENT_SPACING = 34;
const LINT_PHP_54_FEATURES = 35; // Deprecated
const LINT_SLOWNESS = 36;
const LINT_CLOSING_CALL_PAREN = 37;
const LINT_CLOSING_DECL_PAREN = 38;
const LINT_REUSED_ITERATOR_REFERENCE = 39;
const LINT_KEYWORD_CASING = 40;
const LINT_DOUBLE_QUOTE = 41;
const LINT_ELSEIF_USAGE = 42;
const LINT_SEMICOLON_SPACING = 43;
const LINT_CONCATENATION_OPERATOR = 44;
const LINT_PHP_COMPATIBILITY = 45;
private $naminghook;
private $switchhook;
private $version;
private $windowsVersion;
public function getInfoName() {
return 'XHPAST Lint';
}
public function getInfoDescription() {
return pht(
'Use XHPAST to enforce Phabricator coding conventions on PHP source '.
'files. This linter is intended for use in Phabricator libraries and '.
'extensions, and enforces some Phabricator-specific style rules. It '.
'may not work well for general PHP source.');
}
public function getLintNameMap() {
return array(
self::LINT_PHP_SYNTAX_ERROR => 'PHP Syntax Error!',
self::LINT_UNABLE_TO_PARSE => 'Unable to Parse',
self::LINT_VARIABLE_VARIABLE => 'Use of Variable Variable',
self::LINT_EXTRACT_USE => 'Use of extract()',
self::LINT_UNDECLARED_VARIABLE => 'Use of Undeclared Variable',
self::LINT_PHP_SHORT_TAG => 'Use of Short Tag "<?"',
self::LINT_PHP_ECHO_TAG => 'Use of Echo Tag "<?="',
self::LINT_PHP_CLOSE_TAG => 'Use of Close Tag "?>"',
self::LINT_NAMING_CONVENTIONS => 'Naming Conventions',
self::LINT_IMPLICIT_CONSTRUCTOR => 'Implicit Constructor',
self::LINT_DYNAMIC_DEFINE => 'Dynamic define()',
self::LINT_STATIC_THIS => 'Use of $this in Static Context',
self::LINT_PREG_QUOTE_MISUSE => 'Misuse of preg_quote()',
self::LINT_PHP_OPEN_TAG => 'Expected Open Tag',
self::LINT_TODO_COMMENT => 'TODO Comment',
self::LINT_EXIT_EXPRESSION => 'Exit Used as Expression',
self::LINT_COMMENT_STYLE => 'Comment Style',
self::LINT_CLASS_FILENAME_MISMATCH => 'Class-Filename Mismatch',
self::LINT_TAUTOLOGICAL_EXPRESSION => 'Tautological Expression',
self::LINT_PLUS_OPERATOR_ON_STRINGS => 'Not String Concatenation',
self::LINT_DUPLICATE_KEYS_IN_ARRAY => 'Duplicate Keys in Array',
self::LINT_REUSED_ITERATORS => 'Reuse of Iterator Variable',
self::LINT_BRACE_FORMATTING => 'Brace placement',
self::LINT_PARENTHESES_SPACING => 'Spaces Inside Parentheses',
self::LINT_CONTROL_STATEMENT_SPACING => 'Space After Control Statement',
self::LINT_BINARY_EXPRESSION_SPACING => 'Space Around Binary Operator',
self::LINT_ARRAY_INDEX_SPACING => 'Spacing Before Array Index',
self::LINT_IMPLICIT_FALLTHROUGH => 'Implicit Fallthrough',
self::LINT_PHP_53_FEATURES => 'Use Of PHP 5.3 Features',
self::LINT_PHP_54_FEATURES => 'Use Of PHP 5.4 Features',
self::LINT_REUSED_AS_ITERATOR => 'Variable Reused As Iterator',
self::LINT_COMMENT_SPACING => 'Comment Spaces',
self::LINT_SLOWNESS => 'Slow Construct',
self::LINT_CLOSING_CALL_PAREN => 'Call Formatting',
self::LINT_CLOSING_DECL_PAREN => 'Declaration Formatting',
self::LINT_REUSED_ITERATOR_REFERENCE => 'Reuse of Iterator References',
self::LINT_KEYWORD_CASING => 'Keyword Conventions',
self::LINT_DOUBLE_QUOTE => 'Unnecessary Double Quotes',
self::LINT_ELSEIF_USAGE => 'ElseIf Usage',
self::LINT_SEMICOLON_SPACING => 'Semicolon Spacing',
self::LINT_CONCATENATION_OPERATOR => 'Concatenation Spacing',
self::LINT_PHP_COMPATIBILITY => 'PHP Compatibility',
);
}
public function getLinterName() {
return 'XHP';
}
public function getLinterConfigurationName() {
return 'xhpast';
}
public function getLintSeverityMap() {
$disabled = ArcanistLintSeverity::SEVERITY_DISABLED;
$advice = ArcanistLintSeverity::SEVERITY_ADVICE;
$warning = ArcanistLintSeverity::SEVERITY_WARNING;
return array(
self::LINT_TODO_COMMENT => $disabled,
self::LINT_UNABLE_TO_PARSE => $warning,
self::LINT_NAMING_CONVENTIONS => $warning,
self::LINT_PREG_QUOTE_MISUSE => $advice,
self::LINT_BRACE_FORMATTING => $warning,
self::LINT_PARENTHESES_SPACING => $warning,
self::LINT_CONTROL_STATEMENT_SPACING => $warning,
self::LINT_BINARY_EXPRESSION_SPACING => $warning,
self::LINT_ARRAY_INDEX_SPACING => $warning,
self::LINT_IMPLICIT_FALLTHROUGH => $warning,
self::LINT_SLOWNESS => $warning,
self::LINT_COMMENT_SPACING => $advice,
self::LINT_CLOSING_CALL_PAREN => $warning,
self::LINT_CLOSING_DECL_PAREN => $warning,
self::LINT_REUSED_ITERATOR_REFERENCE => $warning,
self::LINT_KEYWORD_CASING => $warning,
self::LINT_DOUBLE_QUOTE => $advice,
self::LINT_ELSEIF_USAGE => $advice,
self::LINT_SEMICOLON_SPACING => $advice,
self::LINT_CONCATENATION_OPERATOR => $warning,
// This is disabled by default because projects don't necessarily target
// a specific minimum version.
self::LINT_PHP_53_FEATURES => $disabled,
self::LINT_PHP_54_FEATURES => $disabled,
);
}
public function getLinterConfigurationOptions() {
return parent::getLinterConfigurationOptions() + array(
'xhpast.naminghook' => array(
'type' => 'optional string',
'help' => pht(
'Name of a concrete subclass of ArcanistXHPASTLintNamingHook which '.
'enforces more granular naming convention rules for symbols.'),
),
'xhpast.switchhook' => array(
'type' => 'optional string',
'help' => pht(
'Name of a concrete subclass of ArcanistXHPASTLintSwitchHook which '.
'tunes the analysis of switch() statements for this linter.'),
),
'xhpast.php-version' => array(
'type' => 'optional string',
'help' => pht('PHP version to target.'),
),
'xhpast.php-version.windows' => array(
'type' => 'optional string',
'help' => pht('PHP version to target on Windows.'),
),
);
}
public function setLinterConfigurationValue($key, $value) {
switch ($key) {
case 'xhpast.naminghook':
$this->naminghook = $value;
return;
case 'xhpast.switchhook':
$this->switchhook = $value;
return;
case 'xhpast.php-version':
$this->version = $value;
return;
case 'xhpast.php-version.windows':
$this->windowsVersion = $value;
return;
}
return parent::setLinterConfigurationValue($key, $value);
}
public function getVersion() {
// The version number should be incremented whenever a new rule is added.
return '7';
}
protected function resolveFuture($path, Future $future) {
$tree = $this->getXHPASTTreeForPath($path);
if (!$tree) {
$ex = $this->getXHPASTExceptionForPath($path);
if ($ex instanceof XHPASTSyntaxErrorException) {
$this->raiseLintAtLine(
$ex->getErrorLine(),
1,
self::LINT_PHP_SYNTAX_ERROR,
'This file contains a syntax error: '.$ex->getMessage());
} else if ($ex instanceof Exception) {
$this->raiseLintAtPath(self::LINT_UNABLE_TO_PARSE, $ex->getMessage());
}
return;
}
$root = $tree->getRootNode();
$method_codes = array(
'lintStrstrUsedForCheck' => self::LINT_SLOWNESS,
'lintStrposUsedForStart' => self::LINT_SLOWNESS,
'lintImplicitFallthrough' => self::LINT_IMPLICIT_FALLTHROUGH,
'lintBraceFormatting' => self::LINT_BRACE_FORMATTING,
'lintTautologicalExpressions' => self::LINT_TAUTOLOGICAL_EXPRESSION,
'lintCommentSpaces' => self::LINT_COMMENT_SPACING,
'lintHashComments' => self::LINT_COMMENT_STYLE,
'lintReusedIterators' => self::LINT_REUSED_ITERATORS,
'lintReusedIteratorReferences' => self::LINT_REUSED_ITERATOR_REFERENCE,
'lintVariableVariables' => self::LINT_VARIABLE_VARIABLE,
'lintUndeclaredVariables' => array(
self::LINT_EXTRACT_USE,
self::LINT_REUSED_AS_ITERATOR,
self::LINT_UNDECLARED_VARIABLE,
),
'lintPHPTagUse' => array(
self::LINT_PHP_SHORT_TAG,
self::LINT_PHP_ECHO_TAG,
self::LINT_PHP_OPEN_TAG,
self::LINT_PHP_CLOSE_TAG,
),
'lintNamingConventions' => self::LINT_NAMING_CONVENTIONS,
'lintSurpriseConstructors' => self::LINT_IMPLICIT_CONSTRUCTOR,
'lintParenthesesShouldHugExpressions' => self::LINT_PARENTHESES_SPACING,
'lintSpaceAfterControlStatementKeywords' =>
self::LINT_CONTROL_STATEMENT_SPACING,
'lintSpaceAroundBinaryOperators' => self::LINT_BINARY_EXPRESSION_SPACING,
'lintDynamicDefines' => self::LINT_DYNAMIC_DEFINE,
'lintUseOfThisInStaticMethods' => self::LINT_STATIC_THIS,
'lintPregQuote' => self::LINT_PREG_QUOTE_MISUSE,
'lintExitExpressions' => self::LINT_EXIT_EXPRESSION,
'lintArrayIndexWhitespace' => self::LINT_ARRAY_INDEX_SPACING,
'lintTODOComments' => self::LINT_TODO_COMMENT,
'lintPrimaryDeclarationFilenameMatch' =>
self::LINT_CLASS_FILENAME_MISMATCH,
'lintPlusOperatorOnStrings' => self::LINT_PLUS_OPERATOR_ON_STRINGS,
'lintDuplicateKeysInArray' => self::LINT_DUPLICATE_KEYS_IN_ARRAY,
'lintClosingCallParen' => self::LINT_CLOSING_CALL_PAREN,
'lintClosingDeclarationParen' => self::LINT_CLOSING_DECL_PAREN,
'lintKeywordCasing' => self::LINT_KEYWORD_CASING,
'lintStrings' => self::LINT_DOUBLE_QUOTE,
'lintElseIfStatements' => self::LINT_ELSEIF_USAGE,
'lintSemicolons' => self::LINT_SEMICOLON_SPACING,
'lintSpaceAroundConcatenationOperators' =>
self::LINT_CONCATENATION_OPERATOR,
'lintPHPCompatibility' => self::LINT_PHP_COMPATIBILITY,
);
foreach ($method_codes as $method => $codes) {
foreach ((array)$codes as $code) {
if ($this->isCodeEnabled($code)) {
call_user_func(array($this, $method), $root);
break;
}
}
}
}
private function lintStrstrUsedForCheck(XHPASTNode $root) {
$expressions = $root->selectDescendantsOfType('n_BINARY_EXPRESSION');
foreach ($expressions as $expression) {
$operator = $expression->getChildOfType(1, 'n_OPERATOR');
$operator = $operator->getConcreteString();
if ($operator != '===' && $operator != '!==') {
continue;
}
$false = $expression->getChildByIndex(0);
if ($false->getTypeName() == 'n_SYMBOL_NAME' &&
$false->getConcreteString() == 'false') {
$strstr = $expression->getChildByIndex(2);
} else {
$strstr = $false;
$false = $expression->getChildByIndex(2);
if ($false->getTypeName() != 'n_SYMBOL_NAME' ||
$false->getConcreteString() != 'false') {
continue;
}
}
if ($strstr->getTypeName() != 'n_FUNCTION_CALL') {
continue;
}
$name = strtolower($strstr->getChildByIndex(0)->getConcreteString());
if ($name == 'strstr' || $name == 'strchr') {
$this->raiseLintAtNode(
$strstr,
self::LINT_SLOWNESS,
'Use strpos() for checking if the string contains something.');
} else if ($name == 'stristr') {
$this->raiseLintAtNode(
$strstr,
self::LINT_SLOWNESS,
'Use stripos() for checking if the string contains something.');
}
}
}
private function lintStrposUsedForStart(XHPASTNode $root) {
$expressions = $root->selectDescendantsOfType('n_BINARY_EXPRESSION');
foreach ($expressions as $expression) {
$operator = $expression->getChildOfType(1, 'n_OPERATOR');
$operator = $operator->getConcreteString();
if ($operator != '===' && $operator != '!==') {
continue;
}
$zero = $expression->getChildByIndex(0);
if ($zero->getTypeName() == 'n_NUMERIC_SCALAR' &&
$zero->getConcreteString() == '0') {
$strpos = $expression->getChildByIndex(2);
} else {
$strpos = $zero;
$zero = $expression->getChildByIndex(2);
if ($zero->getTypeName() != 'n_NUMERIC_SCALAR' ||
$zero->getConcreteString() != '0') {
continue;
}
}
if ($strpos->getTypeName() != 'n_FUNCTION_CALL') {
continue;
}
$name = strtolower($strpos->getChildByIndex(0)->getConcreteString());
if ($name == 'strpos') {
$this->raiseLintAtNode(
$strpos,
self::LINT_SLOWNESS,
'Use strncmp() for checking if the string starts with something.');
} else if ($name == 'stripos') {
$this->raiseLintAtNode(
$strpos,
self::LINT_SLOWNESS,
'Use strncasecmp() for checking if the string starts with '.
'something.');
}
}
}
private function lintPHPCompatibility(XHPASTNode $root) {
$php53 = self::LINT_PHP_53_FEATURES;
$php54 = self::LINT_PHP_54_FEATURES;
$disabled = ArcanistLintSeverity::SEVERITY_DISABLED;
if ($this->getLintMessageSeverity($php53) !== $disabled) {
phutil_deprecated(
'`LINT_PHP_53_FEATURES` is deprecated.',
"You should set 'xhpast.php-version' instead.");
if (!$this->version) {
$this->version = '5.2.3';
}
}
if ($this->getLintMessageSeverity($php54) !== $disabled) {
phutil_deprecated(
'`LINT_PHP_54_FEATURES` is deprecated.',
"You should set 'xhpast.php-version' instead.");
if (!$this->version) {
$this->version = '5.3.0';
}
}
if (!$this->version) {
return;
}
- $target = phutil_get_library_root('arcanist').
+ $target = phutil_get_library_root('phutil').
'/../resources/php_compat_info.json';
$compat_info = phutil_json_decode(Filesystem::readFile($target));
$calls = $root->selectDescendantsOfType('n_FUNCTION_CALL');
foreach ($calls as $call) {
$node = $call->getChildByIndex(0);
$name = $node->getConcreteString();
$version = idx($compat_info['functions'], $name);
if ($version && version_compare($version['min'], $this->version, '>')) {
$this->raiseLintAtNode(
$node,
self::LINT_PHP_COMPATIBILITY,
"This codebase targets PHP {$this->version}, but `{$name}()` was ".
"not introduced until PHP {$version['min']}.");
} else if (array_key_exists($name, $compat_info['params'])) {
$params = $call->getChildOfType(1, 'n_CALL_PARAMETER_LIST');
foreach (array_values($params->getChildren()) as $i => $param) {
$version = idx($compat_info['params'][$name], $i);
if ($version && version_compare($version, $this->version, '>')) {
$this->raiseLintAtNode(
$param,
self::LINT_PHP_COMPATIBILITY,
"This codebase targets PHP {$this->version}, but parameter ".
($i + 1)." of `{$name}()` was not introduced until PHP ".
"{$version}.");
}
}
}
if ($this->windowsVersion) {
$windows = idx($compat_info['functions_windows'], $name);
if ($windows === false) {
$this->raiseLintAtNode(
$node,
self::LINT_PHP_COMPATIBILITY,
"This codebase targets PHP {$this->windowsVersion} on Windows, ".
"but `{$name}()` is not available there.");
} else if (version_compare($windows, $this->windowsVersion, '>')) {
$this->raiseLintAtNode(
$node,
self::LINT_PHP_COMPATIBILITY,
"This codebase targets PHP {$this->windowsVersion} on Windows, ".
"but `{$name}()` is not available there until PHP ".
"{$this->windowsVersion}.");
}
}
}
$classes = $root->selectDescendantsOfType('n_CLASS_NAME');
foreach ($classes as $node) {
$name = $node->getConcreteString();
$version = idx($compat_info['interfaces'], $name);
$version = idx($compat_info['classes'], $name, $version);
if ($version && version_compare($version['min'], $this->version, '>')) {
$this->raiseLintAtNode(
$node,
self::LINT_PHP_COMPATIBILITY,
"This codebase targets PHP {$this->version}, but `{$name}` was not ".
"introduced until PHP {$version['min']}.");
}
}
// TODO: Technically, this will include function names. This is unlikely to
// cause any issues (unless, of course, there existed a function that had
// the same name as some constant).
$constants = $root->selectDescendantsOfType('n_SYMBOL_NAME');
foreach ($constants as $node) {
$name = $node->getConcreteString();
$version = idx($compat_info['constants'], $name);
if ($version && version_compare($version['min'], $this->version, '>')) {
$this->raiseLintAtNode(
$node,
self::LINT_PHP_COMPATIBILITY,
"This codebase targets PHP {$this->version}, but `{$name}` was not ".
"introduced until PHP {$version['min']}.");
}
}
if (version_compare($this->version, '5.3.0') < 0) {
$this->lintPHP53Features($root);
}
if (version_compare($this->version, '5.4.0') < 0) {
$this->lintPHP54Features($root);
}
}
private function lintPHP53Features(XHPASTNode $root) {
$functions = $root->selectTokensOfType('T_FUNCTION');
foreach ($functions as $function) {
$next = $function->getNextToken();
while ($next) {
if ($next->isSemantic()) {
break;
}
$next = $next->getNextToken();
}
if ($next) {
if ($next->getTypeName() == '(') {
$this->raiseLintAtToken(
$function,
self::LINT_PHP_COMPATIBILITY,
"This codebase targets PHP {$this->version}, but anonymous ".
"functions were not introduced until PHP 5.3.");
}
}
}
$namespaces = $root->selectTokensOfType('T_NAMESPACE');
foreach ($namespaces as $namespace) {
$this->raiseLintAtToken(
$namespace,
self::LINT_PHP_COMPATIBILITY,
"This codebase targets PHP {$this->version}, but namespaces were not ".
"introduced until PHP 5.3.");
}
// NOTE: This is only "use x;", in anonymous functions the node type is
// n_LEXICAL_VARIABLE_LIST even though both tokens are T_USE.
// TODO: We parse n_USE in a slightly crazy way right now; that would be
// a better selector once it's fixed.
$uses = $root->selectDescendantsOfType('n_USE_LIST');
foreach ($uses as $use) {
$this->raiseLintAtNode(
$use,
self::LINT_PHP_COMPATIBILITY,
"This codebase targets PHP {$this->version}, but namespaces were not ".
"introduced until PHP 5.3.");
}
$statics = $root->selectDescendantsOfType('n_CLASS_STATIC_ACCESS');
foreach ($statics as $static) {
$name = $static->getChildByIndex(0);
if ($name->getTypeName() != 'n_CLASS_NAME') {
continue;
}
if ($name->getConcreteString() == 'static') {
$this->raiseLintAtNode(
$name,
self::LINT_PHP_COMPATIBILITY,
"This codebase targets PHP {$this->version}, but `static::` was not ".
"introduced until PHP 5.3.");
}
}
$ternaries = $root->selectDescendantsOfType('n_TERNARY_EXPRESSION');
foreach ($ternaries as $ternary) {
$yes = $ternary->getChildByIndex(1);
if ($yes->getTypeName() == 'n_EMPTY') {
$this->raiseLintAtNode(
$ternary,
self::LINT_PHP_COMPATIBILITY,
"This codebase targets PHP {$this->version}, but short ternary was ".
"not introduced until PHP 5.3.");
}
}
$heredocs = $root->selectDescendantsOfType('n_HEREDOC');
foreach ($heredocs as $heredoc) {
if (preg_match('/^<<<[\'"]/', $heredoc->getConcreteString())) {
$this->raiseLintAtNode(
$heredoc,
self::LINT_PHP_COMPATIBILITY,
"This codebase targets PHP {$this->version}, but nowdoc was not ".
"introduced until PHP 5.3.");
}
}
}
private function lintPHP54Features(XHPASTNode $root) {
$indexes = $root->selectDescendantsOfType('n_INDEX_ACCESS');
foreach ($indexes as $index) {
$left = $index->getChildByIndex(0);
switch ($left->getTypeName()) {
case 'n_FUNCTION_CALL':
case 'n_METHOD_CALL':
$this->raiseLintAtNode(
$index->getChildByIndex(1),
self::LINT_PHP_COMPATIBILITY,
'The f()[...] syntax was not introduced until PHP 5.4, but this '.
'codebase targets an earlier version of PHP. You can rewrite '.
'this expression using idx().');
break;
}
}
}
private function lintImplicitFallthrough(XHPASTNode $root) {
$hook_obj = null;
$working_copy = $this->getEngine()->getWorkingCopy();
if ($working_copy) {
$hook_class = $this->switchhook
? $this->switchhook
: $this->getDeprecatedConfiguration('lint.xhpast.switchhook');
if ($hook_class) {
$hook_obj = newv($hook_class, array());
assert_instances_of(array($hook_obj), 'ArcanistXHPASTLintSwitchHook');
}
}
$switches = $root->selectDescendantsOfType('n_SWITCH');
foreach ($switches as $switch) {
$blocks = array();
$cases = $switch->selectDescendantsOfType('n_CASE');
foreach ($cases as $case) {
$blocks[] = $case;
}
$defaults = $switch->selectDescendantsOfType('n_DEFAULT');
foreach ($defaults as $default) {
$blocks[] = $default;
}
foreach ($blocks as $key => $block) {
// Collect all the tokens in this block which aren't at top level.
// We want to ignore "break", and "continue" in these blocks.
$lower_level = $block->selectDescendantsOfType('n_WHILE');
$lower_level->add($block->selectDescendantsOfType('n_DO_WHILE'));
$lower_level->add($block->selectDescendantsOfType('n_FOR'));
$lower_level->add($block->selectDescendantsOfType('n_FOREACH'));
$lower_level->add($block->selectDescendantsOfType('n_SWITCH'));
$lower_level_tokens = array();
foreach ($lower_level as $lower_level_block) {
$lower_level_tokens += $lower_level_block->getTokens();
}
// Collect all the tokens in this block which aren't in this scope
// (because they're inside class, function or interface declarations).
// We want to ignore all of these tokens.
$decls = $block->selectDescendantsOfType('n_FUNCTION_DECLARATION');
$decls->add($block->selectDescendantsOfType('n_CLASS_DECLARATION'));
// For completeness; these can't actually have anything.
$decls->add($block->selectDescendantsOfType('n_INTERFACE_DECLARATION'));
$different_scope_tokens = array();
foreach ($decls as $decl) {
$different_scope_tokens += $decl->getTokens();
}
$lower_level_tokens += $different_scope_tokens;
// Get all the trailing nonsemantic tokens, since we need to look for
// "fallthrough" comments past the end of the semantic block.
$tokens = $block->getTokens();
$last = end($tokens);
while ($last && $last = $last->getNextToken()) {
if ($last->isSemantic()) {
break;
}
$tokens[$last->getTokenID()] = $last;
}
$blocks[$key] = array(
$tokens,
$lower_level_tokens,
$different_scope_tokens,
);
}
foreach ($blocks as $token_lists) {
list(
$tokens,
$lower_level_tokens,
$different_scope_tokens) = $token_lists;
// Test each block (case or default statement) to see if it's OK. It's
// OK if:
//
// - it is empty; or
// - it ends in break, return, throw, continue or exit at top level; or
// - it has a comment with "fallthrough" in its text.
// Empty blocks are OK, so we start this at `true` and only set it to
// false if we find a statement.
$block_ok = true;
// Keeps track of whether the current statement is one that validates
// the block (break, return, throw, continue) or something else.
$statement_ok = false;
foreach ($tokens as $token_id => $token) {
if (!$token->isSemantic()) {
// Liberally match "fall" in the comment text so that comments like
// "fallthru", "fall through", "fallthrough", etc., are accepted.
if (preg_match('/fall/i', $token->getValue())) {
$block_ok = true;
break;
}
continue;
}
$tok_type = $token->getTypeName();
if ($tok_type == 'T_FUNCTION' ||
$tok_type == 'T_CLASS' ||
$tok_type == 'T_INTERFACE') {
// These aren't statements, but mark the block as nonempty anyway.
$block_ok = false;
continue;
}
if ($tok_type == ';') {
if ($statement_ok) {
$statment_ok = false;
} else {
$block_ok = false;
}
continue;
}
if ($tok_type == 'T_BREAK' ||
$tok_type == 'T_CONTINUE') {
if (empty($lower_level_tokens[$token_id])) {
$statement_ok = true;
$block_ok = true;
}
continue;
}
if ($tok_type == 'T_RETURN' ||
$tok_type == 'T_THROW' ||
$tok_type == 'T_EXIT' ||
($hook_obj && $hook_obj->checkSwitchToken($token))) {
if (empty($different_scope_tokens[$token_id])) {
$statement_ok = true;
$block_ok = true;
}
continue;
}
}
if (!$block_ok) {
$this->raiseLintAtToken(
head($tokens),
self::LINT_IMPLICIT_FALLTHROUGH,
"This 'case' or 'default' has a nonempty block which does not ".
"end with 'break', 'continue', 'return', 'throw' or 'exit'. Did ".
"you forget to add one of those? If you intend to fall through, ".
"add a '// fallthrough' comment to silence this warning.");
}
}
}
}
private function lintBraceFormatting(XHPASTNode $root) {
foreach ($root->selectDescendantsOfType('n_STATEMENT_LIST') as $list) {
$tokens = $list->getTokens();
if (!$tokens || head($tokens)->getValue() != '{') {
continue;
}
list($before, $after) = $list->getSurroundingNonsemanticTokens();
if (!$before) {
$first = head($tokens);
// Only insert the space if we're after a closing parenthesis. If
// we're in a construct like "else{}", other rules will insert space
// after the 'else' correctly.
$prev = $first->getPrevToken();
if (!$prev || $prev->getValue() != ')') {
continue;
}
$this->raiseLintAtToken(
$first,
self::LINT_BRACE_FORMATTING,
'Put opening braces on the same line as control statements and '.
'declarations, with a single space before them.',
' '.$first->getValue());
} else if (count($before) == 1) {
$before = reset($before);
if ($before->getValue() != ' ') {
$this->raiseLintAtToken(
$before,
self::LINT_BRACE_FORMATTING,
'Put opening braces on the same line as control statements and '.
'declarations, with a single space before them.',
' ');
}
}
}
}
private function lintTautologicalExpressions(XHPASTNode $root) {
$expressions = $root->selectDescendantsOfType('n_BINARY_EXPRESSION');
static $operators = array(
'-' => true,
'/' => true,
'-=' => true,
'/=' => true,
'<=' => true,
'<' => true,
'==' => true,
'===' => true,
'!=' => true,
'!==' => true,
'>=' => true,
'>' => true,
);
static $logical = array(
'||' => true,
'&&' => true,
);
foreach ($expressions as $expr) {
$operator = $expr->getChildByIndex(1)->getConcreteString();
if (!empty($operators[$operator])) {
$left = $expr->getChildByIndex(0)->getSemanticString();
$right = $expr->getChildByIndex(2)->getSemanticString();
if ($left == $right) {
$this->raiseLintAtNode(
$expr,
self::LINT_TAUTOLOGICAL_EXPRESSION,
'Both sides of this expression are identical, so it always '.
'evaluates to a constant.');
}
}
if (!empty($logical[$operator])) {
$left = $expr->getChildByIndex(0)->getSemanticString();
$right = $expr->getChildByIndex(2)->getSemanticString();
// NOTE: These will be null to indicate "could not evaluate".
$left = $this->evaluateStaticBoolean($left);
$right = $this->evaluateStaticBoolean($right);
if (($operator == '||' && ($left === true || $right === true)) ||
($operator == '&&' && ($left === false || $right === false))) {
$this->raiseLintAtNode(
$expr,
self::LINT_TAUTOLOGICAL_EXPRESSION,
'The logical value of this expression is static. Did you forget '.
'to remove some debugging code?');
}
}
}
}
/**
* Statically evaluate a boolean value from an XHP tree.
*
* TODO: Improve this and move it to XHPAST proper?
*
* @param string The "semantic string" of a single value.
* @return mixed ##true## or ##false## if the value could be evaluated
* statically; ##null## if static evaluation was not possible.
*/
private function evaluateStaticBoolean($string) {
switch (strtolower($string)) {
case '0':
case 'null':
case 'false':
return false;
case '1':
case 'true':
return true;
}
return null;
}
protected function lintCommentSpaces(XHPASTNode $root) {
foreach ($root->selectTokensOfType('T_COMMENT') as $comment) {
$value = $comment->getValue();
if ($value[0] != '#') {
$match = null;
if (preg_match('@^(/[/*]+)[^/*\s]@', $value, $match)) {
$this->raiseLintAtOffset(
$comment->getOffset(),
self::LINT_COMMENT_SPACING,
'Put space after comment start.',
$match[1],
$match[1].' ');
}
}
}
}
protected function lintHashComments(XHPASTNode $root) {
foreach ($root->selectTokensOfType('T_COMMENT') as $comment) {
$value = $comment->getValue();
if ($value[0] != '#') {
continue;
}
$this->raiseLintAtOffset(
$comment->getOffset(),
self::LINT_COMMENT_STYLE,
'Use "//" single-line comments, not "#".',
'#',
(preg_match('/^#\S/', $value) ? '// ' : '//'));
}
}
/**
* Find cases where loops get nested inside each other but use the same
* iterator variable. For example:
*
* COUNTEREXAMPLE
* foreach ($list as $thing) {
* foreach ($stuff as $thing) { // <-- Raises an error for reuse of $thing
* // ...
* }
* }
*
*/
private function lintReusedIterators(XHPASTNode $root) {
$used_vars = array();
$for_loops = $root->selectDescendantsOfType('n_FOR');
foreach ($for_loops as $for_loop) {
$var_map = array();
// Find all the variables that are assigned to in the for() expression.
$for_expr = $for_loop->getChildOfType(0, 'n_FOR_EXPRESSION');
$bin_exprs = $for_expr->selectDescendantsOfType('n_BINARY_EXPRESSION');
foreach ($bin_exprs as $bin_expr) {
if ($bin_expr->getChildByIndex(1)->getConcreteString() == '=') {
$var = $bin_expr->getChildByIndex(0);
$var_map[$var->getConcreteString()] = $var;
}
}
$used_vars[$for_loop->getID()] = $var_map;
}
$foreach_loops = $root->selectDescendantsOfType('n_FOREACH');
foreach ($foreach_loops as $foreach_loop) {
$var_map = array();
$foreach_expr = $foreach_loop->getChildOftype(0, 'n_FOREACH_EXPRESSION');
// We might use one or two vars, i.e. "foreach ($x as $y => $z)" or
// "foreach ($x as $y)".
$possible_used_vars = array(
$foreach_expr->getChildByIndex(1),
$foreach_expr->getChildByIndex(2),
);
foreach ($possible_used_vars as $var) {
if ($var->getTypeName() == 'n_EMPTY') {
continue;
}
$name = $var->getConcreteString();
$name = trim($name, '&'); // Get rid of ref silliness.
$var_map[$name] = $var;
}
$used_vars[$foreach_loop->getID()] = $var_map;
}
$all_loops = $for_loops->add($foreach_loops);
foreach ($all_loops as $loop) {
$child_for_loops = $loop->selectDescendantsOfType('n_FOR');
$child_foreach_loops = $loop->selectDescendantsOfType('n_FOREACH');
$child_loops = $child_for_loops->add($child_foreach_loops);
$outer_vars = $used_vars[$loop->getID()];
foreach ($child_loops as $inner_loop) {
$inner_vars = $used_vars[$inner_loop->getID()];
$shared = array_intersect_key($outer_vars, $inner_vars);
if ($shared) {
$shared_desc = implode(', ', array_keys($shared));
$message = $this->raiseLintAtNode(
$inner_loop->getChildByIndex(0),
self::LINT_REUSED_ITERATORS,
"This loop reuses iterator variables ({$shared_desc}) from an ".
"outer loop. You might be clobbering the outer iterator. Change ".
"the inner loop to use a different iterator name.");
$locations = array();
foreach ($shared as $var) {
$locations[] = $this->getOtherLocation($var->getOffset());
}
$message->setOtherLocations($locations);
}
}
}
}
/**
* Find cases where a foreach loop is being iterated using a variable
* reference and the same variable is used outside of the loop without
* calling unset() or reassigning the variable to another variable
* reference.
*
* COUNTEREXAMPLE
* foreach ($ar as &$a) {
* // ...
* }
* $a = 1; // <-- Raises an error for using $a
*
*/
protected function lintReusedIteratorReferences(XHPASTNode $root) {
$fdefs = $root->selectDescendantsOfType('n_FUNCTION_DECLARATION');
$mdefs = $root->selectDescendantsOfType('n_METHOD_DECLARATION');
$defs = $fdefs->add($mdefs);
foreach ($defs as $def) {
$body = $def->getChildByIndex(5);
if ($body->getTypeName() == 'n_EMPTY') {
// Abstract method declaration.
continue;
}
$exclude = array();
// Exclude uses of variables, unsets, and foreach loops
// within closures - they are checked on their own
$func_defs = $body->selectDescendantsOfType('n_FUNCTION_DECLARATION');
foreach ($func_defs as $func_def) {
$vars = $func_def->selectDescendantsOfType('n_VARIABLE');
foreach ($vars as $var) {
$exclude[$var->getID()] = true;
}
$unset_lists = $func_def->selectDescendantsOfType('n_UNSET_LIST');
foreach ($unset_lists as $unset_list) {
$exclude[$unset_list->getID()] = true;
}
$foreaches = $func_def->selectDescendantsOfType('n_FOREACH');
foreach ($foreaches as $foreach) {
$exclude[$foreach->getID()] = true;
}
}
// Find all variables that are unset within the scope
$unset_vars = array();
$unset_lists = $body->selectDescendantsOfType('n_UNSET_LIST');
foreach ($unset_lists as $unset_list) {
if (isset($exclude[$unset_list->getID()])) {
continue;
}
$unset_list_vars = $unset_list->selectDescendantsOfType('n_VARIABLE');
foreach ($unset_list_vars as $var) {
$concrete = $this->getConcreteVariableString($var);
$unset_vars[$concrete][] = $var->getOffset();
$exclude[$var->getID()] = true;
}
}
// Find all reference variables in foreach expressions
$reference_vars = array();
$foreaches = $body->selectDescendantsOfType('n_FOREACH');
foreach ($foreaches as $foreach) {
if (isset($exclude[$foreach->getID()])) {
continue;
}
$foreach_expr = $foreach->getChildOfType(0, 'n_FOREACH_EXPRESSION');
$var = $foreach_expr->getChildByIndex(2);
if ($var->getTypeName() != 'n_VARIABLE_REFERENCE') {
continue;
}
$reference = $var->getChildByIndex(0);
if ($reference->getTypeName() != 'n_VARIABLE') {
continue;
}
$reference_name = $this->getConcreteVariableString($reference);
$reference_vars[$reference_name][] = $reference->getOffset();
$exclude[$reference->getID()] = true;
// Exclude uses of the reference variable within the foreach loop
$foreach_vars = $foreach->selectDescendantsOfType('n_VARIABLE');
foreach ($foreach_vars as $var) {
$name = $this->getConcreteVariableString($var);
if ($name == $reference_name) {
$exclude[$var->getID()] = true;
}
}
}
// Allow usage if the reference variable is assigned to another
// reference variable
$binary = $body->selectDescendantsOfType('n_BINARY_EXPRESSION');
foreach ($binary as $expr) {
if ($expr->getChildByIndex(1)->getConcreteString() != '=') {
continue;
}
$lval = $expr->getChildByIndex(0);
if ($lval->getTypeName() != 'n_VARIABLE') {
continue;
}
$rval = $expr->getChildByIndex(2);
if ($rval->getTypeName() != 'n_VARIABLE_REFERENCE') {
continue;
}
// Counts as unsetting a variable
$concrete = $this->getConcreteVariableString($lval);
$unset_vars[$concrete][] = $lval->getOffset();
$exclude[$lval->getID()] = true;
}
$all_vars = array();
$all = $body->selectDescendantsOfType('n_VARIABLE');
foreach ($all as $var) {
if (isset($exclude[$var->getID()])) {
continue;
}
$name = $this->getConcreteVariableString($var);
if (!isset($reference_vars[$name])) {
continue;
}
// Find the closest reference offset to this variable
$reference_offset = null;
foreach ($reference_vars[$name] as $offset) {
if ($offset < $var->getOffset()) {
$reference_offset = $offset;
} else {
break;
}
}
if (!$reference_offset) {
continue;
}
// Check if an unset exists between reference and usage of this
// variable
$warn = true;
if (isset($unset_vars[$name])) {
foreach ($unset_vars[$name] as $unset_offset) {
if ($unset_offset > $reference_offset &&
$unset_offset < $var->getOffset()) {
$warn = false;
break;
}
}
}
if ($warn) {
$this->raiseLintAtNode(
$var,
self::LINT_REUSED_ITERATOR_REFERENCE,
'This variable was used already as a by-reference iterator '.
'variable. Such variables survive outside the foreach loop, '.
'do not reuse.');
}
}
}
}
protected function lintVariableVariables(XHPASTNode $root) {
$vvars = $root->selectDescendantsOfType('n_VARIABLE_VARIABLE');
foreach ($vvars as $vvar) {
$this->raiseLintAtNode(
$vvar,
self::LINT_VARIABLE_VARIABLE,
'Rewrite this code to use an array. Variable variables are unclear '.
'and hinder static analysis.');
}
}
private function lintUndeclaredVariables(XHPASTNode $root) {
// These things declare variables in a function:
// Explicit parameters
// Assignment
// Assignment via list()
// Static
// Global
// Lexical vars
// Builtins ($this)
// foreach()
// catch
//
// These things make lexical scope unknowable:
// Use of extract()
// Assignment to variable variables ($$x)
// Global with variable variables
//
// These things don't count as "using" a variable:
// isset()
// empty()
// Static class variables
//
// The general approach here is to find each function/method declaration,
// then:
//
// 1. Identify all the variable declarations, and where they first occur
// in the function/method declaration.
// 2. Identify all the uses that don't really count (as above).
// 3. Everything else must be a use of a variable.
// 4. For each variable, check if any uses occur before the declaration
// and warn about them.
//
// We also keep track of where lexical scope becomes unknowable (e.g.,
// because the function calls extract() or uses dynamic variables,
// preventing us from keeping track of which variables are defined) so we
// can stop issuing warnings after that.
//
// TODO: Support functions defined inside other functions which is commonly
// used with anonymous functions.
$fdefs = $root->selectDescendantsOfType('n_FUNCTION_DECLARATION');
$mdefs = $root->selectDescendantsOfType('n_METHOD_DECLARATION');
$defs = $fdefs->add($mdefs);
foreach ($defs as $def) {
// We keep track of the first offset where scope becomes unknowable, and
// silence any warnings after that. Default it to INT_MAX so we can min()
// it later to keep track of the first problem we encounter.
$scope_destroyed_at = PHP_INT_MAX;
$declarations = array(
'$this' => 0,
) + array_fill_keys($this->getSuperGlobalNames(), 0);
$declaration_tokens = array();
$exclude_tokens = array();
$vars = array();
// First up, find all the different kinds of declarations, as explained
// above. Put the tokens into the $vars array.
$param_list = $def->getChildOfType(3, 'n_DECLARATION_PARAMETER_LIST');
$param_vars = $param_list->selectDescendantsOfType('n_VARIABLE');
foreach ($param_vars as $var) {
$vars[] = $var;
}
// This is PHP5.3 closure syntax: function () use ($x) {};
$lexical_vars = $def
->getChildByIndex(4)
->selectDescendantsOfType('n_VARIABLE');
foreach ($lexical_vars as $var) {
$vars[] = $var;
}
$body = $def->getChildByIndex(5);
if ($body->getTypeName() == 'n_EMPTY') {
// Abstract method declaration.
continue;
}
$static_vars = $body
->selectDescendantsOfType('n_STATIC_DECLARATION')
->selectDescendantsOfType('n_VARIABLE');
foreach ($static_vars as $var) {
$vars[] = $var;
}
$global_vars = $body
->selectDescendantsOfType('n_GLOBAL_DECLARATION_LIST');
foreach ($global_vars as $var_list) {
foreach ($var_list->getChildren() as $var) {
if ($var->getTypeName() == 'n_VARIABLE') {
$vars[] = $var;
} else {
// Dynamic global variable, i.e. "global $$x;".
$scope_destroyed_at = min($scope_destroyed_at, $var->getOffset());
// An error is raised elsewhere, no need to raise here.
}
}
}
// Include "catch (Exception $ex)", but not variables in the body of the
// catch block.
$catches = $body->selectDescendantsOfType('n_CATCH');
foreach ($catches as $catch) {
$vars[] = $catch->getChildOfType(1, 'n_VARIABLE');
}
$binary = $body->selectDescendantsOfType('n_BINARY_EXPRESSION');
foreach ($binary as $expr) {
if ($expr->getChildByIndex(1)->getConcreteString() != '=') {
continue;
}
$lval = $expr->getChildByIndex(0);
if ($lval->getTypeName() == 'n_VARIABLE') {
$vars[] = $lval;
} else if ($lval->getTypeName() == 'n_LIST') {
// Recursivey grab everything out of list(), since the grammar
// permits list() to be nested. Also note that list() is ONLY valid
// as an lval assignments, so we could safely lift this out of the
// n_BINARY_EXPRESSION branch.
$assign_vars = $lval->selectDescendantsOfType('n_VARIABLE');
foreach ($assign_vars as $var) {
$vars[] = $var;
}
}
if ($lval->getTypeName() == 'n_VARIABLE_VARIABLE') {
$scope_destroyed_at = min($scope_destroyed_at, $lval->getOffset());
// No need to raise here since we raise an error elsewhere.
}
}
$calls = $body->selectDescendantsOfType('n_FUNCTION_CALL');
foreach ($calls as $call) {
$name = strtolower($call->getChildByIndex(0)->getConcreteString());
if ($name == 'empty' || $name == 'isset') {
$params = $call
->getChildOfType(1, 'n_CALL_PARAMETER_LIST')
->selectDescendantsOfType('n_VARIABLE');
foreach ($params as $var) {
$exclude_tokens[$var->getID()] = true;
}
continue;
}
if ($name != 'extract') {
continue;
}
$scope_destroyed_at = min($scope_destroyed_at, $call->getOffset());
$this->raiseLintAtNode(
$call,
self::LINT_EXTRACT_USE,
'Avoid extract(). It is confusing and hinders static analysis.');
}
// Now we have every declaration except foreach(), handled below. Build
// two maps, one which just keeps track of which tokens are part of
// declarations ($declaration_tokens) and one which has the first offset
// where a variable is declared ($declarations).
foreach ($vars as $var) {
$concrete = $this->getConcreteVariableString($var);
$declarations[$concrete] = min(
idx($declarations, $concrete, PHP_INT_MAX),
$var->getOffset());
$declaration_tokens[$var->getID()] = true;
}
// Excluded tokens are ones we don't "count" as being used, described
// above. Put them into $exclude_tokens.
$class_statics = $body
->selectDescendantsOfType('n_CLASS_STATIC_ACCESS');
$class_static_vars = $class_statics
->selectDescendantsOfType('n_VARIABLE');
foreach ($class_static_vars as $var) {
$exclude_tokens[$var->getID()] = true;
}
// Find all the variables in scope, and figure out where they are used.
// We want to find foreach() iterators which are both declared before and
// used after the foreach() loop.
$uses = array();
$all_vars = $body->selectDescendantsOfType('n_VARIABLE');
$all = array();
// NOTE: $all_vars is not a real array so we can't unset() it.
foreach ($all_vars as $var) {
// Be strict since it's easier; we don't let you reuse an iterator you
// declared before a loop after the loop, even if you're just assigning
// to it.
$concrete = $this->getConcreteVariableString($var);
$uses[$concrete][$var->getID()] = $var->getOffset();
if (isset($declaration_tokens[$var->getID()])) {
// We know this is part of a declaration, so it's fine.
continue;
}
if (isset($exclude_tokens[$var->getID()])) {
// We know this is part of isset() or similar, so it's fine.
continue;
}
$all[$var->getOffset()] = $concrete;
}
// Do foreach() last, we want to handle implicit redeclaration of a
// variable already in scope since this probably means we're ovewriting a
// local.
// NOTE: Processing foreach expressions in order allows programs which
// reuse iterator variables in other foreach() loops -- this is fine. We
// have a separate warning to prevent nested loops from reusing the same
// iterators.
$foreaches = $body->selectDescendantsOfType('n_FOREACH');
$all_foreach_vars = array();
foreach ($foreaches as $foreach) {
$foreach_expr = $foreach->getChildOfType(0, 'n_FOREACH_EXPRESSION');
$foreach_vars = array();
// Determine the end of the foreach() loop.
$foreach_tokens = $foreach->getTokens();
$last_token = end($foreach_tokens);
$foreach_end = $last_token->getOffset();
$key_var = $foreach_expr->getChildByIndex(1);
if ($key_var->getTypeName() == 'n_VARIABLE') {
$foreach_vars[] = $key_var;
}
$value_var = $foreach_expr->getChildByIndex(2);
if ($value_var->getTypeName() == 'n_VARIABLE') {
$foreach_vars[] = $value_var;
} else {
// The root-level token may be a reference, as in:
// foreach ($a as $b => &$c) { ... }
// Reach into the n_VARIABLE_REFERENCE node to grab the n_VARIABLE
// node.
$var = $value_var->getChildByIndex(0);
if ($var->getTypeName() == 'n_VARIABLE_VARIABLE') {
$var = $var->getChildByIndex(0);
}
$foreach_vars[] = $var;
}
// Remove all uses of the iterators inside of the foreach() loop from
// the $uses map.
foreach ($foreach_vars as $var) {
$concrete = $this->getConcreteVariableString($var);
$offset = $var->getOffset();
foreach ($uses[$concrete] as $id => $use_offset) {
if (($use_offset >= $offset) && ($use_offset < $foreach_end)) {
unset($uses[$concrete][$id]);
}
}
$all_foreach_vars[] = $var;
}
}
foreach ($all_foreach_vars as $var) {
$concrete = $this->getConcreteVariableString($var);
$offset = $var->getOffset();
// If a variable was declared before a foreach() and is used after
// it, raise a message.
if (isset($declarations[$concrete])) {
if ($declarations[$concrete] < $offset) {
if (!empty($uses[$concrete]) &&
max($uses[$concrete]) > $offset) {
$message = $this->raiseLintAtNode(
$var,
self::LINT_REUSED_AS_ITERATOR,
'This iterator variable is a previously declared local '.
'variable. To avoid overwriting locals, do not reuse them '.
'as iterator variables.');
$message->setOtherLocations(array(
$this->getOtherLocation($declarations[$concrete]),
$this->getOtherLocation(max($uses[$concrete])),
));
}
}
}
// This is a declaration, exclude it from the "declare variables prior
// to use" check below.
unset($all[$var->getOffset()]);
$vars[] = $var;
}
// Now rebuild declarations to include foreach().
foreach ($vars as $var) {
$concrete = $this->getConcreteVariableString($var);
$declarations[$concrete] = min(
idx($declarations, $concrete, PHP_INT_MAX),
$var->getOffset());
$declaration_tokens[$var->getID()] = true;
}
foreach (array('n_STRING_SCALAR', 'n_HEREDOC') as $type) {
foreach ($body->selectDescendantsOfType($type) as $string) {
foreach ($string->getStringVariables() as $offset => $var) {
$all[$string->getOffset() + $offset - 1] = '$'.$var;
}
}
}
// Issue a warning for every variable token, unless it appears in a
// declaration, we know about a prior declaration, we have explicitly
// exlcuded it, or scope has been made unknowable before it appears.
$issued_warnings = array();
foreach ($all as $offset => $concrete) {
if ($offset >= $scope_destroyed_at) {
// This appears after an extract() or $$var so we have no idea
// whether it's legitimate or not. We raised a harshly-worded warning
// when scope was made unknowable, so just ignore anything we can't
// figure out.
continue;
}
if ($offset >= idx($declarations, $concrete, PHP_INT_MAX)) {
// The use appears after the variable is declared, so it's fine.
continue;
}
if (!empty($issued_warnings[$concrete])) {
// We've already issued a warning for this variable so we don't need
// to issue another one.
continue;
}
$this->raiseLintAtOffset(
$offset,
self::LINT_UNDECLARED_VARIABLE,
'Declare variables prior to use (even if you are passing them '.
'as reference parameters). You may have misspelled this '.
'variable name.',
$concrete);
$issued_warnings[$concrete] = true;
}
}
}
private function getConcreteVariableString(XHPASTNode $var) {
$concrete = $var->getConcreteString();
// Strip off curly braces as in $obj->{$property}.
$concrete = trim($concrete, '{}');
return $concrete;
}
private function lintPHPTagUse(XHPASTNode $root) {
$tokens = $root->getTokens();
foreach ($tokens as $token) {
if ($token->getTypeName() == 'T_OPEN_TAG') {
if (trim($token->getValue()) == '<?') {
$this->raiseLintAtToken(
$token,
self::LINT_PHP_SHORT_TAG,
'Use the full form of the PHP open tag, "<?php".',
"<?php\n");
}
break;
} else if ($token->getTypeName() == 'T_OPEN_TAG_WITH_ECHO') {
$this->raiseLintAtToken(
$token,
self::LINT_PHP_ECHO_TAG,
'Avoid the PHP echo short form, "<?=".');
break;
} else {
if (!preg_match('/^#!/', $token->getValue())) {
$this->raiseLintAtToken(
$token,
self::LINT_PHP_OPEN_TAG,
'PHP files should start with "<?php", which may be preceded by '.
'a "#!" line for scripts.');
}
break;
}
}
foreach ($root->selectTokensOfType('T_CLOSE_TAG') as $token) {
$this->raiseLintAtToken(
$token,
self::LINT_PHP_CLOSE_TAG,
'Do not use the PHP closing tag, "?>".');
}
}
private function lintNamingConventions(XHPASTNode $root) {
// We're going to build up a list of <type, name, token, error> tuples
// and then try to instantiate a hook class which has the opportunity to
// override us.
$names = array();
$classes = $root->selectDescendantsOfType('n_CLASS_DECLARATION');
foreach ($classes as $class) {
$name_token = $class->getChildByIndex(1);
$name_string = $name_token->getConcreteString();
$names[] = array(
'class',
$name_string,
$name_token,
ArcanistXHPASTLintNamingHook::isUpperCamelCase($name_string)
? null
: 'Follow naming conventions: classes should be named using '.
'UpperCamelCase.',
);
}
$ifaces = $root->selectDescendantsOfType('n_INTERFACE_DECLARATION');
foreach ($ifaces as $iface) {
$name_token = $iface->getChildByIndex(1);
$name_string = $name_token->getConcreteString();
$names[] = array(
'interface',
$name_string,
$name_token,
ArcanistXHPASTLintNamingHook::isUpperCamelCase($name_string)
? null
: 'Follow naming conventions: interfaces should be named using '.
'UpperCamelCase.',
);
}
$functions = $root->selectDescendantsOfType('n_FUNCTION_DECLARATION');
foreach ($functions as $function) {
$name_token = $function->getChildByIndex(2);
if ($name_token->getTypeName() == 'n_EMPTY') {
// Unnamed closure.
continue;
}
$name_string = $name_token->getConcreteString();
$names[] = array(
'function',
$name_string,
$name_token,
ArcanistXHPASTLintNamingHook::isLowercaseWithUnderscores(
ArcanistXHPASTLintNamingHook::stripPHPFunction($name_string))
? null
: 'Follow naming conventions: functions should be named using '.
'lowercase_with_underscores.',
);
}
$methods = $root->selectDescendantsOfType('n_METHOD_DECLARATION');
foreach ($methods as $method) {
$name_token = $method->getChildByIndex(2);
$name_string = $name_token->getConcreteString();
$names[] = array(
'method',
$name_string,
$name_token,
ArcanistXHPASTLintNamingHook::isLowerCamelCase(
ArcanistXHPASTLintNamingHook::stripPHPFunction($name_string))
? null
: 'Follow naming conventions: methods should be named using '.
'lowerCamelCase.',
);
}
$param_tokens = array();
$params = $root->selectDescendantsOfType('n_DECLARATION_PARAMETER_LIST');
foreach ($params as $param_list) {
foreach ($param_list->getChildren() as $param) {
$name_token = $param->getChildByIndex(1);
if ($name_token->getTypeName() == 'n_VARIABLE_REFERENCE') {
$name_token = $name_token->getChildOfType(0, 'n_VARIABLE');
}
$param_tokens[$name_token->getID()] = true;
$name_string = $name_token->getConcreteString();
$names[] = array(
'parameter',
$name_string,
$name_token,
ArcanistXHPASTLintNamingHook::isLowercaseWithUnderscores(
ArcanistXHPASTLintNamingHook::stripPHPVariable($name_string))
? null
: 'Follow naming conventions: parameters should be named using '.
'lowercase_with_underscores.',
);
}
}
$constants = $root->selectDescendantsOfType(
'n_CLASS_CONSTANT_DECLARATION_LIST');
foreach ($constants as $constant_list) {
foreach ($constant_list->getChildren() as $constant) {
$name_token = $constant->getChildByIndex(0);
$name_string = $name_token->getConcreteString();
$names[] = array(
'constant',
$name_string,
$name_token,
ArcanistXHPASTLintNamingHook::isUppercaseWithUnderscores($name_string)
? null
: 'Follow naming conventions: class constants should be named '.
'using UPPERCASE_WITH_UNDERSCORES.',
);
}
}
$member_tokens = array();
$props = $root->selectDescendantsOfType('n_CLASS_MEMBER_DECLARATION_LIST');
foreach ($props as $prop_list) {
foreach ($prop_list->getChildren() as $token_id => $prop) {
if ($prop->getTypeName() == 'n_CLASS_MEMBER_MODIFIER_LIST') {
continue;
}
$name_token = $prop->getChildByIndex(0);
$member_tokens[$name_token->getID()] = true;
$name_string = $name_token->getConcreteString();
$names[] = array(
'member',
$name_string,
$name_token,
ArcanistXHPASTLintNamingHook::isLowerCamelCase(
ArcanistXHPASTLintNamingHook::stripPHPVariable($name_string))
? null
: 'Follow naming conventions: class properties should be named '.
'using lowerCamelCase.',
);
}
}
$superglobal_map = array_fill_keys(
$this->getSuperGlobalNames(),
true);
$fdefs = $root->selectDescendantsOfType('n_FUNCTION_DECLARATION');
$mdefs = $root->selectDescendantsOfType('n_METHOD_DECLARATION');
$defs = $fdefs->add($mdefs);
foreach ($defs as $def) {
$globals = $def->selectDescendantsOfType('n_GLOBAL_DECLARATION_LIST');
$globals = $globals->selectDescendantsOfType('n_VARIABLE');
$globals_map = array();
foreach ($globals as $global) {
$global_string = $global->getConcreteString();
$globals_map[$global_string] = true;
$names[] = array(
'user',
$global_string,
$global,
// No advice for globals, but hooks have an option to provide some.
null);
}
// Exclude access of static properties, since lint will be raised at
// their declaration if they're invalid and they may not conform to
// variable rules. This is slightly overbroad (includes the entire
// rhs of a "Class::..." token) to cover cases like "Class:$x[0]". These
// variables are simply made exempt from naming conventions.
$exclude_tokens = array();
$statics = $def->selectDescendantsOfType('n_CLASS_STATIC_ACCESS');
foreach ($statics as $static) {
$rhs = $static->getChildByIndex(1);
$rhs_vars = $def->selectDescendantsOfType('n_VARIABLE');
foreach ($rhs_vars as $var) {
$exclude_tokens[$var->getID()] = true;
}
}
$vars = $def->selectDescendantsOfType('n_VARIABLE');
foreach ($vars as $token_id => $var) {
if (isset($member_tokens[$token_id])) {
continue;
}
if (isset($param_tokens[$token_id])) {
continue;
}
if (isset($exclude_tokens[$token_id])) {
continue;
}
$var_string = $var->getConcreteString();
// Awkward artifact of "$o->{$x}".
$var_string = trim($var_string, '{}');
if (isset($superglobal_map[$var_string])) {
continue;
}
if (isset($globals_map[$var_string])) {
continue;
}
$names[] = array(
'variable',
$var_string,
$var,
ArcanistXHPASTLintNamingHook::isLowercaseWithUnderscores(
ArcanistXHPASTLintNamingHook::stripPHPVariable($var_string))
? null
: 'Follow naming conventions: variables should be named using '.
'lowercase_with_underscores.',
);
}
}
$engine = $this->getEngine();
$working_copy = $engine->getWorkingCopy();
if ($working_copy) {
// If a naming hook is configured, give it a chance to override the
// default results for all the symbol names.
$hook_class = $this->naminghook
? $this->naminghook
: $working_copy->getProjectConfig('lint.xhpast.naminghook');
if ($hook_class) {
$hook_obj = newv($hook_class, array());
foreach ($names as $k => $name_attrs) {
list($type, $name, $token, $default) = $name_attrs;
$result = $hook_obj->lintSymbolName($type, $name, $default);
$names[$k][3] = $result;
}
}
}
// Raise anything we're left with.
foreach ($names as $k => $name_attrs) {
list($type, $name, $token, $result) = $name_attrs;
if ($result) {
$this->raiseLintAtNode(
$token,
self::LINT_NAMING_CONVENTIONS,
$result);
}
}
}
private function lintSurpriseConstructors(XHPASTNode $root) {
$classes = $root->selectDescendantsOfType('n_CLASS_DECLARATION');
foreach ($classes as $class) {
$class_name = $class->getChildByIndex(1)->getConcreteString();
$methods = $class->selectDescendantsOfType('n_METHOD_DECLARATION');
foreach ($methods as $method) {
$method_name_token = $method->getChildByIndex(2);
$method_name = $method_name_token->getConcreteString();
if (strtolower($class_name) == strtolower($method_name)) {
$this->raiseLintAtNode(
$method_name_token,
self::LINT_IMPLICIT_CONSTRUCTOR,
'Name constructors __construct() explicitly. This method is a '.
'constructor because it has the same name as the class it is '.
'defined in.');
}
}
}
}
private function lintParenthesesShouldHugExpressions(XHPASTNode $root) {
$calls = $root->selectDescendantsOfType('n_CALL_PARAMETER_LIST');
$controls = $root->selectDescendantsOfType('n_CONTROL_CONDITION');
$fors = $root->selectDescendantsOfType('n_FOR_EXPRESSION');
$foreach = $root->selectDescendantsOfType('n_FOREACH_EXPRESSION');
$decl = $root->selectDescendantsOfType('n_DECLARATION_PARAMETER_LIST');
$all_paren_groups = $calls
->add($controls)
->add($fors)
->add($foreach)
->add($decl);
foreach ($all_paren_groups as $group) {
$tokens = $group->getTokens();
$token_o = array_shift($tokens);
$token_c = array_pop($tokens);
if ($token_o->getTypeName() != '(') {
throw new Exception('Expected open paren!');
}
if ($token_c->getTypeName() != ')') {
throw new Exception('Expected close paren!');
}
$nonsem_o = $token_o->getNonsemanticTokensAfter();
$nonsem_c = $token_c->getNonsemanticTokensBefore();
if (!$nonsem_o) {
continue;
}
$raise = array();
$string_o = implode('', mpull($nonsem_o, 'getValue'));
if (preg_match('/^[ ]+$/', $string_o)) {
$raise[] = array($nonsem_o, $string_o);
}
if ($nonsem_o !== $nonsem_c) {
$string_c = implode('', mpull($nonsem_c, 'getValue'));
if (preg_match('/^[ ]+$/', $string_c)) {
$raise[] = array($nonsem_c, $string_c);
}
}
foreach ($raise as $warning) {
list($tokens, $string) = $warning;
$this->raiseLintAtOffset(
reset($tokens)->getOffset(),
self::LINT_PARENTHESES_SPACING,
'Parentheses should hug their contents.',
$string,
'');
}
}
}
private function lintSpaceAfterControlStatementKeywords(XHPASTNode $root) {
foreach ($root->getTokens() as $id => $token) {
switch ($token->getTypeName()) {
case 'T_IF':
case 'T_ELSE':
case 'T_FOR':
case 'T_FOREACH':
case 'T_WHILE':
case 'T_DO':
case 'T_SWITCH':
$after = $token->getNonsemanticTokensAfter();
if (empty($after)) {
$this->raiseLintAtToken(
$token,
self::LINT_CONTROL_STATEMENT_SPACING,
'Convention: put a space after control statements.',
$token->getValue().' ');
} else if (count($after) == 1) {
$space = head($after);
// If we have an else clause with braces, $space may not be
// a single white space. e.g.,
//
// if ($x)
// echo 'foo'
// else // <- $space is not " " but "\n ".
// echo 'bar'
//
// We just require it starts with either a whitespace or a newline.
if ($token->getTypeName() == 'T_ELSE' ||
$token->getTypeName() == 'T_DO') {
break;
}
if ($space->isAnyWhitespace() && $space->getValue() != ' ') {
$this->raiseLintAtToken(
$space,
self::LINT_CONTROL_STATEMENT_SPACING,
'Convention: put a single space after control statements.',
' ');
}
}
break;
}
}
}
private function lintSpaceAroundBinaryOperators(XHPASTNode $root) {
$expressions = $root->selectDescendantsOfType('n_BINARY_EXPRESSION');
foreach ($expressions as $expression) {
$operator = $expression->getChildByIndex(1);
$operator_value = $operator->getConcreteString();
list($before, $after) = $operator->getSurroundingNonsemanticTokens();
$replace = null;
if (empty($before) && empty($after)) {
$replace = " {$operator_value} ";
} else if (empty($before)) {
$replace = " {$operator_value}";
} else if (empty($after)) {
$replace = "{$operator_value} ";
}
if ($replace !== null) {
$this->raiseLintAtNode(
$operator,
self::LINT_BINARY_EXPRESSION_SPACING,
'Convention: logical and arithmetic operators should be '.
'surrounded by whitespace.',
$replace);
}
}
$tokens = $root->selectTokensOfType(',');
foreach ($tokens as $token) {
$next = $token->getNextToken();
switch ($next->getTypeName()) {
case ')':
case 'T_WHITESPACE':
break;
default:
$this->raiseLintAtToken(
$token,
self::LINT_BINARY_EXPRESSION_SPACING,
'Convention: comma should be followed by space.',
', ');
break;
}
}
$tokens = $root->selectTokensOfType('T_DOUBLE_ARROW');
foreach ($tokens as $token) {
$prev = $token->getPrevToken();
$next = $token->getNextToken();
$prev_type = $prev->getTypeName();
$next_type = $next->getTypeName();
$prev_space = ($prev_type == 'T_WHITESPACE');
$next_space = ($next_type == 'T_WHITESPACE');
$replace = null;
if (!$prev_space && !$next_space) {
$replace = ' => ';
} else if ($prev_space && !$next_space) {
$replace = '=> ';
} else if (!$prev_space && $next_space) {
$replace = ' =>';
}
if ($replace !== null) {
$this->raiseLintAtToken(
$token,
self::LINT_BINARY_EXPRESSION_SPACING,
'Convention: double arrow should be surrounded by whitespace.',
$replace);
}
}
// TODO: Spacing around default parameter assignment in function/method
// declarations (which is not n_BINARY_EXPRESSION).
}
private function lintSpaceAroundConcatenationOperators(XHPASTNode $root) {
$tokens = $root->selectTokensOfType('.');
foreach ($tokens as $token) {
$prev = $token->getPrevToken();
$next = $token->getNextToken();
foreach (array('prev' => $prev, 'next' => $next) as $wtoken) {
if ($wtoken->getTypeName() != 'T_WHITESPACE') {
continue;
}
$value = $wtoken->getValue();
if (strpos($value, "\n") !== false) {
// If the whitespace has a newline, it's conventional.
continue;
}
$next = $wtoken->getNextToken();
if ($next && $next->getTypeName() == 'T_COMMENT') {
continue;
}
$this->raiseLintAtToken(
$wtoken,
self::LINT_BINARY_EXPRESSION_SPACING,
'Convention: no spaces around "." (string concatenation) operator.',
'');
}
}
}
private function lintDynamicDefines(XHPASTNode $root) {
$calls = $root->selectDescendantsOfType('n_FUNCTION_CALL');
foreach ($calls as $call) {
$name = $call->getChildByIndex(0)->getConcreteString();
if (strtolower($name) == 'define') {
$parameter_list = $call->getChildOfType(1, 'n_CALL_PARAMETER_LIST');
$defined = $parameter_list->getChildByIndex(0);
if (!$defined->isStaticScalar()) {
$this->raiseLintAtNode(
$defined,
self::LINT_DYNAMIC_DEFINE,
'First argument to define() must be a string literal.');
}
}
}
}
private function lintUseOfThisInStaticMethods(XHPASTNode $root) {
$classes = $root->selectDescendantsOfType('n_CLASS_DECLARATION');
foreach ($classes as $class) {
$methods = $class->selectDescendantsOfType('n_METHOD_DECLARATION');
foreach ($methods as $method) {
$attributes = $method
->getChildByIndex(0, 'n_METHOD_MODIFIER_LIST')
->selectDescendantsOfType('n_STRING');
$method_is_static = false;
$method_is_abstract = false;
foreach ($attributes as $attribute) {
if (strtolower($attribute->getConcreteString()) == 'static') {
$method_is_static = true;
}
if (strtolower($attribute->getConcreteString()) == 'abstract') {
$method_is_abstract = true;
}
}
if ($method_is_abstract) {
continue;
}
if (!$method_is_static) {
continue;
}
$body = $method->getChildOfType(5, 'n_STATEMENT_LIST');
$variables = $body->selectDescendantsOfType('n_VARIABLE');
foreach ($variables as $variable) {
if ($method_is_static &&
strtolower($variable->getConcreteString()) == '$this') {
$this->raiseLintAtNode(
$variable,
self::LINT_STATIC_THIS,
'You can not reference "$this" inside a static method.');
}
}
}
}
}
/**
* preg_quote() takes two arguments, but the second one is optional because
* it is possible to use (), [] or {} as regular expression delimiters. If
* you don't pass a second argument, you're probably going to get something
* wrong.
*/
private function lintPregQuote(XHPASTNode $root) {
$function_calls = $root->selectDescendantsOfType('n_FUNCTION_CALL');
foreach ($function_calls as $call) {
$name = $call->getChildByIndex(0)->getConcreteString();
if (strtolower($name) === 'preg_quote') {
$parameter_list = $call->getChildOfType(1, 'n_CALL_PARAMETER_LIST');
if (count($parameter_list->getChildren()) !== 2) {
$this->raiseLintAtNode(
$call,
self::LINT_PREG_QUOTE_MISUSE,
'If you use pattern delimiters that require escaping (such as //, '.
'but not ()) then you should pass two arguments to preg_quote(), '.
'so that preg_quote() knows which delimiter to escape.');
}
}
}
}
/**
* Exit is parsed as an expression, but using it as such is almost always
* wrong. That is, this is valid:
*
* strtoupper(33 * exit - 6);
*
* When exit is used as an expression, it causes the program to terminate with
* exit code 0. This is likely not what is intended; these statements have
* different effects:
*
* exit(-1);
* exit -1;
*
* The former exits with a failure code, the latter with a success code!
*/
private function lintExitExpressions(XHPASTNode $root) {
$unaries = $root->selectDescendantsOfType('n_UNARY_PREFIX_EXPRESSION');
foreach ($unaries as $unary) {
$operator = $unary->getChildByIndex(0)->getConcreteString();
if (strtolower($operator) == 'exit') {
if ($unary->getParentNode()->getTypeName() != 'n_STATEMENT') {
$this->raiseLintAtNode(
$unary,
self::LINT_EXIT_EXPRESSION,
'Use exit as a statement, not an expression.');
}
}
}
}
private function lintArrayIndexWhitespace(XHPASTNode $root) {
$indexes = $root->selectDescendantsOfType('n_INDEX_ACCESS');
foreach ($indexes as $index) {
$tokens = $index->getChildByIndex(0)->getTokens();
$last = array_pop($tokens);
$trailing = $last->getNonsemanticTokensAfter();
$trailing_text = implode('', mpull($trailing, 'getValue'));
if (preg_match('/^ +$/', $trailing_text)) {
$this->raiseLintAtOffset(
$last->getOffset() + strlen($last->getValue()),
self::LINT_ARRAY_INDEX_SPACING,
'Convention: no spaces before index access.',
$trailing_text,
'');
}
}
}
private function lintTODOComments(XHPASTNode $root) {
$comments = $root->selectTokensOfType('T_COMMENT') +
$root->selectTokensOfType('T_DOC_COMMENT');
foreach ($comments as $token) {
$value = $token->getValue();
if ($token->getTypeName() === 'T_DOC_COMMENT') {
$regex = '/(TODO|@todo)/';
} else {
$regex = '/TODO/';
}
$matches = null;
$preg = preg_match_all(
$regex,
$value,
$matches,
PREG_OFFSET_CAPTURE);
foreach ($matches[0] as $match) {
list($string, $offset) = $match;
$this->raiseLintAtOffset(
$token->getOffset() + $offset,
self::LINT_TODO_COMMENT,
'This comment has a TODO.',
$string);
}
}
}
/**
* Lint that if the file declares exactly one interface or class,
* the name of the file matches the name of the class,
* unless the classname is funky like an XHP element.
*/
private function lintPrimaryDeclarationFilenameMatch(XHPASTNode $root) {
$classes = $root->selectDescendantsOfType('n_CLASS_DECLARATION');
$interfaces = $root->selectDescendantsOfType('n_INTERFACE_DECLARATION');
if (count($classes) + count($interfaces) != 1) {
return;
}
$declarations = count($classes) ? $classes : $interfaces;
$declarations->rewind();
$declaration = $declarations->current();
$decl_name = $declaration->getChildByIndex(1);
$decl_string = $decl_name->getConcreteString();
// Exclude strangely named classes, e.g. XHP tags.
if (!preg_match('/^\w+$/', $decl_string)) {
return;
}
$rename = $decl_string.'.php';
$path = $this->getActivePath();
$filename = basename($path);
if ($rename == $filename) {
return;
}
$this->raiseLintAtNode(
$decl_name,
self::LINT_CLASS_FILENAME_MISMATCH,
"The name of this file differs from the name of the class or interface ".
"it declares. Rename the file to '{$rename}'.");
}
private function lintPlusOperatorOnStrings(XHPASTNode $root) {
$binops = $root->selectDescendantsOfType('n_BINARY_EXPRESSION');
foreach ($binops as $binop) {
$op = $binop->getChildByIndex(1);
if ($op->getConcreteString() != '+') {
continue;
}
$left = $binop->getChildByIndex(0);
$right = $binop->getChildByIndex(2);
if (($left->getTypeName() == 'n_STRING_SCALAR') ||
($right->getTypeName() == 'n_STRING_SCALAR')) {
$this->raiseLintAtNode(
$binop,
self::LINT_PLUS_OPERATOR_ON_STRINGS,
"In PHP, '.' is the string concatenation operator, not '+'. This ".
"expression uses '+' with a string literal as an operand.");
}
}
}
/**
* Finds duplicate keys in array initializers, as in
* array(1 => 'anything', 1 => 'foo'). Since the first entry is ignored,
* this is almost certainly an error.
*/
private function lintDuplicateKeysInArray(XHPASTNode $root) {
$array_literals = $root->selectDescendantsOfType('n_ARRAY_LITERAL');
foreach ($array_literals as $array_literal) {
$nodes_by_key = array();
$keys_warn = array();
$list_node = $array_literal->getChildByIndex(0);
foreach ($list_node->getChildren() as $array_entry) {
$key_node = $array_entry->getChildByIndex(0);
switch ($key_node->getTypeName()) {
case 'n_STRING_SCALAR':
case 'n_NUMERIC_SCALAR':
// Scalars: array(1 => 'v1', '1' => 'v2');
$key = 'scalar:'.(string)$key_node->evalStatic();
break;
case 'n_SYMBOL_NAME':
case 'n_VARIABLE':
case 'n_CLASS_STATIC_ACCESS':
// Constants: array(CONST => 'v1', CONST => 'v2');
// Variables: array($a => 'v1', $a => 'v2');
// Class constants and vars: array(C::A => 'v1', C::A => 'v2');
$key = $key_node->getTypeName().':'.$key_node->getConcreteString();
break;
default:
$key = null;
break;
}
if ($key !== null) {
if (isset($nodes_by_key[$key])) {
$keys_warn[$key] = true;
}
$nodes_by_key[$key][] = $key_node;
}
}
foreach ($keys_warn as $key => $_) {
$node = array_pop($nodes_by_key[$key]);
$message = $this->raiseLintAtNode(
$node,
self::LINT_DUPLICATE_KEYS_IN_ARRAY,
'Duplicate key in array initializer. PHP will ignore all '.
'but the last entry.');
$locations = array();
foreach ($nodes_by_key[$key] as $node) {
$locations[] = $this->getOtherLocation($node->getOffset());
}
$message->setOtherLocations($locations);
}
}
}
private function lintClosingCallParen(XHPASTNode $root) {
$calls = $root->selectDescendantsOfType('n_FUNCTION_CALL');
$calls = $calls->add($root->selectDescendantsOfType('n_METHOD_CALL'));
foreach ($calls as $call) {
// If the last parameter of a call is a HEREDOC, don't apply this rule.
$params = $call
->getChildOfType(1, 'n_CALL_PARAMETER_LIST')
->getChildren();
if ($params) {
$last_param = last($params);
if ($last_param->getTypeName() == 'n_HEREDOC') {
continue;
}
}
$tokens = $call->getTokens();
$last = array_pop($tokens);
$trailing = $last->getNonsemanticTokensBefore();
$trailing_text = implode('', mpull($trailing, 'getValue'));
if (preg_match('/^\s+$/', $trailing_text)) {
$this->raiseLintAtOffset(
$last->getOffset() - strlen($trailing_text),
self::LINT_CLOSING_CALL_PAREN,
'Convention: no spaces before closing parenthesis in calls.',
$trailing_text,
'');
}
}
}
private function lintClosingDeclarationParen(XHPASTNode $root) {
$decs = $root->selectDescendantsOfType('n_FUNCTION_DECLARATION');
$decs = $decs->add($root->selectDescendantsOfType('n_METHOD_DECLARATION'));
foreach ($decs as $dec) {
$params = $dec->getChildOfType(3, 'n_DECLARATION_PARAMETER_LIST');
$tokens = $params->getTokens();
$last = array_pop($tokens);
$trailing = $last->getNonsemanticTokensBefore();
$trailing_text = implode('', mpull($trailing, 'getValue'));
if (preg_match('/^\s+$/', $trailing_text)) {
$this->raiseLintAtOffset(
$last->getOffset() - strlen($trailing_text),
self::LINT_CLOSING_DECL_PAREN,
'Convention: no spaces before closing parenthesis in function and '.
'method declarations.',
$trailing_text,
'');
}
}
}
private function lintKeywordCasing(XHPASTNode $root) {
$keywords = array();
$symbols = $root->selectDescendantsOfType('n_SYMBOL_NAME');
foreach ($symbols as $symbol) {
$keywords[] = head($symbol->getTokens());
}
$arrays = $root->selectDescendantsOfType('n_ARRAY_LITERAL');
foreach ($arrays as $array) {
$keywords[] = head($array->getTokens());
}
$typehints = $root->selectDescendantsOfType('n_TYPE_NAME');
foreach ($typehints as $typehint) {
$keywords[] = head($typehint->getTokens());
}
$new_invocations = $root->selectDescendantsOfType('n_NEW');
foreach ($new_invocations as $invocation) {
$keywords[] = head($invocation->getTokens());
}
// NOTE: Although PHP generally allows arbitrary casing for all language
// keywords, it's exceedingly rare for anyone to type, e.g., "CLASS" or
// "cLaSs" in the wild. This list just attempts to cover unconventional
// spellings which see some level of use, not all keywords exhaustively.
// There is no token or node type which spans all keywords, so this is
// significantly simpler.
static $keyword_map = array(
'true' => 'true',
'false' => 'false',
'null' => 'null',
'array' => 'array',
'new' => 'new',
);
foreach ($keywords as $keyword) {
$value = $keyword->getValue();
$value_key = strtolower($value);
if (!isset($keyword_map[$value_key])) {
continue;
}
$expected_spelling = $keyword_map[$value_key];
if ($value !== $expected_spelling) {
$this->raiseLintAtToken(
$keyword,
self::LINT_KEYWORD_CASING,
"Convention: spell keyword '{$value}' as '{$expected_spelling}'.",
$expected_spelling);
}
}
}
private function lintStrings(XHPASTNode $root) {
$nodes = $root->selectDescendantsOfTypes(array(
'n_CONCATENATION_LIST',
'n_STRING_SCALAR',
));
foreach ($nodes as $node) {
$strings = array();
if ($node->getTypeName() === 'n_CONCATENATION_LIST') {
$strings = $node->selectDescendantsOfType('n_STRING_SCALAR');
} else if ($node->getTypeName() === 'n_STRING_SCALAR') {
$strings = array($node);
if ($node->getParentNode()->getTypeName() === 'n_CONCATENATION_LIST') {
continue;
}
}
$valid = false;
$invalid_nodes = array();
$fixes = array();
foreach ($strings as $string) {
$concrete_string = $string->getConcreteString();
$single_quoted = ($concrete_string[0] === "'");
$contents = substr($concrete_string, 1, -1);
// Double quoted strings are allowed when the string contains the
// following characters.
static $allowed_chars = array(
'\n',
'\r',
'\t',
'\v',
'\e',
'\f',
'\'',
'\0',
'\1',
'\2',
'\3',
'\4',
'\5',
'\6',
'\7',
'\x',
);
$contains_special_chars = false;
foreach ($allowed_chars as $allowed_char) {
if (strpos($contents, $allowed_char) !== false) {
$contains_special_chars = true;
}
}
if (!$string->isConstantString()) {
$valid = true;
} else if ($contains_special_chars && !$single_quoted) {
$valid = true;
} else if (!$contains_special_chars && !$single_quoted) {
$invalid_nodes[] = $string;
$fixes[$string->getID()] = "'".str_replace('\"', '"', $contents)."'";
}
}
if (!$valid) {
foreach ($invalid_nodes as $invalid_node) {
$this->raiseLintAtNode(
$invalid_node,
self::LINT_DOUBLE_QUOTE,
pht(
'String does not require double quotes. For consistency, '.
'prefer single quotes.'),
$fixes[$invalid_node->getID()]);
}
}
}
}
protected function lintElseIfStatements(XHPASTNode $root) {
$tokens = $root->selectTokensOfType('T_ELSEIF');
foreach ($tokens as $token) {
$this->raiseLintAtToken(
$token,
self::LINT_ELSEIF_USAGE,
pht('Usage of `else if` is preferred over `elseif`.'),
'else if');
}
}
protected function lintSemicolons(XHPASTNode $root) {
$tokens = $root->selectTokensOfType(';');
foreach ($tokens as $token) {
$prev = $token->getPrevToken();
if ($prev->isAnyWhitespace()) {
$this->raiseLintAtToken(
$prev,
self::LINT_SEMICOLON_SPACING,
pht('Space found before semicolon.'),
'');
}
}
}
public function getSuperGlobalNames() {
return array(
'$GLOBALS',
'$_SERVER',
'$_GET',
'$_POST',
'$_FILES',
'$_COOKIE',
'$_SESSION',
'$_REQUEST',
'$_ENV',
);
}
}
diff --git a/src/workflow/ArcanistLiberateWorkflow.php b/src/workflow/ArcanistLiberateWorkflow.php
index d55589b9..a9cccced 100644
--- a/src/workflow/ArcanistLiberateWorkflow.php
+++ b/src/workflow/ArcanistLiberateWorkflow.php
@@ -1,241 +1,241 @@
<?php
/**
* Create and update libphutil libraries.
*
* This workflow is unusual and involves reexecuting 'arc liberate' as a
* subprocess with "--remap" and "--verify". This is because there is no way
* to unload or reload a library, so every process is stuck with the library
* definition it had when it first loaded. This is normally fine, but
* problematic in this case because 'arc liberate' modifies library definitions.
*
* @group workflow
*/
final class ArcanistLiberateWorkflow extends ArcanistBaseWorkflow {
public function getWorkflowName() {
return 'liberate';
}
public function getCommandSynopses() {
return phutil_console_format(<<<EOTEXT
**liberate** [__path__]
EOTEXT
);
}
public function getCommandHelp() {
return phutil_console_format(<<<EOTEXT
Supports: libphutil
Create or update a libphutil library, generating required metadata
files like \__init__.php.
EOTEXT
);
}
public function getArguments() {
return array(
'all' => array(
'help' =>
'Drop the module cache before liberating. This will completely '.
'reanalyze the entire library. Thorough, but slow!',
),
'force-update' => array(
'help' =>
'Force the library map to be updated, even in the presence of '.
'lint errors.',
),
'library-name' => array(
'param' => 'name',
'help' =>
'Use a flag for library name rather than awaiting user input.',
),
'remap' => array(
'hide' => true,
'help' =>
'Internal. Run the remap step of liberation. You do not need to '.
'run this unless you are debugging the workflow.',
),
'verify' => array(
'hide' => true,
'help' =>
'Internal. Run the verify step of liberation. You do not need to '.
'run this unless you are debugging the workflow.',
),
'upgrade' => array(
'hide' => true,
'help' => 'Experimental. Upgrade library to v2.',
),
'*' => 'argv',
);
}
public function run() {
$argv = $this->getArgument('argv');
if (count($argv) > 1) {
throw new ArcanistUsageException(
"Provide only one path to 'arc liberate'. The path should be a ".
"directory where you want to create or update a libphutil library.");
} else if (count($argv) == 0) {
$path = getcwd();
} else {
$path = reset($argv);
}
$is_remap = $this->getArgument('remap');
$is_verify = $this->getArgument('verify');
$path = Filesystem::resolvePath($path);
if (Filesystem::pathExists($path) && is_dir($path)) {
$init = id(new FileFinder($path))
->withPath('*/__phutil_library_init__.php')
->find();
} else {
$init = null;
}
if ($init) {
if (count($init) > 1) {
throw new ArcanistUsageException(
'Specified directory contains more than one libphutil library. Use '.
'a more specific path.');
}
$path = Filesystem::resolvePath(dirname(reset($init)), $path);
} else {
$found = false;
foreach (Filesystem::walkToRoot($path) as $dir) {
if (Filesystem::pathExists($dir.'/__phutil_library_init__.php')) {
$path = $dir;
$found = true;
break;
}
}
if (!$found) {
echo "No library currently exists at that path...\n";
$this->liberateCreateDirectory($path);
$this->liberateCreateLibrary($path);
return;
}
}
$version = $this->getLibraryFormatVersion($path);
switch ($version) {
case 1:
if ($this->getArgument('upgrade')) {
return $this->upgradeLibrary($path);
}
throw new ArcanistUsageException(
"This library is using libphutil v1, which is no longer supported. ".
"Run 'arc liberate --upgrade' to upgrade to v2.");
case 2:
if ($this->getArgument('upgrade')) {
throw new ArcanistUsageException(
"Can't upgrade a v2 library!");
}
return $this->liberateVersion2($path);
default:
throw new ArcanistUsageException(
"Unknown library version '{$version}'!");
}
}
private function getLibraryFormatVersion($path) {
$map_file = $path.'/__phutil_library_map__.php';
if (!Filesystem::pathExists($map_file)) {
// Default to library v1.
return 1;
}
$map = Filesystem::readFile($map_file);
$matches = null;
if (preg_match('/@phutil-library-version (\d+)/', $map, $matches)) {
return (int)$matches[1];
}
return 1;
}
private function liberateVersion2($path) {
$bin = $this->getScriptPath('scripts/phutil_rebuild_map.php');
return phutil_passthru(
'php %s %C %s',
$bin,
$this->getArgument('all') ? '--drop-cache' : '',
$path);
}
private function upgradeLibrary($path) {
$inits = id(new FileFinder($path))
->withPath('*/__init__.php')
->withType('f')
->find();
echo "Removing __init__.php files...\n";
foreach ($inits as $init) {
Filesystem::remove($path.'/'.$init);
}
echo "Upgrading library to v2...\n";
$this->liberateVersion2($path);
}
private function liberateCreateDirectory($path) {
if (Filesystem::pathExists($path)) {
if (!is_dir($path)) {
throw new ArcanistUsageException(
'Provide a directory to create or update a libphutil library in.');
}
return;
}
echo "The directory '{$path}' does not exist.";
if (!phutil_console_confirm('Do you want to create it?')) {
throw new ArcanistUsageException('Cancelled.');
}
execx('mkdir -p %s', $path);
}
private function liberateCreateLibrary($path) {
$init_path = $path.'/__phutil_library_init__.php';
if (Filesystem::pathExists($init_path)) {
return;
}
echo "Creating new libphutil library in '{$path}'.\n";
do {
$name = $this->getArgument('library-name');
if ($name === null) {
echo "Choose a name for the new library.\n";
$name = phutil_console_prompt('What do you want to name this library?');
} else {
echo "Using library name {$name}.\n";
}
if (preg_match('/^[a-z-]+$/', $name)) {
break;
} else {
echo "Library name should contain only lowercase letters and ".
"hyphens.\n";
}
} while (true);
$template =
"<?php\n\n".
"phutil_register_library('{$name}', __FILE__);\n";
echo "Writing '__phutil_library_init__.php' to '{$path}'...\n";
Filesystem::writeFile($init_path, $template);
$this->liberateVersion2($path);
}
private function getScriptPath($script) {
- $root = dirname(phutil_get_library_root('arcanist'));
+ $root = dirname(phutil_get_library_root('phutil'));
return $root.'/'.$script;
}
}

File Metadata

Mime Type
text/x-diff
Expires
Tue, Jul 8, 12:30 PM (11 h, 31 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
62/ee/1696ec0362f37614c30f67367e74

Event Timeline