<?php
/**
* Gathers information about files in a directory.
*
* Prepares an array containing information about files
* in a directory, including all sub-directories. The
* information returned includes the file name, path
* and size.
*
* @author AcademyIntl <webmaster@goodhosting.co>
* @example $fileData = prepareDir('.');
* @param string $origin The directory to start from.
* @return array Info about the files in that directory.
*/
function prepareDir($origin)
{
$fileData = array();
$dir = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($origin),
FilesystemIterator::KEY_AS_FILENAME
| FilesystemIterator::CURRENT_AS_FILEINFO
| FilesystemIterator::SKIP_DOTS);
foreach ($dir as $path => $object)
if ($object->isFile())
$fileData[] = array(
'name' => explode('.', $object->getFilename())[0],
'path' => explode(DIRECTORY_SEPARATOR, $path, 2)[0],
'size' => $object->getSize(),
);
return $fileData;
}
$fileData = prepareDir('/tmp');
Fatal error: Uncaught RuntimeException: SplFileInfo::isFile(): open_basedir restriction in effect. File(/tmp/..) is not within the allowed path(s): (/tmp:/in:/etc) in /in/WXYbv:25
Stack trace:
#0 /in/WXYbv(25): SplFileInfo->isFile()
#1 /in/WXYbv(35): prepareDir('/tmp')
#2 {main}
thrown in /in/WXYbv on line 25
Process exited with code 255.
Output for 5.4.0 - 5.4.45, 7.3.32 - 7.3.33, 7.4.33, 8.0.13
Output for 5.5.0 - 5.5.38, 5.6.0 - 5.6.40
Fatal error: Uncaught exception 'RuntimeException' with message 'SplFileInfo::isFile(): open_basedir restriction in effect. File(/tmp/..) is not within the allowed path(s): (/tmp:/in:/etc)' in /in/WXYbv:25
Stack trace:
#0 /in/WXYbv(25): SplFileInfo->isFile()
#1 /in/WXYbv(35): prepareDir('/tmp')
#2 {main}
thrown in /in/WXYbv on line 25
Process exited with code 255.