当前位置: 首页 > 后端技术 > PHP

POSIX函数

时间:2023-03-30 06:10:48 PHP

POSIX:简介:该模块包含IEEE1003.1(POSIX.1)标准文档中定义的函数接口,不能通过其他方式访问。警告:可以通过POSIX函数(例如posix_getpwnam()等)检索大量敏感数据。启用安全模式后,POSIX函数不执行任何权限检查。因此,在上述环境中运行时,强烈建议禁用POSIX扩展(在配置行中使用“--disable-posix”)。安装:POSIX函数默认开启,可以通过'--disable-posix'禁用POSIX函数预定义常量,分为3类:1.posix_access_constants-权限相关,php5.1.0开始支持:POSIX_F_OK-勾选文件是否存在POSIX_R_OK-检查文件是否存在并具有“读”权限POSIX_W_OK-检查文件是否存在并具有“写”权限POSIX_X_OK-检查文件是否存在并具有“执行”权限2.posix_mknod_constants-文件类型,从php5.1.0开始支持:POSIX_S_IFBLK-块特殊文件POSIX_S_IFCHR-字符特殊文件POSIX_S_IFIFO-FIFO(pipe-pipe)特殊文件POSIX_S_IFREG-普通文件POSIX_S_IFSOCK-socket3.posix_setrlimit_constants-php7.0.0支持:你不妨看看下面参考页面关于你的操作系统的setrlimit()的注释,实现POSIX限制的差异解释,甚至是跨操作系统的声明。POSIX_RLIMIT_AS-进程地址空间的最大大小,以字节为单位。另请参阅PHP的“memory_limit”配置指令POSIX_RLIMIT_CORE-核心文件的最大大小。如果设置为0,则不会生成核心文件POSIX_RLIMIT_CPU-进程可以使用的最大CPU时间,以秒为单位。当达到软限制时,将发送一个“SIGXCPU”信号,该信号可以被“pcntl_signal()”捕获。根据操作系统的不同,每秒都会发送额外的“SIGXCPU”信号,直到达到硬限制,此时会发送一个无法捕获的“SIGKILL”信号。另请参阅“set_time_limit()”POSIX_RLIMIT_DATA-进程数据段的最大大小(以字节为单位)。这基本上对PHP执行没有影响,除非使用名为'brk()'或'sbrk()'的扩展POSIX_RLIMIT_FSIZE-进程可以创建的文件的最大大小,以字节为单位最大锁数。仅在非常老的linux内核上支持POSIX_RLIMIT_MEMLOCK-内存中可以锁定的最大字节数POSIX_RLIMIT_MSGQUEUE-可以分配给POSIX消息队列的最大字节数。PHP不支持POSIX消息队列,因此此限制无效,除非您使用实现“POSIX_RLIMIT_MSGQUEUE”的扩展POSIX_RLIMIT_NICE-进程可以设置“renice”的最大值(linux进程优先级或其他)。值可以设置为:20——我们设置的值,作为资源限制,不能设置负数POSIX_RLIMIT_NOFILE——>(大于)一个进程可以打开的最大文件描述符数的值。POSIX_RLIMIT_NPROC-进程的真实用户ID可以创建的最大进程数(和线程,或某些操作系统上的线程)。POSIX_RLIMIT_RSS-进程驻留集的最大大小,以页面为单位POSIX_RLIMIT_RTPRIO-可以通过“sched_setscheduler()”和“sched_setparam()”系统调用设置的最大实时优先级。POSIX_RLIMIT_RTTIME-如果使用实时调度,进程在不阻塞系统调用的情况下可以消耗的最大CPU时间,以微秒为单位POSIX_RLIMIT_SIGPENDING-进程的真实用户ID,可以设置的信号队列的最大数量堆栈的大小,以字节为单位POSIX_RLIMIT_INFINITY-用于指示资源大小不受限制(为资源限制设置无限值)。函数posix_access(string$file[,int$mode=POSIX_F_OK])检查用户是否对文件具有指定的权限。参数:$file-测试的文件名$mode-权限,包括:POSIX_F_OK、POSIX_R_OK、POSIX_W_OK、POSIX_X_OK之一。posix_ctermid()返回当前进程所在的当前控制终端的路径名返回值:成功时,返回路径名。否则返回false并设置错误号。Posix_errno()可以通过'posix_get_last_error()'获得-posix_get_last_error()别名posix_get_last_error()检索最后一个失败的posix函数调用返回的错误号。与错误号关联的错误信息可以通过'posix_strerror()'获取posix_strerror(int$errno)通过给定的错误号返回关联的POSIX系统错误信息posix_getcwd()获取当前脚本工作目录的绝对路径posix_getegid()返回当前进程的有效用户组IDposix_geteuid()返回当前进程的有效用户IDposix_getgid()返回当前进程的真实用户组IDposix_getuid()返回当前进程的真实用户ID相关informationofagivenusergroupposix_getgrnam(string$name)通过传入组名获取给定用户组的相关信息posix_getgroups()获取当前进程的用户组集合返回值:返回包含该组的索引数组idCollectionposix_getlogin()返回拥有当前进程的用户的登录名示例:posix_getpgid(int$pid)获取指定进程的进程组标识(processgroupid),返回一个整数注意:该函数不是POSIX函数,但在BSD和SystemV系统上通用。如果系统不支持该函数,则编译时不会包含。应该使用'function_exists()'提前查看,然后使用posix_getpgrp()获取当前进程的进程组标识(processgroupid),返回一个整数看:POSIX.1和帮助手册getpgrp(2)在POSIX系统上,获取进程组的更多信息posix_getpid()获取当前进程的进程标识符(processid)posix_getppid()获取当前进程的父进程标识符(parentprocessid)posix_getpwnam(string$username)获取给定的设置用户的信息返回值:如果成功,返回一个下标如下的关联数组,否则返回false:name-是一个短的,通常小于16个字符,非真实的全名。与调用函数时传入的$username参数相同,截去多余字符passwd-返回加密用户密码的字符串。通常,比如系统的影子密码,用'*'代替uid——用户IDgid——用户组ID。使用posix_getgrgid()获取用户组名称及其成员列表gecos-一个废弃的元素,包含用户的全名、办公室电话、办公室号码和家庭电话号码,以“,”分隔。在大多数系统上,只有用户的全名是有效的。dir-用户主目录的绝对路径shell-可执行用户默认shell的绝对路径示例:输出:Array([name]=>tom[passwd]=>x[uid]=>10000[gid]=>42[gecos]=>"tom,,,"//','由[dir]分隔]=>"/home/tom"[shell]=>"/bin/bash")posix_getpwuid(int$uid)通过用户id获取有关给定用户的信息posix_getrlimit()返回有关软限制和硬限制的信息数组当前资源的每个资源都有一个关联的软硬限制。软限制-请参阅linux系统硬限制-请参阅linux系统一个非特权进程可能只能将其软限制设置为:0-硬限制大小,并且必须低于硬限制值。返回值:返回一个关联数组,下标是定义的各种界限。每个限制都有一个软限制和一个硬限制。core-核心文件的最大大小。为0时,不会创建核心文件。如果核心文件大于设置值,它将被截断。totalmem-进程内存的最大值,以字节为单位virtualmem-进程虚拟内容的最大值,以字节为单位data-进程数据段的最大值,以字节为单位stack-的最大值进程栈,单位为bytesrss-RAM中最大常驻虚拟页数maxproc-调用进程的真实用户ID可以创建的最大进程数memlock-RAM中,可以加锁的内存maxbytescpu-允许进程使用的最大CPU时间filesize-进程可以创建的文件的最大大小,以字节为单位openfiles-进程可以打开的最大文件数示例:输出:Array([软核]=>0[硬核]=>无限制[软数据]=>无限制[硬数据]=>无限制[软堆栈]=>8388608[硬堆栈]=>无限制)posix_getsid(int$pid)返回指定进程的会话ID。进程的sessionID为会话组长(sessionleader)的进程组idposix_initgroups(string$name,int$base_group_id)针对指定用户,计算其组访问列表参数:$name-指定用户名$base_group_id-在密码文件中##posix_isatty(mixed$fd)的组ID检查文件描述符是否是一个有效的终端类型设置(是否是tty)参数:$fd-文件描述符,期望一个文件资源或一个整数。整数将被假定为可以直接传递给底层系统调用的文件描述符。在几乎所有情况下,都会提供文件资源。posix_kill(int$pid,int$sig)向指定进程发送$sig指定的信号!参数:$pid-进程id$sig-PCNTL信号预定义常量posix_mkfifo(string$pathname,int$mode)创建一个特殊的FIFO文件,存在于文件系统中,作为进程的双向通信桥梁参数:$pathname-FIFO文件(管道)$mode-必须是八进制格式。新创建的FIFO的权限也取决于当前的umask()设置。新创建的文件权限是(mode&~umask)posix_mknod(string$pathname,int$mode[,int$major=0[,??int$minor=0]])createaspecialorgeneralfileparameter:$pathname-Createdfile$mode-该参数由文件类型(POSIX_S_IFREG、POSIX_S_IFCHR、POSIX_S_IFBLK、POSIX_S_IFIFO、POSIX_S_IFSOCK其中之一)和访问权限(0664等)组成,按位或。$major-主设备内核标识符(使用S_IFCHR或S_IFBLK时,需要传递该参数)$minor-监控设备内核标识符posix_setegid(int$gid)设置当前进程的有效组ID。这是一个特权函数,需要操作系统的特殊权限(通常是root权限)才能执行此函数。posix_seteuid(int$uid)设置当前进程的有效用户ID。这是一个特权函数,需要操作系统的特殊权限(通常是root权限)才能执行此函数。posix_setgid(int$gid)设置当前进程的真实用户组ID。这是一个特权函数,需要操作系统的特殊权限(通常是root权限)才能执行此函数。函数调用的正确顺序是:首先调用posix_setgid(),最后调用posix_setuid()。注意:如果被超级用户调用,也会设置有效用户组IDposix_setpgid(int$pid,int$pgid)设置指定进程的进程组IDposix_setrlimit(int$resource,int$softlimit,int$hardlimit)设置给定的系统资源软硬限制。参数:$resource-是posix_setrlimit_constants预定义常量$softlimit-软限制,任意设置或POSIX_RLIMIT_INFINITY-无限$hardlimit-硬限制,任意设置或POSIX_RLIMIT_INFINITY-无限posix_setsid()设置当前进程为会话领导者(sessionleader)posix_setuid(int$uid)设置当前进程的真实用户ID。这是一个特权函数,需要操作系统的特殊权限(通常是root权限)才能执行此函数。posix_times()获取当前CPU使用信息返回值:返回一个关联数组ticks-自重启以来经过的时钟滴答数utime-当前进程使用的用户时间stime-当前进程使用的系统时间cutime-当前进程和子进程使用的用户时间cstime-当前进程和子进程使用的系统时间警告:posix_ttyname($mixed$fd)返回当前打开的文件描述符所在的终端设备的绝对路径参数:$fd-文件描述符,需要一个文件资源或一个整数。整数将被假定为可以直接传递给底层系统调用的文件描述符。在几乎所有情况下,都会提供文件资源。posix_uname()获取系统相关信息。返回值:返回系统信息的关联数组sysname-操作系统名称(eg:Linux)nodename-系统名称(eg:valiant)release-操作系统发布版本(eg:2.6.15-1-686)version-操作系统version(例如:#4TueJul2017:01:36MEST1999)machine-系统平台(例如:i586)domainname-DNS域名(例如:baidu.com)