* If you have compiled in OpenSSL support, you may prefix the * hostname with either ssl:// * or tls:// to use an SSL or TLS client connection * over TCP/IP to connect to the remote host. *
* @param int $port* The port number. *
* @param int &$error_code [optional]* If provided, holds the system level error number that occurred in the * system-level connect() call. *
** If the value returned in errno is * 0 and the function returned false, it is an * indication that the error occurred before the * connect() call. This is most likely due to a * problem initializing the socket. *
* @param string &$error_message [optional]* The error message as a string. *
* @param float|null $timeout [optional]* The connection timeout, in seconds. *
** If you need to set a timeout for reading/writing data over the * socket, use stream_set_timeout, as the * timeout parameter to * fsockopen only applies while connecting the * socket. *
* @return resource|false fsockopen returns a file pointer which may be used * together with the other file functions (such as * fgets, fgetss, * fwrite, fclose, and * feof). If the call fails, it will return false */ function fsockopen( string $hostname, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.0')] int $port, #[PhpStormStubsElementAvailable(from: '7.1')] int $port = -1, &$error_code, &$error_message, ?float $timeout ) {} /** * Open persistent Internet or Unix domain socket connection * @link https://php.net/manual/en/function.pfsockopen.php * @see fsockopen * @param string $hostname * @param int $port * @param int &$error_code [optional] * @param string &$error_message [optional] * @param float|null $timeout [optional] * @return resource|false */ function pfsockopen( string $hostname, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.0')] int $port, #[PhpStormStubsElementAvailable(from: '7.1')] int $port = -1, &$error_code, &$error_message, ?float $timeout ) {} /** * Pack data into binary string * @link https://php.net/manual/en/function.pack.php * @param string $format* The format string consists of format codes * followed by an optional repeater argument. The repeater argument can * be either an integer value or * for repeating to * the end of the input data. For a, A, h, H the repeat count specifies * how many characters of one data argument are taken, for @ it is the * absolute position where to put the next data, for everything else the * repeat count specifies how many data arguments are consumed and packed * into the resulting binary string. *
** Currently implemented formats are: *
Code | *Description | *
a | *NUL-padded string | *
A | *SPACE-padded string |
h | *Hex string, low nibble first |
H | *Hex string, high nibble first |
c | signed char |
C | *unsigned char |
s | *signed short (always 16 bit, machine byte order) | *
S | *unsigned short (always 16 bit, machine byte order) | *
n | *unsigned short (always 16 bit, big endian byte order) | *
v | *unsigned short (always 16 bit, little endian byte order) | *
i | *signed integer (machine dependent size and byte order) | *
I | *unsigned integer (machine dependent size and byte order) | *
l | *signed long (always 32 bit, machine byte order) | *
L | *unsigned long (always 32 bit, machine byte order) | *
N | *unsigned long (always 32 bit, big endian byte order) | *
V | *unsigned long (always 32 bit, little endian byte order) | *
f | *float (machine dependent size and representation, both little and big endian) | *
d | *double (machine dependent size and representation, both little and big endian) | *
x | *NUL byte | *
X | *Back up one byte | *
@ | *NUL-fill to absolute position | *
*
* @return string|false a binary string containing data or false if the format string contains errors */ #[Pure] #[LanguageLevelTypeAware(["8.0" => "string"], default: "string|false")] function pack( string $format, #[PhpStormStubsElementAvailable(from: '5.3', to: '7.3')] $values, mixed ...$values ) {} /** * Unpack data from binary string * @link https://php.net/manual/en/function.unpack.php * @param string $format* See pack for an explanation of the format codes. *
* @param string $string* The packed data. *
* @param int $offset [optional] * @return array|false an associative array containing unpacked elements of binary * string or false if the format string contains errors */ #[Pure] function unpack( string $format, string $string, #[PhpStormStubsElementAvailable(from: '7.1')] int $offset = 0 ): array|false {} /** * Tells what the user's browser is capable of * @link https://php.net/manual/en/function.get-browser.php * @param string|null $user_agent [optional]* The User Agent to be analyzed. By default, the value of HTTP * User-Agent header is used; however, you can alter this (i.e., look up * another browser's info) by passing this parameter. *
** You can bypass this parameter with a null value. *
* @param bool $return_array [optional]* If set to true, this function will return an array * instead of an object. *
* @return array|object|false Returns false if browscap.ini can't be loaded or the user agent can't be found, otherwise the information is returned in an object or an array which will contain * various data elements representing, for instance, the browser's major and * minor version numbers and ID string; true/false values for features * such as frames, JavaScript, and cookies; and so forth. * ** The cookies value simply means that the browser * itself is capable of accepting cookies and does not mean the user has * enabled the browser to accept cookies or not. The only way to test if * cookies are accepted is to set one with setcookie, * reload, and check for the value. */ #[Pure(true)] function get_browser(?string $user_agent, bool $return_array = false): object|array|false {} /** * One-way string encryption (hashing) * @link https://php.net/manual/en/function.crypt.php * @param string $string
* The string to be encrypted. *
* @param string $salt* An optional salt string to base the encryption on. If not provided, * one will be randomly generated by PHP each time you call this function. * PHP 5.6 or later raise E_NOTICE error if this parameter is omitted *
** If you are using the supplied salt, you should be aware that the salt * is generated once. If you are calling this function repeatedly, this * may impact both appearance and security. *
* @return string|null the encrypted string or NULL if an error occurs */ #[Pure] #[PhpStormStubsElementAvailable(to: '7.4')] function crypt($string, $salt): ?string {} /** * One-way string encryption (hashing) * @link https://php.net/manual/en/function.crypt.php * @param string $string* The string to be encrypted. *
* @param string $salt* An optional salt string to base the encryption on. If not provided, * one will be randomly generated by PHP each time you call this function. * PHP 5.6 or later raise E_NOTICE error if this parameter is omitted *
** If you are using the supplied salt, you should be aware that the salt * is generated once. If you are calling this function repeatedly, this * may impact both appearance and security. *
* @return string the encrypted string or NULL if an error occurs */ #[Pure] #[PhpStormStubsElementAvailable('8.0')] function crypt(string $string, string $salt): string {} /** * Open directory handle * @link https://php.net/manual/en/function.opendir.php * @param string $directory* The directory path that is to be opened *
* @param resource $context [optional]* For a description of the context parameter, * refer to the streams section of * the manual. *
* @return resource|false a directory handle resource on success, or * false on failure. * ** If path is not a valid directory or the * directory can not be opened due to permission restrictions or * filesystem errors, opendir returns false and * generates a PHP error of level * E_WARNING. You can suppress the error output of * opendir by prepending * '@' to the * front of the function name. */ function opendir(string $directory, $context) {} /** * Close directory handle * @link https://php.net/manual/en/function.closedir.php * @param resource $dir_handle [optional]
* The directory handle resource previously opened * with opendir. If the directory handle is * not specified, the last link opened by opendir * is assumed. *
* @return void */ function closedir($dir_handle): void {} /** * Change directory * @link https://php.net/manual/en/function.chdir.php * @param string $directory* The new current directory *
* @return bool true on success or false on failure. */ function chdir(string $directory): bool {} /** * Change the root directory * @link https://php.net/manual/en/function.chroot.php * @param string $directory* The new directory *
* @return bool true on success or false on failure. */ function chroot(string $directory): bool {} /** * Gets the current working directory * @link https://php.net/manual/en/function.getcwd.php * @return string|false
* the current working directory on success, or false on
* failure.
*
* On some Unix variants, getcwd will return
* false if any one of the parent directories does not have the
* readable or search mode set, even if the current directory
* does. See chmod for more information on
* modes and permissions.
*
* The directory handle resource previously opened * with opendir. If the directory handle is * not specified, the last link opened by opendir * is assumed. *
* @see https://bugs.php.net/bug.php?id=75485 */ function rewinddir($dir_handle): void {} /** * Read entry from directory handle * @link https://php.net/manual/en/function.readdir.php * @param resource $dir_handle [optional]* The directory handle resource previously opened * with opendir. If the directory handle is * not specified, the last link opened by opendir * is assumed. *
* @return string|false the filename on success or false on failure. */ function readdir($dir_handle): string|false {} /** * Return an instance of the Directory class * @link https://php.net/manual/en/function.dir.php * @param string $directory* Directory to open *
* @param resource $context [optional] * @return Directory|false an instance of Directory, or NULL with wrong * parameters, or FALSE in case of another error */ function dir(string $directory, $context): Directory|false {} /** * Alias of dir() * @param string $directory * @param resource $context * @since 8.0 * @return Directory|false * @see dir() */ function getdir(string $directory, $context = null): Directory|false {} /** * List files and directories inside the specified path * @link https://php.net/manual/en/function.scandir.php * @param string $directory* The directory that will be scanned. *
* @param int $sorting_order* By default, the sorted order is alphabetical in ascending order. If * the optional sorting_order is set to non-zero, * then the sort order is alphabetical in descending order. *
* @param resource $context [optional]* For a description of the context parameter, * refer to the streams section of * the manual. *
* @return array|false an array of filenames on success, or false on * failure. If directory is not a directory, then * boolean false is returned, and an error of level * E_WARNING is generated. */ function scandir(string $directory, int $sorting_order = 0, $context): array|false {} /** * Find pathnames matching a pattern * @link https://php.net/manual/en/function.glob.php * @param string $pattern* The pattern. No tilde expansion or parameter substitution is done. *
* @param int $flags* Valid flags: * GLOB_MARK - Adds a slash to each directory returned * GLOB_NOSORT - Return files as they appear in the directory (no sorting). When this flag is not used, the pathnames are sorted alphabetically * GLOB_NOCHECK - Return the search pattern if no files matching it were found * GLOB_NOESCAPE - Backslashes do not quote metacharacters * GLOB_BRACE - Expands {a,b,c} to match 'a', 'b', or 'c' * GLOB_ONLYDIR - Return only directory entries which match the pattern * GLOB_ERR - Stop on read errors (like unreadable directories), by default errors are ignored. * @return array|false an array containing the matched files/directories, an empty array * if no file matched or false on error. *
** On some systems it is impossible to distinguish between empty match and an * error.
*/ #[Pure(true)] function glob(string $pattern, int $flags = 0): array|false {} /** * Gets last access time of file * @link https://php.net/manual/en/function.fileatime.php * @param string $filename* Path to the file. *
* @return int|false the time the file was last accessed, or false on failure. * The time is returned as a Unix timestamp. */ #[Pure(true)] function fileatime(string $filename): int|false {} /** * Gets inode change time of file * @link https://php.net/manual/en/function.filectime.php * @param string $filename* Path to the file. *
* @return int|false the time the file was last changed, or false on failure. * The time is returned as a Unix timestamp. */ #[Pure(true)] function filectime(string $filename): int|false {} /** * Gets file group * @link https://php.net/manual/en/function.filegroup.php * @param string $filename* Path to the file. *
* @return int|false the group ID of the file, or false in case * of an error. The group ID is returned in numerical format, use * posix_getgrgid to resolve it to a group name. * Upon failure, false is returned. */ #[Pure(true)] function filegroup(string $filename): int|false {} /** * Gets file inode * @link https://php.net/manual/en/function.fileinode.php * @param string $filename* Path to the file. *
* @return int|false the inode number of the file, or false on failure. */ #[Pure(true)] function fileinode(string $filename): int|false {} /** * Gets file modification time * @link https://php.net/manual/en/function.filemtime.php * @param string $filename* Path to the file. *
* @return int|false the time the file was last modified, or false on failure. * The time is returned as a Unix timestamp, which is * suitable for the date function. */ #[Pure(true)] function filemtime(string $filename): int|false {} /** * Gets file owner * @link https://php.net/manual/en/function.fileowner.php * @param string $filename* Path to the file. *
* @return int|false the user ID of the owner of the file, or false on failure. * The user ID is returned in numerical format, use * posix_getpwuid to resolve it to a username. */ #[Pure(true)] function fileowner(string $filename): int|false {} /** * Gets file permissions * @link https://php.net/manual/en/function.fileperms.php * @param string $filename* Path to the file. *
* @return int|false the permissions on the file, or false on failure. */ #[Pure(true)] function fileperms(string $filename): int|false {} /** * Gets file size * @link https://php.net/manual/en/function.filesize.php * @param string $filename* Path to the file. *
* @return int|false the size of the file in bytes, or false (and generates an error * of level E_WARNING) in case of an error. */ #[Pure(true)] function filesize(string $filename): int|false {} /** * Gets file type * @link https://php.net/manual/en/function.filetype.php * @param string $filename* Path to the file. *
* @return string|false the type of the file. Possible values are fifo, char, * dir, block, link, file, socket and unknown. * ** Returns false if an error occurs. filetype will also * produce an E_NOTICE message if the stat call fails * or if the file type is unknown. */ #[Pure(true)] function filetype(string $filename): string|false {} /** * Checks whether a file or directory exists * @link https://php.net/manual/en/function.file-exists.php * @param string $filename
* Path to the file or directory. *
** On windows, use //computername/share/filename or * \\computername\share\filename to check files on * network shares. *
* @return bool true if the file or directory specified by * filename exists; false otherwise. * ** This function will return false for symlinks pointing to non-existing * files. *
** This function returns false for files inaccessible due to safe mode restrictions. However these * files still can be included if * they are located in safe_mode_include_dir. *
** The check is done using the real UID/GID instead of the effective one. */ #[Pure(true)] function file_exists(string $filename): bool {} /** * Tells whether the filename is writable * @link https://php.net/manual/en/function.is-writable.php * @param string $filename
* The filename being checked. *
* @return bool true if the filename exists and is * writable. */ #[Pure(true)] function is_writable(string $filename): bool {} /** * Alias: * {@see is_writable} * @link https://php.net/manual/en/function.is-writeable.php * @param string $filename* The filename being checked. *
* @return bool true if the filename exists and is * writable. */ #[Pure(true)] function is_writeable(string $filename): bool {} /** * Tells whether a file or a directory exists and is readable * @link https://php.net/manual/en/function.is-readable.php * @param string $filename* Path to the file or directory. *
* @return bool true if the file or directory specified by * filename exists and is readable, false otherwise. */ #[Pure(true)] function is_readable(string $filename): bool {} /** * Tells whether the filename is executable * @link https://php.net/manual/en/function.is-executable.php * @param string $filename* Path to the file. *
* @return bool true if the filename exists and is executable, or false on * error. */ #[Pure(true)] function is_executable(string $filename): bool {} /** * Tells whether the filename is a regular file * @link https://php.net/manual/en/function.is-file.php * @param string $filename* Path to the file. *
* @return bool true if the filename exists and is a regular file, false * otherwise. */ #[Pure(true)] function is_file(string $filename): bool {} /** * Tells whether the filename is a directory * @link https://php.net/manual/en/function.is-dir.php * @param string $filename* Path to the file. If filename is a relative * filename, it will be checked relative to the current working * directory. If filename is a symbolic or hard link * then the link will be resolved and checked. *
* @return bool true if the filename exists and is a directory, false * otherwise. */ #[Pure(true)] function is_dir(string $filename): bool {} /** * Tells whether the filename is a symbolic link * @link https://php.net/manual/en/function.is-link.php * @param string $filename* Path to the file. *
* @return bool true if the filename exists and is a symbolic link, false * otherwise. */ #[Pure(true)] function is_link(string $filename): bool {} /** * Gives information about a file * @link https://php.net/manual/en/function.stat.php * @param string $filename* Path to the file. *
* @return array|falseNumeric | *Associative (since PHP 4.0.6) | *Description | *
0 | *dev | *device number | *
1 | *ino | *inode number * | *
2 | *mode | *inode protection mode | *
3 | *nlink | *number of links | *
4 | *uid | *userid of owner * | *
5 | *gid | *groupid of owner * | *
6 | *rdev | *device type, if inode device | *
7 | *size | *size in bytes | *
8 | *atime | *time of last access (Unix timestamp) | *
9 | *mtime | *time of last modification (Unix timestamp) | *
10 | *ctime | *time of last inode change (Unix timestamp) | *
11 | *blksize | *blocksize of filesystem IO ** | *
12 | *blocks | *number of 512-byte blocks allocated ** | *
* ** Only valid on systems supporting the st_blksize type - other * systems (e.g. Windows) return -1. *
** In case of error, stat returns false. */ #[Pure(true)] #[ArrayShape([ "dev" => "int", "ino" => "int", "mode" => "int", "nlink" => "int", "uid" => "int", "gid" => "int", "rdev" => "int", "size" => "int", "atime" => "int", "mtime" => "int", "ctime" => "int", "blksize" => "int", "blocks" => "int" ])] function stat(string $filename): array|false {} /** * Gives information about a file or symbolic link * @link https://php.net/manual/en/function.lstat.php * @see stat * @param string $filename
* Path to a file or a symbolic link. *
* @return array|false See the manual page for stat for information on * the structure of the array that lstat returns. * This function is identical to the stat function * except that if the filename parameter is a symbolic * link, the status of the symbolic link is returned, not the status of the * file pointed to by the symbolic link. */ #[Pure(true)] function lstat(string $filename): array|false {} /** * Changes file owner * @link https://php.net/manual/en/function.chown.php * @param string $filename* Path to the file. *
* @param string|int $user* A user name or number. *
* @return bool true on success or false on failure. */ function chown(string $filename, string|int $user): bool {} /** * Changes file group * @link https://php.net/manual/en/function.chgrp.php * @param string $filename* Path to the file. *
* @param string|int $group* A group name or number. *
* @return bool true on success or false on failure. */ function chgrp(string $filename, string|int $group): bool {} /** * Changes user ownership of symlink * @link https://php.net/manual/en/function.lchown.php * @param string $filename* Path to the file. *
* @param string|int $user* User name or number. *
* @return bool true on success or false on failure. * @since 5.1.2 */ function lchown(string $filename, string|int $user): bool {} /** * Changes group ownership of symlink * @link https://php.net/manual/en/function.lchgrp.php * @param string $filename* Path to the symlink. *
* @param string|int $group* The group specified by name or number. *
* @return bool true on success or false on failure. * @since 5.1.2 */ function lchgrp(string $filename, string|int $group): bool {} /** * Changes file mode * @link https://php.net/manual/en/function.chmod.php * @param string $filename* Path to the file. *
* @param int $permissions* Note that mode is not automatically * assumed to be an octal value, so strings (such as "g+w") will * not work properly. To ensure the expected operation, * you need to prefix mode with a zero (0): *
** **
* The mode parameter consists of three octal * number components specifying access restrictions for the owner, * the user group in which the owner is in, and to everybody else in * this order. One component can be computed by adding up the needed * permissions for that target user base. Number 1 means that you * grant execute rights, number 2 means that you make the file * writeable, number 4 means that you make the file readable. Add * up these numbers to specify needed rights. You can also read more * about modes on Unix systems with 'man 1 chmod' * and 'man 2 chmod'. *
* @return bool true on success or false on failure. */ function chmod(string $filename, int $permissions): bool {} /** * Sets access and modification time of file * @link https://php.net/manual/en/function.touch.php * @param string $filename* The name of the file being touched. *
* @param int|null $mtime [optional]* The touch time. If time is not supplied, * the current system time is used. *
* @param int|null $atime [optional]* If present, the access time of the given filename is set to * the value of atime. Otherwise, it is set to * time. *
* @return bool true on success or false on failure. */ function touch(string $filename, ?int $mtime, ?int $atime): bool {} /** * Clears file status cache * @link https://php.net/manual/en/function.clearstatcache.php * @param bool $clear_realpath_cache [optional]* Whenever to clear realpath cache or not. *
* @param string $filename* Clear realpath cache on a specific filename, only used if * clear_realpath_cache is true. *
* @return void */ function clearstatcache(bool $clear_realpath_cache = false, string $filename = ''): void {} /** * Returns the total size of a filesystem or disk partition * @link https://php.net/manual/en/function.disk-total-space.php * @param string $directory* A directory of the filesystem or disk partition. *
* @return float|false the total number of bytes as a float * or false on failure. */ #[Pure(true)] function disk_total_space(string $directory): float|false {} /** * Returns available space in directory * @link https://php.net/manual/en/function.disk-free-space.php * @param string $directory* A directory of the filesystem or disk partition. *
** Given a file name instead of a directory, the behaviour of the * function is unspecified and may differ between operating systems and * PHP versions. *
* @return float|false the number of available bytes as a float * or false on failure. */ #[Pure(true)] function disk_free_space(string $directory): float|false {} /** * Alias of {@see disk_free_space} * @link https://php.net/manual/en/function.diskfreespace.php * @see disk_free_space * @param string $directory * @return float|false */ #[Pure(true)] function diskfreespace(string $directory): float|false {} /** * Send mail * @link https://php.net/manual/en/function.mail.php * @param string $to* Receiver, or receivers of the mail. *
** The formatting of this string must comply with * RFC 2822. Some examples are: * user@example.com * user@example.com, anotheruser@example.com * User <user@example.com> * User <user@example.com>, Another User <anotheruser@example.com> *
* @param string $subject* Subject of the email to be sent. *
** Subject must satisfy RFC 2047. *
* @param string $message* Message to be sent. *
** Each line should be separated with a LF (\n). Lines should not be larger * than 70 characters. *
** Caution * (Windows only) When PHP is talking to a SMTP server directly, if a full * stop is found on the start of a line, it is removed. To counter-act this, * replace these occurrences with a double dot. *
** ** @param string|array $additional_headers
* String or array to be inserted at the end of the email header.
* Since 7.2.0 accepts an array. Its keys are the header names and its values are the respective header values.
*
* This is typically used to add extra headers (From, Cc, and Bcc). * Multiple extra headers should be separated with a CRLF (\r\n). *
** When sending mail, the mail must contain * a From header. This can be set with the * additional_headers parameter, or a default * can be set in "php.ini". *
** Failing to do this will result in an error * message similar to Warning: mail(): "sendmail_from" not * set in php.ini or custom "From:" header missing. * The From header sets also * Return-Path under Windows. *
** If messages are not received, try using a LF (\n) only. * Some poor quality Unix mail transfer agents replace LF by CRLF * automatically (which leads to doubling CR if CRLF is used). * This should be a last resort, as it does not comply with * RFC 2822. *
* @param string $additional_params* The additional_parameters parameter * can be used to pass additional flags as command line options to the * program configured to be used when sending mail, as defined by the * sendmail_path configuration setting. For example, * this can be used to set the envelope sender address when using * sendmail with the -f sendmail option. *
** The user that the webserver runs as should be added as a trusted user to the * sendmail configuration to prevent a 'X-Warning' header from being added * to the message when the envelope sender (-f) is set using this method. * For sendmail users, this file is /etc/mail/trusted-users. *
* @return bool true if the mail was successfully accepted for delivery, false otherwise. ** It is important to note that just because the mail was accepted for delivery, * it does NOT mean the mail will actually reach the intended destination. *
*/ function mail(string $to, string $subject, string $message, array|string $additional_headers = [], string $additional_params = ''): bool {} /** * Calculate the hash value needed by EZMLM * @link https://php.net/manual/en/function.ezmlm-hash.php * @param string $addr* The email address that's being hashed. *
* @return int The hash value of addr. * @removed 8.0 */ #[Deprecated(since: '7.4')] function ezmlm_hash(string $addr): int {} /** * Open connection to system logger * @link https://php.net/manual/en/function.openlog.php * @param string $prefix* The string ident is added to each message. *
* @param int $flags* The option argument is used to indicate * what logging options will be used when generating a log message. *
Constant | *Description | *
LOG_CONS | ** if there is an error while sending data to the system logger, * write directly to the system console * | *
LOG_NDELAY | ** open the connection to the logger immediately * | *
LOG_ODELAY | ** (default) delay opening the connection until the first * message is logged * | *
LOG_PERROR | *print log message also to standard error | *
LOG_PID | *include PID with each message | *
* The facility argument is used to specify what * type of program is logging the message. This allows you to specify * (in your machine's syslog configuration) how messages coming from * different facilities will be handled. *
Constant | *Description | *
LOG_AUTH | ** security/authorization messages (use * LOG_AUTHPRIV instead * in systems where that constant is defined) * | *
LOG_AUTHPRIV | *security/authorization messages (private) | *
LOG_CRON | *clock daemon (cron and at) | *
LOG_DAEMON | *other system daemons | *
LOG_KERN | *kernel messages | *
LOG_LOCAL0 ... LOG_LOCAL7 | *reserved for local use, these are not available in Windows | *
LOG_LPR | *line printer subsystem | *
LOG_MAIL | *mail subsystem | *
LOG_NEWS | *USENET news subsystem | *
LOG_SYSLOG | *messages generated internally by syslogd | *
LOG_USER | *generic user-level messages | *
LOG_UUCP | *UUCP subsystem | *
* LOG_USER is the only valid log type under Windows * operating systems *
* @return bool true on success or false on failure. */ #[LanguageLevelTypeAware(["8.2" => "true"], default: "bool")] function openlog(string $prefix, int $flags, int $facility) {}