Showing posts with label PHP clearstatcache. Show all posts
Showing posts with label PHP clearstatcache. Show all posts

Saturday, 4 October 2014

is_writable in PHP

is_writable — Tells whether the filename is writable
Syntax:

bool is_writable ( string $filename )
Returns TRUE if the filename exists and is writable. The filename argument may be a directory name allowing you to check if a directory is writable.

Keep in mind that PHP may be accessing the file as the user id that the web server runs as (often 'nobody'). Safe mode limitations are not taken into account.

Parameters:

filename
The filename being checked.

Return values: Returns TRUE if the filename exists and is writable.



Example #1 is_writable() example

<?php
$filename = 'test.txt';
if (is_writable($filename)) {
    echo 'The file is writable';
} else {
    echo 'The file is not writable';
}
?>
Errors/Exceptions ¶

Upon failure, an E_WARNING is emitted.



Note: The results of this function are cached. See clearstatcache() for more details.
Tip
As of PHP 5.0.0, this function can also be used with some URL wrappers. Refer to Supported Protocols and Wrappers to determine which wrappers support stat() family of functionality.

is_writeable — Alias of is_writable
This function is an alias of: is_writable().

is_readable in PHP

is_readable — Tells whether a file exists and is readable
Syntax:

bool is_readable ( string $filename )
Tells whether a file exists and is readable.

Parameters:

filename
Path to the file.

Return values: Returns TRUE if the file or directory specified by filename exists and is readable, FALSE otherwise.



Example #1 is_readable() example

<?php
$filename = 'test.txt';
if (is_readable($filename)) {
    echo 'The file is readable';
} else {
    echo 'The file is not readable';
}
?>
Errors/Exceptions ¶

Upon failure, an E_WARNING is emitted.



Keep in mind that PHP may be accessing the file as the user id that the web server runs as (often 'nobody'). Safe mode limitations are not taken into account before PHP 5.1.5.

Note: The results of this function are cached. See clearstatcache() for more details.
Tip
As of PHP 5.0.0, this function can also be used with some URL wrappers. Refer to Supported Protocols and Wrappers to determine which wrappers support stat() family of functionality.
Note:
The check is done using the real UID/GID instead of the effective one.
This function may return TRUE for directories. Use is_dir() to distinguish file and directory.

is_link in PHP

is_link — Tells whether the filename is a symbolic link
Syntax:

bool is_link ( string $filename )
Tells whether the given file is a symbolic link.

Parameters:

filename
Path to the file.

Return values: Returns TRUE if the filename exists and is a symbolic link, FALSE otherwise.



Example #1 Create and confirm if a file is a symbolic link

<?php
$link = 'uploads';

if (is_link($link)) {
    echo(readlink($link));
} else {
    symlink('uploads.php', $link);
}
?>
Errors/Exceptions ¶

Upon failure, an E_WARNING is emitted.



Note: The results of this function are cached. See clearstatcache() for more details.
Tip
As of PHP 5.0.0, this function can also be used with some URL wrappers. Refer to Supported Protocols and Wrappers to determine which wrappers support stat() family of functionality.

clearstatcache in PHP

clearstatcache — Clears file status cache
Syntax:

void clearstatcache ([ bool $clear_realpath_cache = false [, string $filename ]] )
When you use stat(), lstat(), or any of the other functions listed in the affected functions list (below), PHP caches the information those functions return in order to provide faster performance. However, in certain cases, you may want to clear the cached information. For instance, if the same file is being checked multiple times within a single script, and that file is in danger of being removed or changed during that script's operation, you may elect to clear the status cache. In these cases, you can use the clearstatcache() function to clear the information that PHP caches about a file.

You should also note that PHP doesn't cache information about non-existent files. So, if you call file_exists() on a file that doesn't exist, it will return FALSE until you create the file. If you create the file, it will return TRUE even if you then delete the file. However unlink() clears the cache automatically.

Note:
This function caches information about specific filenames, so you only need to call clearstatcache() if you are performing multiple operations on the same filename and require the information about that particular file to not be cached.
Affected functions include stat(), lstat(), file_exists(), is_writable(), is_readable(), is_executable(), is_file(), is_dir(), is_link(), filectime(), fileatime(), filemtime(), fileinode(), filegroup(), fileowner(), filesize(), filetype(), and fileperms().

Parameters:

clear_realpath_cache
Whether to clear the realpath cache or not.

filename
Clear the realpath and the stat cache for a specific filename only; only used if clear_realpath_cache is TRUE.

Return values: No value is returned.

Changelog ¶

Version Description
5.3.0 Added optional clear_realpath_cache and filename parameters.


Example #1 clearstatcache() example

<?php
$file = 'output_log.txt';

function get_owner($file)
{
    $stat = stat($file);
    $user = posix_getpwuid($stat['uid']);
    return $user['name'];
}

$format = "UID @ %s: %s\n";

printf($format, date('r'), get_owner($file));

chown($file, 'ross');
printf($format, date('r'), get_owner($file));

clearstatcache();
printf($format, date('r'), get_owner($file));
?>
The above example will output something similar to:

UID @ Sun, 12 Oct 2008 20:48:28 +0100: root
UID @ Sun, 12 Oct 2008 20:48:28 +0100: root
UID @ Sun, 12 Oct 2008 20:48:28 +0100: ross

Friday, 3 October 2014

chgrp in PHP

chgrp — Changes file group

Syntax:

bool chgrp ( string $filename , mixed $group )
Attempts to change the group of the file filename to group.

Only the superuser may change the group of a file arbitrarily; other users may change the group of a file to any group of which that user is a member.

Parameters:

filename
Path to the file.

group
A group name or number.

Return values: Returns TRUE on success or FALSE on failure.



Example #1

<?php
$filename = 'shared_file.txt';
$format = "%s's Group ID @ %s: %d\n";
printf($format, $filename, date('r'), filegroup($filename));
chgrp($filename, 8);
clearstatcache(); // do not cache filegroup() results
printf($format, $filename, date('r'), filegroup($filename));
?>


Note: This function will not work on remote files as the file to be examined must be accessible via the server's filesystem.
Note: When safe mode is enabled, PHP checks whether the files or directories being operated upon have the same UID (owner) as the script that is being executed.