該模塊包含了定義在 IEEE 1003.1(POSIX.1)標準文檔裏的函數的接口,經過其它手段沒法訪問。
警告:
經過POSIX函數,能夠檢索不少敏感數據,例如:posix_getpwnam()以及其它函數。當開啓了安全模式,POSIX函數並不會執行任何的權限檢測。所以,當正在上述的環境下操做,強烈建議關閉POSIX擴展(在配置行中使用 '--disable-posix')。php
POSIX函數默認是啓用的,可經過 '--disable-posix' 來禁用POSIX函數
預約義常量,分3大類: node
1.posix_access_constants - 權限相關,php5.1.0開始支持:linux
POSIX_F_OK - 檢查文件是否存在 POSIX_R_OK - 檢查文件是否存在,且具備 '讀' 權限 POSIX_W_OK - 檢查文件是否存在,且具備 '寫' 權限 POSIX_X_OK - 檢查文件是否存在,且具備 '執行' 權限
2.posix_mknod_constants - 文件類型,php5.1.0開始支持:shell
POSIX_S_IFBLK - 塊特殊文件 POSIX_S_IFCHR - 字符特殊文件 POSIX_S_IFIFO - FIFO(pipe-管道)特殊文件 POSIX_S_IFREG - 普通文件 POSIX_S_IFSOCK - socket
3.posix_setrlimit_constants - php7.0.0開始支持:apache
你不妨看一下下面參考頁,關於你的操做系統的setrlimit()的注意點,有關於實現POSIX的limits的差別的解釋,甚至是跨操做系統的聲明。數組
POSIX_RLIMIT_AS - 進程地址空間的最大尺寸,單位是bytes。也可查看PHP的 'memory_limit' 配置指令 POSIX_RLIMIT_CORE - 核心文件的最大尺寸。若是設置爲0,將不會生成核心文件 POSIX_RLIMIT_CPU - 進程可以使用的CPU最大時間,單位是秒。當達到軟限制(soft limit),將發送一個 'SIGXCPU' 信號,這個信號能夠被 'pcntl_signal()' 捕獲。依賴於操做系統,每秒都會發送額外的 'SIGXCPU'信號,直到達到硬限制(hard limit),基於這點,會發送一個沒法捕獲的 'SIGKILL' 信號。也可查看
'set_time_limit()'安全POSIX_RLIMIT_DATA - 進程數據段的最大尺寸,單位是bytes。這基本不會對PHP的執行形成任何影響,除非使用了一個叫作 'brk()' 或 'sbrk()'的擴展bash
POSIX_RLIMIT_FSIZE - 進程能夠建立的文件的最大尺寸,單位是bytes POSIX_RLIMIT_LOCKS - 進程能夠建立的最大的鎖定數量。僅支持很是老版的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 - 進程的常駐集合的最大尺寸,單位是 pages POSIX_RLIMIT_RTPRIO - 經過 'sched_setscheduler()' 和 'sched_setparam()' 系統調用,能夠設置的最大真實時間優先。 POSIX_RLIMIT_RTTIME - 若是使用真實的時間調度,在不進行阻塞的系統調用下,進程能夠消耗掉最大CPU時間,單位是微秒 POSIX_RLIMIT_SIGPENDING - 進程的真實用戶ID,能夠設置的信號隊列的最大個數 POSIX_RLIMIT_STACK - 進程棧的最大尺寸,單位是bytes POSIX_RLIMIT_INFINITY - 用於指明資源大小不受限制(給資源限制設置了一個無限大值)。
查看用戶對文件是否具備指定的權限session
參數:php7
$file - 測試的文件名 $mode - 權限,包含:POSIX_F_OK, POSIX_R_OK, POSIX_W_OK, POSIX_X_OK的一個或多個。
返回當前進程所在的當前控制終端的路徑名
返回值: 成功時,返回路徑名。不然返回false,並設置錯誤號。可經過 'posix_get_last_error()' 來獲取
檢索最後的posix函數調用失敗,返回的錯誤號。錯誤號關聯的錯誤消息,可經過 'posix_strerror()' 來獲取
經過給定的錯誤號,返回關聯的POSIX系統錯誤消息
獲取當前腳本的工做目錄的絕對路徑
返回當前進程的有效用戶組ID
返回當前進程的有效用戶ID
返回當前進程的真實用戶組ID
返回當前進程的真實用戶ID
經過傳入組ID,獲取給定的用戶組的相關信息
經過傳入組名稱,獲取給定的用戶組的相關信息
獲取當前進程的用戶組集合
返回值:
返回一個索引數組,包含組id的集合
返回擁有當前進程的用戶的登錄名
示例:
<?php echo posix_getlogin(); // apache ?>
獲取指定進程的進程組標識符(進程組id),返回整數
注意:
該函數不是POSIX函數,可是常見於BSD和System V的系統上。若是系統不支持該函數,在編譯時就不會被包含進來。應該提早使用 'function_exists()' 檢查,存在再使用
獲取當前進程的進程組標識符(進程組id),返回整數
可查看:POSIX.1 和 POSIX系統上的getpgrp(2) 幫助手冊,獲取關於進程組的更多信息
獲取當前進程的進程標識符(進程id)
獲取當前進程的父進程標識符(父進程id)
經過用戶名,獲取給定用戶的信息
返回值:
成功,返回一個關聯數組,下標以下,失敗返回false: name - 是一個短的、一般少於16個字符,非真實的、全名。應該同調用函數時,傳遞的$username參數一致,截斷多餘的字符 passwd - 返回加密後的用戶密碼的字符串。一般,例如系統的shadow密碼,使用 '*' 代替 uid - 用戶ID gid - 用戶組ID。使用 posix_getgrgid() 獲取用戶組名和它的成員列表 gecos - 一個過期的元素,包含了 ',' 分隔的用戶的全名、辦公室電話、辦公室號碼以及家庭電話號碼。大多數的系統上,只有用戶的全名有效。 dir - 用戶家目錄的絕對路徑 shell - 可執行的用戶的默認shell的絕對路徑 示例: <?php $userinfo = posix_getpwnam('tom'); print_r($userinfo); ?> 輸出: Array( [name] => tom [passwd] => x [uid] => 10000 [gid] => 42 [gecos] => "tom,,," // ',' 分隔 [dir] => "/home/tom" [shell] => "/bin/bash" )
經過用戶id,獲取給定用戶的信息
返回一個關於當前資源的軟限制和硬限制的信息數組
每一個資源有一個關聯的軟限制和硬限制。 軟限制-查看linux系統 硬限制-查看linux系統 一個無特權的進程,可能只能設置它的軟限制爲:0-硬限制大小,而且必須低於硬限制的值。 返回值: 返回一個關聯數組,下標爲定義的各類限制。每一個限制都有一個軟限制和硬限制。 core - 核心文件的最大尺寸。當爲0,不會建立核心文件。核心文件大於該設定值,將會被截斷 totalmem - 進程的內存最大值,單位爲bytes virtualmem - 進程的虛擬內容的最大值,單位爲bytes data - 進程的數據段的最大值,單位爲bytes stack - 進程棧的最大值,單位爲bytes rss - RAM中常駐的虛擬頁面的最大個數 maxproc - 可被調用進程的真實用戶ID建立的最大進程數量 memlock - 在RAM中,可被鎖定的內存的最大字節數 cpu - 進程容許使用的最大CPU時間 filesize - 進程能夠建立的文件的最大尺寸,單位是bytes openfiles - 進程能夠打開的最大文件數量 示例: <?php $limits = posix_getrlimit(); print_r($limits); ?> 輸出: Array( [soft core] => 0 [hard core] => unlimited [soft data] => unlimited [hard data] => unlimited [soft stack] => 8388608 [hard stack] => unlimited )
返回指定進程的session ID。進程的session ID是會話領導者(session leader)的進程組id
對指定的用戶,計算其組訪問列表
參數:
$name - 指定的用戶名
$base_group_id - 密碼文件裏的組ID
##posix_isatty(mixed $fd)
檢查文件描述符是不是一個有效的終端類型的設置(是不是tty)
參數:
$fd - 文件描述符,指望是一個文件資源或一個整型。整型將被假定爲能夠直接傳遞到基礎系統調用的文件描述符。幾乎在全部狀況下,提供的是一個文件資源。
給指定的進程發送一個$sig指定的信號!
參數:
$pid - 進程id
$sig - PCNTL信號預約義常量
建立一個特殊的FIFO文件,存在於文件系統,而且做爲進程的雙向通訊橋樑
參數:
$pathname - FIFO文件(管道) $mode - 必須是8進制格式。新建立的FIFO的權限,也依賴於當前的umask()設置。新建立的文件權限是(mode & ~umask)
建立一個特殊的或者通常的文件
參數:
$pathname - 建立的文件
$mode - 這個參數由文件類型(POSIX_S_IFREG,POSIX_S_IFCHR, POSIX_S_IFBLK, POSIX_S_IFIFO,POSIX_S_IFSOCK其中一個)和訪問權限(0664等),按位或組成。
$major -主設備內核標識符(當使用S_IFCHR或S_IFBLK時,須要傳遞該參數) $minor - 監控設備內核標識符
設置當前進程的有效組ID。這是個特權函數,須要操做系統上具備特殊權限(一般是root權限),才能執行該函數。
設置當前進程的有效用戶ID。這是個特權函數,須要操做系統上具備特殊權限(一般是root權限),才能執行該函數。
設置當前進程的真實用戶組ID。這是個特權函數,須要操做系統上具備特殊權限(一般是root權限),才能執行該函數。函數調用的適當的順序是:首先調用 posix_setgid(),最後調用 posix_setuid()。
注意:若是是超級用戶調用,也會設置有效用戶組ID
設置指定進程的進程組ID
設置給定系統資源的軟限制和硬限制。
參數: $resource - 是posix_setrlimit_constants預約義常量 $softlimit -
軟限制,任意設置或者 POSIX_RLIMIT_INFINITY - 無限大 $hardlimit - 硬限制,任意設置或者
POSIX_RLIMIT_INFINITY - 無限大
設置當前進程爲session leader(會話領導者)
設置當前進程的真實用戶ID。這是個特權函數,須要操做系統上具備特殊權限(一般是root權限),才能執行該函數。
獲取當前CUP使用信息
返回值:
返回一個關聯數組ticks - 重啓到如今,已通過去的 clock ticks 個數 utime - 當前進程使用的用戶時間 stime - 當前進程使用的系統時間 cutime - 當前進程和子進程使用的用戶時間 cstime - 當前進程和子進程使用的系統時間警告:
返回當前打開的文件描述符所在的終端設備的絕對路徑
參數:
$fd - 文件描述符,指望是一個文件資源或一個整型。整型將被假定爲能夠直接傳遞到基礎系統調用的文件描述符。幾乎在全部狀況下,提供的是一個文件資源。
獲取系統相關信息。
返回值: 返回一個關於系統信息的關聯數組
sysname - 操做系統名稱(例如:Linux) nodename - 系統名稱(例如:valiant) release - 操做系統的發佈版(例如:2.6.15-1-686) version - 操做系統版本(例如:#4 Tue Jul 20 17:01:36 MEST 1999) machine - 系統平臺(例如:i586) domainname - DNS域名(例如:baidu.com)