Source for file path.php
Documentation is available at path.php
* @package Joomla.Platform
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
// Define a string constant for the root directory of the file system in native format
define('JPATH_ROOT', JPath::clean(JPATH_SITE));
* @package Joomla.Platform
* Checks if a path's permissions can be changed.
* @param string $path Path to check.
* @return boolean True if path can have mode changed.
if (@chmod($path, $perms ^
0001))
* Chmods files and directories recursively to given permissions.
* @param string $path Root path to begin changing mode [without trailing slash].
* @param string $filemode Octal representation of the value to change file mode to [null = no change].
* @param string $foldermode Octal representation of the value to change folder mode to [null = no change].
* @return boolean True if successful [one fail means the whole operation failed].
public static function setPermissions($path, $filemode =
'0644', $foldermode =
'0755')
// Initialise return value
if ($file !=
'.' &&
$file !=
'..')
$fullpath =
$path .
'/' .
$file;
if (!self::setPermissions($fullpath, $filemode, $foldermode))
* Get the permissions of the file/folder at a given path.
* @param string $path The path of a file/folder.
* @return string Filesystem permissions.
$path =
self::clean($path);
for ($i =
0; $i <
3; $i++
)
$parsed_mode .=
($mode{$i} & 04) ?
"r" :
"-";
$parsed_mode .=
($mode{$i} & 02) ?
"w" :
"-";
$parsed_mode .=
($mode{$i} & 01) ?
"x" :
"-";
* Checks for snooping outside of the file system root.
* @param string $path A file system path to check.
* @return string A cleaned version of the path or exit on error.
public static function check($path)
if (strpos($path, '..') !==
false)
throw
new Exception('JPath::check Use of relative paths not permitted', 20);
$path =
self::clean($path);
throw
new Exception('JPath::check Snooping out of bounds @ ' .
$path, 20);
* Function to strip additional / or \ in a path name.
* @param string $path The path to clean.
* @param string $ds Directory separator (optional).
* @return string The cleaned path.
* @throws UnexpectedValueException
public static function clean($path, $ds =
DIRECTORY_SEPARATOR)
throw
new UnexpectedValueException('JPath::clean: $path is not a string.');
// Remove double slashes and backslashes and convert all slashes and backslashes to DIRECTORY_SEPARATOR
// If dealing with a UNC path don't forget to prepend the path with a backslash.
elseif (($ds ==
'\\') &&
($path[0] ==
'\\' ) &&
( $path[1] ==
'\\' ))
* Method to determine if script owns the path.
* @param string $path Path to check ownership.
* @return boolean True if the php script owns the path passed.
public static function isOwner($path)
$ssp =
ini_get('session.save_path');
// Try to find a writable directory
$test =
$dir .
'/' .
$tmp;
* Searches the directory paths for a given file.
* @param mixed $paths An path string or array of path strings to search in
* @param string $file The file name to look for.
* @return mixed The full path and file name for the target file, or boolean false if the file is not found in any of the paths.
public static function find($paths, $file)
if (!is_array($paths) &&
!($paths instanceof
Iterator))
// Start looping through the path set
foreach ($paths as $path)
// Get the path to the file
$fullname =
$path .
'/' .
$file;
// Is the path based on a stream?
if (strpos($path, '://') ===
false)
// Not a stream, so do a realpath() to avoid directory
// traversal attempts on the local file system.
// Needed for substr() later
* The substr() check added to make sure that the realpath()
* results in a directory registered so that
* non-registered directories are not accessible via directory
// Could not find the file in the set of paths
Documentation generated on Tue, 19 Nov 2013 15:10:23 +0100 by phpDocumentor 1.4.3