POSIX函數

POSIX:

簡介:

該模塊包含了定義在 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 - 用於指明資源大小不受限制(給資源限制設置了一個無限大值)。

函數

posix_access(string $file[, int $mode = POSIX_F_OK])

查看用戶對文件是否具備指定的權限session

參數:php7

$file - 測試的文件名  
$mode - 權限,包含:POSIX_F_OK, POSIX_R_OK, POSIX_W_OK, POSIX_X_OK的一個或多個。

posix_ctermid()

返回當前進程所在的當前控制終端的路徑名

返回值: 成功時,返回路徑名。不然返回false,並設置錯誤號。可經過 'posix_get_last_error()' 來獲取

posix_errno() - posix_get_last_error()別名

posix_get_last_error()

檢索最後的posix函數調用失敗,返回的錯誤號。錯誤號關聯的錯誤消息,可經過 'posix_strerror()' 來獲取

posix_strerror(int $errno)

經過給定的錯誤號,返回關聯的POSIX系統錯誤消息

posix_getcwd()

獲取當前腳本的工做目錄的絕對路徑

posix_getegid()

返回當前進程的有效用戶組ID

posix_geteuid()

返回當前進程的有效用戶ID

posix_getgid()

返回當前進程的真實用戶組ID

posix_getuid()

返回當前進程的真實用戶ID

posix_getgrgid(int $gid)

經過傳入組ID,獲取給定的用戶組的相關信息

posix_getgrnam(string $name)

經過傳入組名稱,獲取給定的用戶組的相關信息

posix_getgroups()

獲取當前進程的用戶組集合
返回值:
返回一個索引數組,包含組id的集合

posix_getlogin()

返回擁有當前進程的用戶的登錄名

示例:

<?php  
                echo posix_getlogin();      // apache  
            ?>

posix_getpgid(int $pid)

獲取指定進程的進程組標識符(進程組id),返回整數

注意:

該函數不是POSIX函數,可是常見於BSD和System V的系統上。若是系統不支持該函數,在編譯時就不會被包含進來。應該提早使用 'function_exists()' 檢查,存在再使用

posix_getpgrp()

獲取當前進程的進程組標識符(進程組id),返回整數
可查看:POSIX.1 和 POSIX系統上的getpgrp(2) 幫助手冊,獲取關於進程組的更多信息

posix_getpid()

獲取當前進程的進程標識符(進程id)

posix_getppid()

獲取當前進程的父進程標識符(父進程id)

posix_getpwnam(string $username)

經過用戶名,獲取給定用戶的信息

返回值:

成功,返回一個關聯數組,下標以下,失敗返回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"  
            )

posix_getpwuid(int $uid)

經過用戶id,獲取給定用戶的信息

posix_getrlimit()

返回一個關於當前資源的軟限制和硬限制的信息數組

每一個資源有一個關聯的軟限制和硬限制。  
        軟限制-查看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  
            )

posix_getsid(int $pid)

返回指定進程的session ID。進程的session ID是會話領導者(session leader)的進程組id

posix_initgroups(string $name, int $base_group_id)

對指定的用戶,計算其組訪問列表

參數:
$name - 指定的用戶名
$base_group_id - 密碼文件裏的組ID
##posix_isatty(mixed $fd)
檢查文件描述符是不是一個有效的終端類型的設置(是不是tty)
參數:
$fd - 文件描述符,指望是一個文件資源或一個整型。整型將被假定爲能夠直接傳遞到基礎系統調用的文件描述符。幾乎在全部狀況下,提供的是一個文件資源。

posix_kill(int $pid, int $sig)

給指定的進程發送一個$sig指定的信號!
參數:

$pid - 進程id
$sig - PCNTL信號預約義常量

posix_mkfifo(string $pathname, int $mode)

建立一個特殊的FIFO文件,存在於文件系統,而且做爲進程的雙向通訊橋樑

參數:

$pathname - FIFO文件(管道)  
 $mode - 必須是8進制格式。新建立的FIFO的權限,也依賴於當前的umask()設置。新建立的文件權限是(mode & ~umask)

posix_mknod(string $pathname, int $mode[, int $major = 0[, int $minor = 0]])

建立一個特殊的或者通常的文件

參數:
$pathname - 建立的文件
$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()。
注意:若是是超級用戶調用,也會設置有效用戶組ID

posix_setpgid(int $pid, int $pgid)

設置指定進程的進程組ID

posix_setrlimit(int $resource, int $softlimit, int $hardlimit)

設置給定系統資源的軟限制和硬限制。

參數: $resource - 是posix_setrlimit_constants預約義常量 $softlimit -
軟限制,任意設置或者 POSIX_RLIMIT_INFINITY - 無限大 $hardlimit - 硬限制,任意設置或者
POSIX_RLIMIT_INFINITY - 無限大

posix_setsid()

設置當前進程爲session leader(會話領導者)

posix_setuid(int $uid)

設置當前進程的真實用戶ID。這是個特權函數,須要操做系統上具備特殊權限(一般是root權限),才能執行該函數。

posix_times()

獲取當前CUP使用信息

返回值:
返回一個關聯數組

ticks - 重啓到如今,已通過去的 clock ticks 個數  
 utime - 當前進程使用的用戶時間  
 stime - 當前進程使用的系統時間  
 cutime - 當前進程和子進程使用的用戶時間  
 cstime - 當前進程和子進程使用的系統時間

警告:

posix_ttyname($mixed $fd)

返回當前打開的文件描述符所在的終端設備的絕對路徑

參數:

$fd - 文件描述符,指望是一個文件資源或一個整型。整型將被假定爲能夠直接傳遞到基礎系統調用的文件描述符。幾乎在全部狀況下,提供的是一個文件資源。

posix_uname()

獲取系統相關信息。

返回值: 返回一個關於系統信息的關聯數組

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)
相關文章
相關標籤/搜索