330 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			330 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Safe;
 | |
| 
 | |
| use Safe\Exceptions\PosixException;
 | |
| 
 | |
| /**
 | |
|  * posix_access checks the user's permission of a file.
 | |
|  *
 | |
|  * @param string $file The name of the file to be tested.
 | |
|  * @param int $mode A mask consisting of one or more of POSIX_F_OK,
 | |
|  * POSIX_R_OK, POSIX_W_OK and
 | |
|  * POSIX_X_OK.
 | |
|  *
 | |
|  * POSIX_R_OK, POSIX_W_OK and
 | |
|  * POSIX_X_OK request checking whether the file
 | |
|  * exists and has read, write and execute permissions, respectively.
 | |
|  * POSIX_F_OK just requests checking for the
 | |
|  * existence of the file.
 | |
|  * @throws PosixException
 | |
|  *
 | |
|  */
 | |
| function posix_access(string $file, int $mode = POSIX_F_OK): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \posix_access($file, $mode);
 | |
|     if ($result === false) {
 | |
|         throw PosixException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Gets information about a group provided its name.
 | |
|  *
 | |
|  * @param string $name The name of the group
 | |
|  * @return array Returns an array on success.
 | |
|  * The array elements returned are:
 | |
|  *
 | |
|  * The group information array
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * Element
 | |
|  * Description
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * name
 | |
|  *
 | |
|  * The name element contains the name of the group. This is
 | |
|  * a short, usually less than 16 character "handle" of the
 | |
|  * group, not the real, full name.  This should be the same as
 | |
|  * the name parameter used when
 | |
|  * calling the function, and hence redundant.
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * passwd
 | |
|  *
 | |
|  * The passwd element contains the group's password in an
 | |
|  * encrypted format. Often, for example on a system employing
 | |
|  * "shadow" passwords, an asterisk is returned instead.
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * gid
 | |
|  *
 | |
|  * Group ID of the group in numeric form.
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * members
 | |
|  *
 | |
|  * This consists of an array of
 | |
|  * string's for all the members in the group.
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * @throws PosixException
 | |
|  *
 | |
|  */
 | |
| function posix_getgrnam(string $name): array
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \posix_getgrnam($name);
 | |
|     if ($result === false) {
 | |
|         throw PosixException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Returns the process group identifier of the process
 | |
|  * pid.
 | |
|  *
 | |
|  * @param int $pid The process id.
 | |
|  * @return int Returns the identifier, as an integer.
 | |
|  * @throws PosixException
 | |
|  *
 | |
|  */
 | |
| function posix_getpgid(int $pid): int
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \posix_getpgid($pid);
 | |
|     if ($result === false) {
 | |
|         throw PosixException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Calculates the group access list for the user specified in name.
 | |
|  *
 | |
|  * @param string $name The user to calculate the list for.
 | |
|  * @param int $base_group_id Typically the group number from the password file.
 | |
|  * @throws PosixException
 | |
|  *
 | |
|  */
 | |
| function posix_initgroups(string $name, int $base_group_id): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \posix_initgroups($name, $base_group_id);
 | |
|     if ($result === false) {
 | |
|         throw PosixException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Send the signal sig to the process with
 | |
|  * the process identifier pid.
 | |
|  *
 | |
|  * @param int $pid The process identifier.
 | |
|  * @param int $sig One of the PCNTL signals constants.
 | |
|  * @throws PosixException
 | |
|  *
 | |
|  */
 | |
| function posix_kill(int $pid, int $sig): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \posix_kill($pid, $sig);
 | |
|     if ($result === false) {
 | |
|         throw PosixException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * posix_mkfifo creates a special
 | |
|  * FIFO file which exists in the file system and acts as
 | |
|  * a bidirectional communication endpoint for processes.
 | |
|  *
 | |
|  * @param string $pathname Path to the FIFO file.
 | |
|  * @param int $mode The second parameter mode has to be given in
 | |
|  * octal notation (e.g. 0644). The permission of the newly created
 | |
|  * FIFO also depends on the setting of the current
 | |
|  * umask. The permissions of the created file are
 | |
|  * (mode & ~umask).
 | |
|  * @throws PosixException
 | |
|  *
 | |
|  */
 | |
| function posix_mkfifo(string $pathname, int $mode): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \posix_mkfifo($pathname, $mode);
 | |
|     if ($result === false) {
 | |
|         throw PosixException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Creates a special or ordinary file.
 | |
|  *
 | |
|  * @param string $pathname The file to create
 | |
|  * @param int $mode This parameter is constructed by a bitwise OR between file type (one of
 | |
|  * the following constants: POSIX_S_IFREG,
 | |
|  * POSIX_S_IFCHR, POSIX_S_IFBLK,
 | |
|  * POSIX_S_IFIFO or
 | |
|  * POSIX_S_IFSOCK) and permissions.
 | |
|  * @param int $major The major device kernel identifier (required to pass when using
 | |
|  * S_IFCHR or S_IFBLK).
 | |
|  * @param int $minor The minor device kernel identifier.
 | |
|  * @throws PosixException
 | |
|  *
 | |
|  */
 | |
| function posix_mknod(string $pathname, int $mode, int $major = 0, int $minor = 0): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \posix_mknod($pathname, $mode, $major, $minor);
 | |
|     if ($result === false) {
 | |
|         throw PosixException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Set the effective group ID of the current process. This is a
 | |
|  * privileged function and needs appropriate privileges (usually
 | |
|  * root) on the system to be able to perform this function.
 | |
|  *
 | |
|  * @param int $gid The group id.
 | |
|  * @throws PosixException
 | |
|  *
 | |
|  */
 | |
| function posix_setegid(int $gid): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \posix_setegid($gid);
 | |
|     if ($result === false) {
 | |
|         throw PosixException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Set the effective user ID of the current process. This is a privileged
 | |
|  * function and needs appropriate privileges (usually root) on
 | |
|  * the system to be able to perform this function.
 | |
|  *
 | |
|  * @param int $uid The user id.
 | |
|  * @throws PosixException
 | |
|  *
 | |
|  */
 | |
| function posix_seteuid(int $uid): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \posix_seteuid($uid);
 | |
|     if ($result === false) {
 | |
|         throw PosixException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Set the real group ID of the current process. This is a
 | |
|  * privileged function and needs appropriate privileges (usually
 | |
|  * root) on the system to be able to perform this function. The
 | |
|  * appropriate order of function calls is
 | |
|  * posix_setgid first,
 | |
|  * posix_setuid last.
 | |
|  *
 | |
|  * @param int $gid The group id.
 | |
|  * @throws PosixException
 | |
|  *
 | |
|  */
 | |
| function posix_setgid(int $gid): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \posix_setgid($gid);
 | |
|     if ($result === false) {
 | |
|         throw PosixException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Let the process pid join the process group
 | |
|  * pgid.
 | |
|  *
 | |
|  * @param int $pid The process id.
 | |
|  * @param int $pgid The process group id.
 | |
|  * @throws PosixException
 | |
|  *
 | |
|  */
 | |
| function posix_setpgid(int $pid, int $pgid): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \posix_setpgid($pid, $pgid);
 | |
|     if ($result === false) {
 | |
|         throw PosixException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * posix_setrlimit sets the soft and hard limits for a
 | |
|  * given system resource.
 | |
|  *
 | |
|  *
 | |
|  * Each resource has an associated soft and hard limit.  The soft
 | |
|  * limit is the value that the kernel enforces for the corresponding
 | |
|  * resource.  The hard limit acts as a ceiling for the soft limit.
 | |
|  * An unprivileged process may only set its soft limit to a value
 | |
|  * from 0 to the hard limit, and irreversibly lower its hard limit.
 | |
|  *
 | |
|  * @param int $resource The
 | |
|  * resource limit constant
 | |
|  * corresponding to the limit that is being set.
 | |
|  * @param int $softlimit The soft limit, in whatever unit the resource limit requires, or
 | |
|  * POSIX_RLIMIT_INFINITY.
 | |
|  * @param int $hardlimit The hard limit, in whatever unit the resource limit requires, or
 | |
|  * POSIX_RLIMIT_INFINITY.
 | |
|  * @throws PosixException
 | |
|  *
 | |
|  */
 | |
| function posix_setrlimit(int $resource, int $softlimit, int $hardlimit): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \posix_setrlimit($resource, $softlimit, $hardlimit);
 | |
|     if ($result === false) {
 | |
|         throw PosixException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Set the real user ID of the current process. This is a privileged
 | |
|  * function that needs appropriate privileges (usually root) on
 | |
|  * the system to be able to perform this function.
 | |
|  *
 | |
|  * @param int $uid The user id.
 | |
|  * @throws PosixException
 | |
|  *
 | |
|  */
 | |
| function posix_setuid(int $uid): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \posix_setuid($uid);
 | |
|     if ($result === false) {
 | |
|         throw PosixException::createFromPhpError();
 | |
|     }
 | |
| }
 |