iFastNet’s wonderful job
May I ask where can I find a full list of disabled functions in PHP 8.2 here? Thanks.
There are currently no known ways to check it (at least not me)
However, @JxstErg1 scrapped a html archive of the php info before iFastNet overwrote the function
It indicates that the following functions are disabled:
The functions (Click to expand)
exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,dl,popen,popen,pcntl_exec,socket_accept,socket_bind,socket_clear_error,socket_close,socket_connect,socket_create_listen,socket_create_pair,socket_create,socket_get_option,socket_getpeername,socket_getsockname,socket_last_error,socket_listen,socket_read,socket_recv,socket_recvfrom,socket_select,socket_send,socket_sendto,socket_set_block,socket_set_nonblock,socket_set_option,socket_shutdown,socket_strerror,socket_write,stream_socket_server,pfsockopen,disk_total_space,disk_free_space,chown,diskfreespace,getrusage,get_current_user,set_time_limit,dl,leak,listen,chgrp,link,symlink,dlopen,proc_nice,proc_get_stats,proc_terminate,shell_exec,sh2_exec,posix_getpwuid,posix_getgrgid,posix_kill,ini_restore,mkfifo,dbmopen,dbase_open,filepro,filepro_rowcount,posix_mkfifo,_xyec,mainwork,get_num_redirects,putenv,geoip_open,sleep,imap_open,apache_child_terminate,apache_get_modules,apache_get_version,apache_getenv,apache_lookup_uri,apache_note,apache_request_headers,apache_response_headers,php_info,ini_get_all,apache_setenv,getallheaders,virtual,fsockopen,curl_multi_exec
phpinfo_php82_ifastnet_free-1.html (91.8 KB)
This might help someone who needs development information neatly compiled:
Official disabled_function list
php_uname,putenv,exec,phpinfo,system,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,pcntl_exec,socket_accept,socket_bind,socket_clear_error,socket_close,socket_connect,socket_create_listen,socket_create_pair,socket_create,socket_get_option,socket_getpeername,socket_getsockname,socket_last_error,socket_listen,socket_read,socket_recv,socket_recvfrom,socket_select,socket_send,socket_sendto,socket_set_block,socket_set_nonblock,socket_set_option,socket_shutdown,socket_strerror,socket_write,stream_socket_server,pfsockopen,disk_total_space,chown,diskfreespace,getrusage,get_current_user,set_time_limit,dl,listen,chgrp,link,symlink,proc_nice,proc_get_stats,proc_terminate,shell_exec,ssh2_exec,posix_getpwuid,posix_getgrgid,posix_kill,ini_restore,dbase_open,posix_mkfifo,sleep,imap_open,apache_child_terminate,apache_get_modules,apache_get_version,apache_getenv,apache_lookup_uri,apache_note,apache_request_headers,apache_response_headers,ini_get_all,apache_setenv,getallheaders,virtual,curl_multi_exec
Missing functions
- readline
- readline_info
- readline_add_history
- readline_clear_history
- readline_list_history
- readline_read_history
- readline_write_history
- readline_completion_function
- get_current_user
- ini_alter
- ini_restore
- exec
- system
- passthru
- escapeshellcmd
- escapeshellarg
- shell_exec
- proc_nice
- popen
- chown
- chgrp
- disk_total_space
- pfsockopen
- symlink
- link
- proc_open
- proc_close
- proc_terminate
- stream_socket_server
- sapi_windows_vt100_support
- sapi_windows_cp_set
- sapi_windows_cp_get
- sapi_windows_cp_conv
- sapi_windows_cp_is_utf8
- sapi_windows_set_ctrl_handler
- sapi_windows_generate_ctrl_event
- curl_multi_exec
- variant_set
- variant_add
- variant_cat
- variant_sub
- variant_mul
- variant_and
- variant_div
- variant_eqv
- variant_idiv
- variant_imp
- variant_mod
- variant_or
- variant_pow
- variant_xor
- variant_abs
- variant_fix
- variant_int
- variant_neg
- variant_not
- variant_round
- variant_cmp
- variant_date_to_timestamp
- variant_date_from_timestamp
- variant_get_type
- variant_set_type
- variant_cast
- com_get_active_object
- com_create_guid
- com_event_sink
- com_print_typeinfo
- com_message_pump
- com_load_typelib
- imagegrabwindow
- imagegrabscreen
- imap_open
- imap_reopen
- imap_close
- imap_num_msg
- imap_num_recent
- imap_headers
- imap_headerinfo
- imap_rfc822_parse_headers
- imap_rfc822_write_address
- imap_rfc822_parse_adrlist
- imap_body
- imap_fetchtext
- imap_bodystruct
- imap_fetchbody
- imap_fetchmime
- imap_savebody
- imap_fetchheader
- imap_fetchstructure
- imap_gc
- imap_expunge
- imap_delete
- imap_undelete
- imap_check
- imap_listscan
- imap_scan
- imap_scanmailbox
- imap_mail_copy
- imap_mail_move
- imap_mail_compose
- imap_createmailbox
- imap_create
- imap_renamemailbox
- imap_rename
- imap_deletemailbox
- imap_subscribe
- imap_unsubscribe
- imap_append
- imap_ping
- imap_base64
- imap_qprint
- imap_8bit
- imap_binary
- imap_utf8
- imap_status
- imap_mailboxmsginfo
- imap_setflag_full
- imap_clearflag_full
- imap_sort
- imap_uid
- imap_msgno
- imap_list
- imap_listmailbox
- imap_lsub
- imap_listsubscribed
- imap_getsubscribed
- imap_getmailboxes
- imap_fetch_overview
- imap_alerts
- imap_errors
- imap_last_error
- imap_search
- imap_utf7_decode
- imap_utf7_encode
- imap_utf8_to_mutf7
- imap_mutf7_to_utf8
- imap_mime_header_decode
- imap_thread
- imap_timeout
- imap_get_quota
- imap_get_quotaroot
- imap_set_quota
- imap_setacl
- imap_getacl
- imap_mail
- ldap_connect
- ldap_unbind
- ldap_close
- ldap_bind
- ldap_bind_ext
- ldap_sasl_bind
- ldap_read
- ldap_list
- ldap_search
- ldap_free_result
- ldap_count_entries
- ldap_first_entry
- ldap_next_entry
- ldap_get_entries
- ldap_first_attribute
- ldap_next_attribute
- ldap_get_attributes
- ldap_get_values_len
- ldap_get_values
- ldap_get_dn
- ldap_explode_dn
- ldap_dn2ufn
- ldap_add
- ldap_add_ext
- ldap_delete
- ldap_delete_ext
- ldap_modify_batch
- ldap_mod_add
- ldap_mod_add_ext
- ldap_mod_replace
- ldap_modify
- ldap_mod_replace_ext
- ldap_mod_del
- ldap_mod_del_ext
- ldap_errno
- ldap_error
- ldap_err2str
- ldap_compare
- ldap_rename
- ldap_rename_ext
- ldap_get_option
- ldap_set_option
- ldap_count_references
- ldap_first_reference
- ldap_next_reference
- ldap_parse_reference
- ldap_parse_result
- ldap_start_tls
- ldap_escape
- ldap_exop
- ldap_exop_passwd
- ldap_exop_whoami
- ldap_exop_refresh
- ldap_parse_exop
- socket_select
- socket_create_listen
- socket_accept
- socket_set_nonblock
- socket_set_block
- socket_listen
- socket_close
- socket_write
- socket_read
- socket_getsockname
- socket_getpeername
- socket_create
- socket_connect
- socket_strerror
- socket_bind
- socket_recv
- socket_send
- socket_recvfrom
- socket_sendto
- socket_get_option
- socket_getopt
- socket_set_option
- socket_setopt
- socket_create_pair
- socket_shutdown
- socket_last_error
- socket_clear_error
- socket_import_stream
- socket_export_stream
- socket_sendmsg
- socket_recvmsg
- socket_cmsg_space
- socket_addrinfo_lookup
- socket_addrinfo_connect
- socket_addrinfo_bind
- socket_addrinfo_explain
- socket_wsaprotocol_info_export
- socket_wsaprotocol_info_import
- socket_wsaprotocol_info_release
- tidy_parse_string
- tidy_get_error_buffer
- tidy_get_output
- tidy_parse_file
- tidy_clean_repair
- tidy_repair_string
- tidy_repair_file
- tidy_diagnose
- tidy_get_release
- tidy_get_opt_doc
- tidy_get_config
- tidy_get_status
- tidy_get_html_ver
- tidy_is_xhtml
- tidy_is_xml
- tidy_error_count
- tidy_warning_count
- tidy_access_count
- tidy_config_count
- tidy_getopt
- tidy_get_root
- tidy_get_html
- tidy_get_head
- tidy_get_body
- dl
- cli_set_process_title
- cli_get_process_title
Missing constants
- NULL
- PHP_WINDOWS_EVENT_CTRL_C
- PHP_WINDOWS_EVENT_CTRL_BREAK
- PHP_WINDOWS_VERSION_MAJOR
- PHP_WINDOWS_VERSION_MINOR
- PHP_WINDOWS_VERSION_BUILD
- PHP_WINDOWS_VERSION_PLATFORM
- PHP_WINDOWS_VERSION_SP_MAJOR
- PHP_WINDOWS_VERSION_SP_MINOR
- PHP_WINDOWS_VERSION_SUITEMASK
- PHP_WINDOWS_VERSION_PRODUCTTYPE
- PHP_WINDOWS_NT_DOMAIN_CONTROLLER
- PHP_WINDOWS_NT_SERVER
- PHP_WINDOWS_NT_WORKSTATION
- READLINE_LIB
- CLSCTX_INPROC_SERVER
- CLSCTX_INPROC_HANDLER
- CLSCTX_LOCAL_SERVER
- CLSCTX_REMOTE_SERVER
- CLSCTX_SERVER
- CLSCTX_ALL
- VT_NULL
- VT_EMPTY
- VT_UI1
- VT_I1
- VT_UI2
- VT_I2
- VT_UI4
- VT_I4
- VT_R4
- VT_R8
- VT_BOOL
- VT_ERROR
- VT_CY
- VT_DATE
- VT_BSTR
- VT_DECIMAL
- VT_UNKNOWN
- VT_DISPATCH
- VT_VARIANT
- VT_INT
- VT_UINT
- VT_ARRAY
- VT_BYREF
- CP_ACP
- CP_MACCP
- CP_OEMCP
- CP_UTF7
- CP_UTF8
- CP_SYMBOL
- CP_THREAD_ACP
- VARCMP_LT
- VARCMP_EQ
- VARCMP_GT
- VARCMP_NULL
- LOCALE_SYSTEM_DEFAULT
- NORM_IGNORECASE
- NORM_IGNORENONSPACE
- NORM_IGNORESYMBOLS
- NORM_IGNOREWIDTH
- NORM_IGNOREKANATYPE
- DISP_E_DIVBYZERO
- DISP_E_OVERFLOW
- DISP_E_BADINDEX
- MK_E_UNAVAILABLE
- VT_UI8
- VT_I8
- GMP_MPIR_VERSION
- NIL
- IMAP_OPENTIMEOUT
- IMAP_READTIMEOUT
- IMAP_WRITETIMEOUT
- IMAP_CLOSETIMEOUT
- OP_DEBUG
- OP_READONLY
- OP_ANONYMOUS
- OP_SHORTCACHE
- OP_SILENT
- OP_PROTOTYPE
- OP_HALFOPEN
- OP_EXPUNGE
- OP_SECURE
- CL_EXPUNGE
- FT_UID
- FT_PEEK
- FT_NOT
- FT_INTERNAL
- FT_PREFETCHTEXT
- ST_UID
- ST_SILENT
- ST_SET
- CP_UID
- CP_MOVE
- SE_UID
- SE_FREE
- SE_NOPREFETCH
- SO_FREE
- SO_NOSERVER
- SA_MESSAGES
- SA_RECENT
- SA_UNSEEN
- SA_UIDNEXT
- SA_UIDVALIDITY
- SA_ALL
- LATT_NOINFERIORS
- LATT_NOSELECT
- LATT_MARKED
- LATT_UNMARKED
- LATT_REFERRAL
- LATT_HASCHILDREN
- LATT_HASNOCHILDREN
- SORTDATE
- SORTARRIVAL
- SORTFROM
- SORTSUBJECT
- SORTTO
- SORTCC
- SORTSIZE
- TYPETEXT
- TYPEMULTIPART
- TYPEMESSAGE
- TYPEAPPLICATION
- TYPEAUDIO
- TYPEIMAGE
- TYPEVIDEO
- TYPEMODEL
- TYPEOTHER
- ENC7BIT
- ENC8BIT
- ENCBINARY
- ENCBASE64
- ENCQUOTEDPRINTABLE
- ENCOTHER
- IMAP_GC_ELT
- IMAP_GC_ENV
- IMAP_GC_TEXTS
- LDAP_DEREF_NEVER
- LDAP_DEREF_SEARCHING
- LDAP_DEREF_FINDING
- LDAP_DEREF_ALWAYS
- LDAP_MODIFY_BATCH_ADD
- LDAP_MODIFY_BATCH_REMOVE
- LDAP_MODIFY_BATCH_REMOVE_ALL
- LDAP_MODIFY_BATCH_REPLACE
- LDAP_MODIFY_BATCH_ATTRIB
- LDAP_MODIFY_BATCH_MODTYPE
- LDAP_MODIFY_BATCH_VALUES
- LDAP_OPT_DEREF
- LDAP_OPT_SIZELIMIT
- LDAP_OPT_TIMELIMIT
- LDAP_OPT_NETWORK_TIMEOUT
- LDAP_OPT_TIMEOUT
- LDAP_OPT_PROTOCOL_VERSION
- LDAP_OPT_ERROR_NUMBER
- LDAP_OPT_REFERRALS
- LDAP_OPT_RESTART
- LDAP_OPT_HOST_NAME
- LDAP_OPT_ERROR_STRING
- LDAP_OPT_MATCHED_DN
- LDAP_OPT_SERVER_CONTROLS
- LDAP_OPT_CLIENT_CONTROLS
- LDAP_OPT_DEBUG_LEVEL
- LDAP_OPT_DIAGNOSTIC_MESSAGE
- LDAP_OPT_X_SASL_MECH
- LDAP_OPT_X_SASL_REALM
- LDAP_OPT_X_SASL_AUTHCID
- LDAP_OPT_X_SASL_AUTHZID
- LDAP_OPT_X_SASL_NOCANON
- LDAP_OPT_X_SASL_USERNAME
- LDAP_OPT_X_TLS_REQUIRE_CERT
- LDAP_OPT_X_TLS_NEVER
- LDAP_OPT_X_TLS_HARD
- LDAP_OPT_X_TLS_DEMAND
- LDAP_OPT_X_TLS_ALLOW
- LDAP_OPT_X_TLS_TRY
- LDAP_OPT_X_TLS_CACERTDIR
- LDAP_OPT_X_TLS_CACERTFILE
- LDAP_OPT_X_TLS_CERTFILE
- LDAP_OPT_X_TLS_CIPHER_SUITE
- LDAP_OPT_X_TLS_KEYFILE
- LDAP_OPT_X_TLS_RANDOM_FILE
- LDAP_OPT_X_TLS_CRLCHECK
- LDAP_OPT_X_TLS_CRL_NONE
- LDAP_OPT_X_TLS_CRL_PEER
- LDAP_OPT_X_TLS_CRL_ALL
- LDAP_OPT_X_TLS_DHFILE
- LDAP_OPT_X_TLS_CRLFILE
- LDAP_OPT_X_TLS_PROTOCOL_MIN
- LDAP_OPT_X_TLS_PROTOCOL_SSL2
- LDAP_OPT_X_TLS_PROTOCOL_SSL3
- LDAP_OPT_X_TLS_PROTOCOL_TLS1_0
- LDAP_OPT_X_TLS_PROTOCOL_TLS1_1
- LDAP_OPT_X_TLS_PROTOCOL_TLS1_2
- LDAP_OPT_X_TLS_PACKAGE
- LDAP_OPT_X_KEEPALIVE_IDLE
- LDAP_OPT_X_KEEPALIVE_PROBES
- LDAP_OPT_X_KEEPALIVE_INTERVAL
- LDAP_ESCAPE_FILTER
- LDAP_ESCAPE_DN
- LDAP_EXOP_START_TLS
- LDAP_EXOP_MODIFY_PASSWD
- LDAP_EXOP_REFRESH
- LDAP_EXOP_WHO_AM_I
- LDAP_EXOP_TURN
- LDAP_CONTROL_MANAGEDSAIT
- LDAP_CONTROL_PROXY_AUTHZ
- LDAP_CONTROL_SUBENTRIES
- LDAP_CONTROL_VALUESRETURNFILTER
- LDAP_CONTROL_ASSERT
- LDAP_CONTROL_PRE_READ
- LDAP_CONTROL_POST_READ
- LDAP_CONTROL_SORTREQUEST
- LDAP_CONTROL_SORTRESPONSE
- LDAP_CONTROL_PAGEDRESULTS
- LDAP_CONTROL_SYNC
- LDAP_CONTROL_SYNC_STATE
- LDAP_CONTROL_SYNC_DONE
- LDAP_CONTROL_DONTUSECOPY
- LDAP_CONTROL_PASSWORDPOLICYREQUEST
- LDAP_CONTROL_PASSWORDPOLICYRESPONSE
- LDAP_CONTROL_X_INCREMENTAL_VALUES
- LDAP_CONTROL_X_DOMAIN_SCOPE
- LDAP_CONTROL_X_PERMISSIVE_MODIFY
- LDAP_CONTROL_X_SEARCH_OPTIONS
- LDAP_CONTROL_X_TREE_DELETE
- LDAP_CONTROL_X_EXTENDED_DN
- LDAP_CONTROL_VLVREQUEST
- LDAP_CONTROL_VLVRESPONSE
- AF_UNIX
- AF_INET
- AF_INET6
- SOCK_STREAM
- SOCK_DGRAM
- SOCK_RAW
- SOCK_SEQPACKET
- SOCK_RDM
- MSG_OOB
- MSG_WAITALL
- MSG_CTRUNC
- MSG_TRUNC
- MSG_PEEK
- MSG_DONTROUTE
- MSG_ERRQUEUE
- SO_DEBUG
- SO_REUSEADDR
- SO_KEEPALIVE
- SO_DONTROUTE
- SO_LINGER
- SO_BROADCAST
- SO_OOBINLINE
- SO_SNDBUF
- SO_RCVBUF
- SO_SNDLOWAT
- SO_RCVLOWAT
- SO_SNDTIMEO
- SO_RCVTIMEO
- SO_TYPE
- SO_ERROR
- SOL_SOCKET
- SOMAXCONN
- TCP_NODELAY
- PHP_NORMAL_READ
- PHP_BINARY_READ
- MCAST_JOIN_GROUP
- MCAST_LEAVE_GROUP
- MCAST_BLOCK_SOURCE
- MCAST_UNBLOCK_SOURCE
- MCAST_JOIN_SOURCE_GROUP
- MCAST_LEAVE_SOURCE_GROUP
- IP_MULTICAST_IF
- IP_MULTICAST_TTL
- IP_MULTICAST_LOOP
- IPV6_MULTICAST_IF
- IPV6_MULTICAST_HOPS
- IPV6_MULTICAST_LOOP
- IPV6_V6ONLY
- SOCKET_EINTR
- SOCKET_EBADF
- SOCKET_EACCES
- SOCKET_EFAULT
- SOCKET_EINVAL
- SOCKET_EMFILE
- SOCKET_EWOULDBLOCK
- SOCKET_EINPROGRESS
- SOCKET_EALREADY
- SOCKET_ENOTSOCK
- SOCKET_EDESTADDRREQ
- SOCKET_EMSGSIZE
- SOCKET_EPROTOTYPE
- SOCKET_ENOPROTOOPT
- SOCKET_EPROTONOSUPPORT
- SOCKET_ESOCKTNOSUPPORT
- SOCKET_EOPNOTSUPP
- SOCKET_EPFNOSUPPORT
- SOCKET_EAFNOSUPPORT
- SOCKET_EADDRINUSE
- SOCKET_EADDRNOTAVAIL
- SOCKET_ENETDOWN
- SOCKET_ENETUNREACH
- SOCKET_ENETRESET
- SOCKET_ECONNABORTED
- SOCKET_ECONNRESET
- SOCKET_ENOBUFS
- SOCKET_EISCONN
- SOCKET_ENOTCONN
- SOCKET_ESHUTDOWN
- SOCKET_ETOOMANYREFS
- SOCKET_ETIMEDOUT
- SOCKET_ECONNREFUSED
- SOCKET_ELOOP
- SOCKET_ENAMETOOLONG
- SOCKET_EHOSTDOWN
- SOCKET_EHOSTUNREACH
- SOCKET_ENOTEMPTY
- SOCKET_EPROCLIM
- SOCKET_EUSERS
- SOCKET_EDQUOT
- SOCKET_ESTALE
- SOCKET_EREMOTE
- SOCKET_EDISCON
- SOCKET_SYSNOTREADY
- SOCKET_VERNOTSUPPORTED
- SOCKET_NOTINITIALISED
- SOCKET_HOST_NOT_FOUND
- SOCKET_TRY_AGAIN
- SOCKET_NO_RECOVERY
- SOCKET_NO_DATA
- SOCKET_NO_ADDRESS
- IPPROTO_IP
- IPPROTO_IPV6
- SOL_TCP
- SOL_UDP
- IPV6_UNICAST_HOPS
- AI_PASSIVE
- AI_CANONNAME
- AI_NUMERICHOST
- AI_ADDRCONFIG
- AI_NUMERICSERV
- IPV6_RECVPKTINFO
- IPV6_PKTINFO
- IPV6_RECVHOPLIMIT
- IPV6_HOPLIMIT
- IPV6_RECVTCLASS
- IPV6_TCLASS
- TIDY_TAG_UNKNOWN
- TIDY_TAG_A
- TIDY_TAG_ABBR
- TIDY_TAG_ACRONYM
- TIDY_TAG_ADDRESS
- TIDY_TAG_ALIGN
- TIDY_TAG_APPLET
- TIDY_TAG_AREA
- TIDY_TAG_B
- TIDY_TAG_BASE
- TIDY_TAG_BASEFONT
- TIDY_TAG_BDO
- TIDY_TAG_BGSOUND
- TIDY_TAG_BIG
- TIDY_TAG_BLINK
- TIDY_TAG_BLOCKQUOTE
- TIDY_TAG_BODY
- TIDY_TAG_BR
- TIDY_TAG_BUTTON
- TIDY_TAG_CAPTION
- TIDY_TAG_CENTER
- TIDY_TAG_CITE
- TIDY_TAG_CODE
- TIDY_TAG_COL
- TIDY_TAG_COLGROUP
- TIDY_TAG_COMMENT
- TIDY_TAG_DD
- TIDY_TAG_DEL
- TIDY_TAG_DFN
- TIDY_TAG_DIR
- TIDY_TAG_DIV
- TIDY_TAG_DL
- TIDY_TAG_DT
- TIDY_TAG_EM
- TIDY_TAG_EMBED
- TIDY_TAG_FIELDSET
- TIDY_TAG_FONT
- TIDY_TAG_FORM
- TIDY_TAG_FRAME
- TIDY_TAG_FRAMESET
- TIDY_TAG_H1
- TIDY_TAG_H2
- TIDY_TAG_H3
- TIDY_TAG_H4
- TIDY_TAG_H5
- TIDY_TAG_H6
- TIDY_TAG_HEAD
- TIDY_TAG_HR
- TIDY_TAG_HTML
- TIDY_TAG_I
- TIDY_TAG_IFRAME
- TIDY_TAG_ILAYER
- TIDY_TAG_IMG
- TIDY_TAG_INPUT
- TIDY_TAG_INS
- TIDY_TAG_ISINDEX
- TIDY_TAG_KBD
- TIDY_TAG_KEYGEN
- TIDY_TAG_LABEL
- TIDY_TAG_LAYER
- TIDY_TAG_LEGEND
- TIDY_TAG_LI
- TIDY_TAG_LINK
- TIDY_TAG_LISTING
- TIDY_TAG_MAP
- TIDY_TAG_MARQUEE
- TIDY_TAG_MENU
- TIDY_TAG_META
- TIDY_TAG_MULTICOL
- TIDY_TAG_NOBR
- TIDY_TAG_NOEMBED
- TIDY_TAG_NOFRAMES
- TIDY_TAG_NOLAYER
- TIDY_TAG_NOSAVE
- TIDY_TAG_NOSCRIPT
- TIDY_TAG_OBJECT
- TIDY_TAG_OL
- TIDY_TAG_OPTGROUP
- TIDY_TAG_OPTION
- TIDY_TAG_P
- TIDY_TAG_PARAM
- TIDY_TAG_PLAINTEXT
- TIDY_TAG_PRE
- TIDY_TAG_Q
- TIDY_TAG_RB
- TIDY_TAG_RBC
- TIDY_TAG_RP
- TIDY_TAG_RT
- TIDY_TAG_RTC
- TIDY_TAG_RUBY
- TIDY_TAG_S
- TIDY_TAG_SAMP
- TIDY_TAG_SCRIPT
- TIDY_TAG_SELECT
- TIDY_TAG_SERVER
- TIDY_TAG_SERVLET
- TIDY_TAG_SMALL
- TIDY_TAG_SPACER
- TIDY_TAG_SPAN
- TIDY_TAG_STRIKE
- TIDY_TAG_STRONG
- TIDY_TAG_STYLE
- TIDY_TAG_SUB
- TIDY_TAG_SUP
- TIDY_TAG_TABLE
- TIDY_TAG_TBODY
- TIDY_TAG_TD
- TIDY_TAG_TEXTAREA
- TIDY_TAG_TFOOT
- TIDY_TAG_TH
- TIDY_TAG_THEAD
- TIDY_TAG_TITLE
- TIDY_TAG_TR
- TIDY_TAG_TT
- TIDY_TAG_U
- TIDY_TAG_UL
- TIDY_TAG_VAR
- TIDY_TAG_WBR
- TIDY_TAG_XMP
- TIDY_TAG_ARTICLE
- TIDY_TAG_ASIDE
- TIDY_TAG_AUDIO
- TIDY_TAG_BDI
- TIDY_TAG_CANVAS
- TIDY_TAG_COMMAND
- TIDY_TAG_DATALIST
- TIDY_TAG_DETAILS
- TIDY_TAG_DIALOG
- TIDY_TAG_FIGCAPTION
- TIDY_TAG_FIGURE
- TIDY_TAG_FOOTER
- TIDY_TAG_HEADER
- TIDY_TAG_HGROUP
- TIDY_TAG_MAIN
- TIDY_TAG_MARK
- TIDY_TAG_MENUITEM
- TIDY_TAG_METER
- TIDY_TAG_NAV
- TIDY_TAG_OUTPUT
- TIDY_TAG_PROGRESS
- TIDY_TAG_SECTION
- TIDY_TAG_SOURCE
- TIDY_TAG_SUMMARY
- TIDY_TAG_TEMPLATE
- TIDY_TAG_TIME
- TIDY_TAG_TRACK
- TIDY_TAG_VIDEO
- TIDY_NODETYPE_ROOT
- TIDY_NODETYPE_DOCTYPE
- TIDY_NODETYPE_COMMENT
- TIDY_NODETYPE_PROCINS
- TIDY_NODETYPE_TEXT
- TIDY_NODETYPE_START
- TIDY_NODETYPE_END
- TIDY_NODETYPE_STARTEND
- TIDY_NODETYPE_CDATA
- TIDY_NODETYPE_SECTION
- TIDY_NODETYPE_ASP
- TIDY_NODETYPE_JSTE
- TIDY_NODETYPE_PHP
- TIDY_NODETYPE_XMLDECL
- PHP_CLI_PROCESS_TITLE
- STDIN
- STDOUT
- STDERR
Code used to obtain the results:
php8_missing_functions.php
<?php
header('content-type: text/plain');
$functions = json_decode('paste json here', true); // json_encoded version of any PHP 8 setup get_defined_functions() result array.
foreach ($functions as $scopes => $list) {
print_r($scopes . "\n");
print_r(str_repeat('-', 20) . "\n");
print_r(implode("\n", arraY_filter($list, function($e){
return !!!function_exists($e);
})));
print_r("\n\n");
}
php8_missing_constants.php
<?php
header('content-type: text/plain');
$reference_constants = json_decode('paste json here', true); // json_encoded version of any PHP 8 setup get_defined_constants() result array.
$constants = get_defined_constants();
$result = [];
foreach($reference_constants as $name => $value){
if (!isset($constants[$name])) {
$result[$name] = null;
}
if (strval($value) !== $reference_constants[$name]) {
$result[$name] = strval($value);
}
}
print_r("Missing constants:\n" . str_repeat('-', 20) . "\n");
foreach ($result as $name => $value) {
if (is_null($value)) {
print_r($name . "\n");
}
}
print_r("\n");
print_r("Different constants:\n" . str_repeat('-', 20) . "\n");
foreach ($result as $name => $value) {
if (!is_null($value)) {
print_r($name . "\n");
}
}
print_r("\n");
ini_get_all_alternative.php
<?php
header('content-type: text/plain');
$options = explode(',', 'allow_url_fopen,allow_url_include,arg_separator.input,arg_separator.output,assert.active,assert.bail,assert.callback,assert.exception,assert.quiet_eval,assert.warning,auto_append_file,auto_detect_line_endings,auto_globals_jit,auto_prepend_file,bcmath.scale,browscap,cgi.check_shebang_line,cgi.discard_path,cgi.fix_pathinfo,cgi.force_redirect,cgi.nph,cgi.redirect_status_env,cgi.rfc2616_headers,child_terminate,cli.pager,cli.prompt,cli_server.color,com.allow_dcom,com.autoregister_typelib,com.autoregister_verbose,com.autoregister_casesensitive,com.code_page,com.dotnet_version,com.typelib_file,curl.cainfo,date.default_latitude,date.default_longitude,date.sunrise_zenith,date.sunset_zenith,date.timezone,dba.default_handler,default_charset,input_encoding,output_encoding,internal_encoding,default_mimetype,default_socket_timeout,disable_classes,disable_functions,display_errors,display_startup_errors,docref_ext,docref_root,doc_root,enable_dl,enable_post_data_reading,engine,error_append_string,error_log,error_log_mode,error_prepend_string,error_reporting,exif.encode_unicode,exif.decode_unicode_motorola,exif.decode_unicode_intel,exif.encode_jis,exif.decode_jis_motorola,exif.decode_jis_intel,exit_on_timeout,expect.timeout,expect.loguser,expect.logfile,expect.match_max,expose_php,extension,extension_dir,fastcgi.impersonate,fastcgi.logging,file_uploads,filter.default,filter.default_flags,from,gd.jpeg_ignore_warning,geoip.custom_directory,hard_timeout,highlight.comment,highlight.default,highlight.html,highlight.keyword,highlight.string,html_errors,ibase.allow_persistent,ibase.max_persistent,ibase.max_links,ibase.default_db,ibase.default_user,ibase.default_password,ibase.default_charset,ibase.timestampformat,ibase.dateformat,ibase.timeformat,ibm_db2.binmode,ibm_db2.i5_all_pconnect,ibm_db2.i5_allow_commit,ibm_db2.i5_dbcs_alloc,ibm_db2.instance_name,ibm_db2.i5_ignore_userid,iconv.input_encoding,iconv.output_encoding,iconv.internal_encoding,ignore_repeated_errors,ignore_repeated_source,ignore_user_abort,implicit_flush,include_path,intl.default_locale,intl.error_level,intl.use_exceptions,last_modified,ldap.max_links,log_errors,log_errors_max_len,mail.add_x_header,mail.force_extra_parameters,mail.log,max_execution_time,max_input_nesting_level,max_input_vars,max_input_time,mbstring.language,mbstring.detect_order,mbstring.http_input,mbstring.http_output,mbstring.internal_encoding,mbstring.substitute_character,mbstring.func_overload,mbstring.encoding_translation,mbstring.http_output_conv_mimetypes,mbstring.strict_detection,mbstring.regex_retry_limit,mbstring.regex_stack_limit,mcrypt.algorithms_dir,mcrypt.modes_dir,memcache.allow_failover,memcache.max_failover_attempts,memcache.chunk_size,memcache.default_port,memcache.hash_strategy,memcache.hash_function,memcache.protocol,memcache.redundancy,memcache.session_redundancy,memcache.compress_threshold,memcache.lock_timeout,memory_limit,mysql.allow_local_infile,mysql.allow_persistent,mysql.max_persistent,mysql.max_links,mysql.trace_mode,mysql.default_port,mysql.default_socket,mysql.default_host,mysql.default_user,mysql.default_password,mysql.connect_timeout,mysqli.allow_local_infile,mysqli.local_infile_directory,mysqli.allow_persistent,mysqli.max_persistent,mysqli.max_links,mysqli.default_port,mysqli.default_socket,mysqli.default_host,mysqli.default_user,mysqli.default_pw,mysqli.reconnect,mysqli.rollback_on_cached_plink,mysqlnd.collect_statistics,mysqlnd.collect_memory_statistics,mysqlnd.debug,mysqlnd.log_mask,mysqlnd.mempool_default_size,mysqlnd.net_read_timeout,mysqlnd.net_cmd_buffer_size,mysqlnd.net_read_buffer_size,mysqlnd.sha256_server_public_key,mysqlnd.trace_alloc,mysqlnd.fetch_data_copy,oci8.connection_class,oci8.default_prefetch,oci8.events,oci8.max_persistent,oci8.old_oci_close_semantics,oci8.persistent_timeout,oci8.ping_interval,oci8.prefetch_lob_size,oci8.privileged_connect,oci8.statement_cache_size,odbc.default_db *,odbc.default_user *,odbc.default_pw *,odbc.allow_persistent,odbc.check_persistent,odbc.max_persistent,odbc.max_links,odbc.defaultlrl,odbc.defaultbinmode,odbc.default_cursortype,opcache.enable,opcache.enable_cli,opcache.memory_consumption,opcache.interned_strings_buffer,opcache.max_accelerated_files,opcache.max_wasted_percentage,opcache.use_cwd,opcache.validate_timestamps,opcache.revalidate_freq,opcache.revalidate_path,opcache.save_comments,opcache.fast_shutdown,opcache.enable_file_override,opcache.optimization_level,opcache.inherited_hack,opcache.dups_fix,opcache.blacklist_filename,opcache.max_file_size,opcache.consistency_checks,opcache.force_restart_timeout,opcache.error_log,opcache.log_verbosity_level,opcache.record_warnings,opcache.preferred_memory_model,opcache.protect_memory,opcache.mmap_base,opcache.restrict_api,opcache.file_update_protection,opcache.huge_code_pages,opcache.lockfile_path,opcache.opt_debug_level,opcache.file_cache,opcache.file_cache_only,opcache.file_cache_consistency_checks,opcache.file_cache_fallback,opcache.validate_permission,opcache.validate_root,opcache.preload,opcache.preload_user,opcache.cache_id,opcache.jit,opcache.jit_buffer_size,opcache.jit_debug,opcache.jit_bisect_limit,opcache.jit_prof_threshold,opcache.jit_max_root_traces,opcache.jit_max_side_traces,opcache.jit_max_exit_counters,opcache.jit_hot_loop,opcache.jit_hot_func,opcache.jit_hot_return,opcache.jit_hot_side_exit,opcache.jit_blacklist_root_trace,opcache.jit_blacklist_side_trace,opcache.jit_max_loop_unrolls,opcache.jit_max_recursive_calls,opcache.jit_max_recursive_returns,opcache.jit_max_polymorphic_calls,open_basedir,output_buffering,output_handler,pcre.backtrack_limit,pcre.recursion_limit,pcre.jit,pdo.dsn.*,pdo_odbc.connection_pooling,pdo_odbc.db2_instance_name,pgsql.allow_persistent,pgsql.max_persistent,pgsql.max_links,pgsql.auto_reset_persistent,pgsql.ignore_notice,pgsql.log_notice,phar.readonly,phar.require_hash,phar.cache_list,post_max_size,precision,realpath_cache_size,realpath_cache_ttl,register_argc_argv,report_memleaks,report_zend_debug,request_order,runkit.superglobal,runkit.internal_override,sendmail_from,sendmail_path,serialize_precision,session.save_path,session.name,session.save_handler,session.auto_start,session.gc_probability,session.gc_divisor,session.gc_maxlifetime,session.serialize_handler,session.cookie_lifetime,session.cookie_path,session.cookie_domain,session.cookie_secure,session.cookie_httponly,session.cookie_samesite,session.use_strict_mode,session.use_cookies,session.use_only_cookies,session.referer_check,session.cache_limiter,session.cache_expire,session.use_trans_sid,session.trans_sid_tags,session.trans_sid_hosts,session.sid_length,session.sid_bits_per_character,session.upload_progress.enabled,session.upload_progress.cleanup,session.upload_progress.prefix,session.upload_progress.name,session.upload_progress.freq,session.upload_progress.min_freq,session.lazy_write,session.hash_function,session.hash_bits_per_character,session.entropy_file,session.entropy_length,short_open_tag,SMTP,smtp_port,soap.wsdl_cache_enabled,soap.wsdl_cache_dir,soap.wsdl_cache_ttl,soap.wsdl_cache,soap.wsdl_cache_limit,sql.safe_mode,sqlite3.extension_dir,sqlite3.defensive,syslog.facility,syslog.filter,syslog.ident,sys_temp_dir,sysvshm.init_mem,tidy.default_config,tidy.clean_output,track_errors,unserialize_callback_func,unserialize_max_depth,uploadprogress.file.filename_template,upload_max_filesize,max_file_uploads,upload_tmp_dir,url_rewriter.tags,user_agent,user_dir,user_ini.cache_ttl,user_ini.filename,uopz.disable,uopz.exit,uopz.overloads,variables_order,windows.show_crt_warning,xbithack,xmlrpc_errors,xmlrpc_error_number,yaz.keepalive,yaz.log_mask,zend.assertions,zend.detect_unicode,zend.enable_gc,zend.multibyte,zend.script_encoding,zend.signal_check,zend_extension,zlib.output_compression,zlib.output_compression_level,zlib.output_handler');
$inis = [];
foreach($options as $option){
if(substr($option, strlen($option) - 2, 2) === '.*'){
$option_prefix = substr($option, 0, strlen($option) - 2);
$index = 0;
$inis[$option_prefix] = [];
while(!empty(ini_get($option_prefix.'.'.$index))){
$inis[$option_prefix][] = ini_get($option_prefix.'.'.$index);
}
}else{
$inis[$option] = ini_get($option);
}
}
print_r($inis);
Functions with adjusted behaviour:
ini_get_all()
This function now returns NULL regardless of the string parameter.
Original documentation specified this function to either return an array or false.
You can get around this by call ini_get() on all default directives and get the existing values, however this does not return the global values.
See above ini_get_all_alternative.php for alternative.
phpinfo()
This function returns 6 lines of kinda-useful information.
Workarounds
tidy functions
Use this library and integrate as a composer library.
GitHub - Stolz/laravel-html-tidy: HTML Tidy middleware for Laravel
composer require stolz/laravel-html-tidy
It’s not very likely for IMAP and LDAP workarounds to exist as most solution depends on socket functions that are disabled here. Using a third-party API for connecting IMAP and LDAP is a waste of resources when you can have external mail or LDAP stores directly.
Windows-specific constants and functions also do not require a workaround as the server is Linux-based. Missing constants can be simply declared without too much effort.
At this point, I guess someone on this forum can rebuild a phpinfo() replica without the detailed system information.
Cheers!
I wonder where did you find those
Most of them doesn’t exist in the phpinfo archive
I think they added most of those recently, as the remnant I’ve saved of the old PHP 8.2 phpinfo()
doesn’t have them…
Hi SpookyKipper,
I wrote a PHP script to compare against the full list of PHP 8 available functions and see which ones are not available.
Originally I was looking for an existing list to save some time, but then I noticed that that the list might not reflect the actual setup so I wrote the script.
I can share it, but the forum posting mechanism isn’t letting me post the full version. It simply returns error 500.
Update: Lists and source code consolidated into post:
PHP 8.2 and MariaDB 10.4 upgrades! - #74 by chiucs123
Cheers!
Hi JxstErg1,
This might be different if you attempt the code yourself on your hosting account, as my original setup has more extensions than came with original PHP. Some functions are available in stock PHP but isn’t installed on InfinityFree servers, this includes tidy, ldap and imap functions, which consist most of the list, but are actually useful if you ask me.
If the extension isn’t there in the first place, there’s no need to put those in the disabled_functions directive. This information is important to web developers like me as I need to know what I can or cannot use, and having no access to phpinfo() I cannot determine whether the extension was there in the first place.
Checking on next is constants. ← Done, check above
Cheers!
Meanwhile I can write my own phpinfo
Well, the little bit different contents of 5 lines
Version, server api, docroot path, memory limit, and server IP (although it’s not accurate)
IMAP functions were already disabled on PHP 7.4. I’ve been told the overwhelming number of accounts that used it only did to to try and brute force email accounts, with very few legitimate websites using it.
Better safe than sorry? It’s unnecessary, sure, but it doesn’t hurt to block it both ways.
Also, some extensions provide functions that can be useful without their intended use case. The client area also has the IMAP extension installed, but only because parsing email addresses works really well with imap_rfc822_parse_adrlist
, which requires the IMAP extension even if you don’t use IMAP.
The ini_get
, function_exists
and extension_loaded
functions can still be used to check if certain functionality/modules exist. No need to have full phpinfo to obtain that information.
Hi admin,
With email disabled on free hosting, it’s very likely that we all use 3rd party services for mail-related operations, having an imap without a local mailbox does not generate much considerable legitimate use case anyways.
Was just explaining to JxstErg1 regarding those functions not being in the disabled_functions directive. It wasn’t blocked twice from the configurations.
Personally I prefer to use composer libraries whenever possible to avoid any potential dependency issues, especially involving server environment configurations.
Having a list of known functions would increase efficiency as we should not be checking function existence before using any functions in code. It would be unrealistically cumbersome when we realistically do that in code. Whenever a certain PHP version is selected, we expect a certain subset of functions to exist. However in a free hosting scenario, we respect the limitations imposed and attmept to avoid using disabled_functions whenever possible.
Almost all PHP functions are available, but a select number of them are not. And of the functions that are disabled, various commonly used functions have been “stubbed” to prevent scripts from crashing when trying to use them, making them no-op or return dummy data. The phpinfo override is one very clear example of this, but also set_time_limit
can be used without crashing, it just won’t actually change the time limit.
If you want a list of all available PHP functions, check the reference docs on php.net. It’s ~99% accurate compared to what we have here.
Did You Finish Upgrade Php?
Most servers are already upgraded, youvcan check it by doing a phpinfo
I’ve just been told that there is only one server left to upgrade! We expect that this will be finished within the new few days.
Upgrade complete or not??? my site is not working
Explain “not working” and create a new topic for it.
Hello! My site not working last month or two
https://oldroid.epizy.com/articles/all/
Fatal error: Uncaught Error: Call to undefined function getallheaders() in /home/vol5_4/epizy.com/epiz_30167045/htdocs/db_framework/functions.php:1340
It begen when you start upgrade to PHP 8. And it continue now.
That’s correct, the getallheaders()
function was disabled starting with PHP 8. If you want to read a HTTP header, you can get it from the $_SERVER
variable.
https://www.php.net/manual/en/reserved.variables.server.php
Note that getallheaders()
should be avoided in general, as it only works when running PHP through Apache. That function doesn’t work when running with PHP-FPM for example, so for better portability it’s better to not use that function.