Файлы и папки сервера

Чтобы управлять любыми файлами и папками на сервере, используйте класс pm_ServerFileManager. Этот класс позволяет выполнять те же операции, что и класс pm_FileManager, но в отношении файлов сервера. В частности, он позволяет создавать и удалять файлы и папки, проверять наличие файлов и папок, читать и записывать данные в файлы, а также изменять права файлов и папок (только в Linux).

Описания и примеры использования некоторых методов приведены ниже.

scanDir() – возвращает список файлов и папок внутри папки по указанному пути.

Использование
array scanDir(string $path [, bool $skipDots = false [, bool $showSystemFiles = true ]])
Параметры
  • path (тип: string)

    Папка, которая будет просканирована.

  • skipDots (тип: boolean, значение по умолчанию: false)

    Если для необязательного параметра skipDots задано значение "true", корневые папки ".." и "." будут исключены из результирующего массива, иначе они будут включены в него.

  • showSystemFiles (тип: boolean, значение по умолчанию: true)

    Если для необязательного параметра showSystemFiles задано значение "true", скрытые файлы (например, системные файлы) будут включены в результирующий массив, иначе они будут отсутствовать в нем.

Возвращаемые значения

Возвращает массив, состоящий из файлов и папок в сканируемой папке.

Примеры

Дерево папок

$ ls -a var
. .. config.json .gitkeep

Пример

$result = (new \pm_ServerFileManager())->scanDir(\pm_Context::getVarDir()); // Default use
// аналог:
// $result = (new \pm_ServerFileManager())->scanDir(\pm_Context::getVarDir(), false, true);
var_dump($result);

Вывод

array(4) {
 [0]=>
 string(1) "."
 [1]=>
 string(2) ".."
 [2]=>
 string(11) "config.json"
 [3]=>
 string(8) ".gitkeep"
}

Пример

$result = (new \pm_ServerFileManager())->scanDir(\pm_Context::getVarDir(), true);
// аналог:
// $result = (new \pm_ServerFileManager())->scanDir(\pm_Context::getVarDir(), true, true);
var_dump($result);

Вывод

array(2) {
 [0]=>
 string(11) "config.json"
 [1]=>
 string(8) ".gitkeep"
}

Пример

$result = (new \pm_ServerFileManager())->scanDir(\pm_Context::getVarDir(), false, false);
var_dump($result);

Вывод

array(3) {
 [0]=>
 string(1) "."
 [1]=>
 string(2) ".."
 [2]=>
 string(11) "config.json"
}

Пример

$result = (new \pm_ServerFileManager())->scanDir(\pm_Context::getVarDir(), true, false);
var_dump($result);

Вывод

array(1) {
 [0]=>
 string(11) "config.json"
}

joinPath() – возвращает объединенные части пути.

Использование
string joinPath(string ...$pathParts)
Параметры
  • pathParts (тип: string, можно указать одно или более значений)
Возвращаемые значения

Строка, содержащая строковое представление всех указанных частей пути, расположенных в том же порядке и разделенныхс помощью DIRECTORY_SEPARATOR.

Пример
$result = (new \pm_ServerFileManager())->joinPath('var', 'config', 'config.json');
var_dump($result);

Вывод

string(22) "var/config/config.json"

isSubpath() – проверяет, является ли папка по указанному пути подпапкой корневой папки веб-пространства.

Использование
bool isSubpath(string $path)
Параметры
  • path (тип: string)
Возвращаемые значения

"True" – если папка находится внутри основной папки, иначе – "false".

Примеры

Пример

$result = (new \pm_ServerFileManager())->isSubpath('/var/www/vhosts/a.a/httpdocs/qwe/qwe/ddd/wqecfds');
var_dump($result);

Вывод

bool(true)

Пример

// в предположении, что корневая папка веб-пространства – '/var/www/vhosts/a.a/'
$result1 = (new \pm_ServerFileManager(1))->isSubpath('/var/www/vhosts/a.a/httpdocs/qwe/qwe/ddd/wqecfds');
$result2 = (new \pm_ServerFileManager(1))->isSubpath('/var/www/vhosts/b.b/httpdocs/qwe/qwe/ddd/wqecfds');
var_dump($result1);
var_dump($result2);

Вывод

bool(true)
bool(false)

getRelativeFilePath() – возвращает путь относительно корневой папки веб-пространства для указанного абсолютного пути.

Использование
string getRelativeFilePath(string $path)
Параметры
  • path (тип: string, абсолютный путь)
Возвращаемые значения

Относительный путь в корневой папке.

Примеры

Пример

$result = (new \pm_ServerFileManager())->getRelativeFilePath('/var/www/vhosts/a.a/httpdocs/qwe/qwe/ddd/wqecfds');
var_dump($result);

Вывод

string(47) "var/www/vhosts/a.a/httpdocs/qwe/qwe/ddd/wqecfds"

Пример

// в предположении, что корневая папка веб-пространства – '/var/www/vhosts/a.a/'
$result1 = (new \pm_ServerFileManager(1))->getRelativeFilePath('/var/www/vhosts/a.a/httpdocs/qwe/qwe/ddd/wqecfds');
$result2 = (new \pm_ServerFileManager(1))->getRelativeFilePath('/var/www/vhosts/b.b/httpdocs/qwe/qwe/ddd/wqecfds');
var_dump($result1);
var_dump($result2);

Вывод

string(28) "httpdocs/qwe/qwe/ddd/wqecfds"
string(35) "../b.b/httpdocs/qwe/qwe/ddd/wqecfds"

copyFile() – копирует объекты файловой системы (файлы и папки) из исходной папки в целевую. Папки копируются рекурсивно.

Использование
copyFile(string $source, string $destination)
Параметры
  • source (тип: string, полный путь к исходной папке)
  • destination (тип: string, полный путь к целевой папке)
Пример
(new \pm_ServerFileManager())->copyFile('/tmp/source', '/tmp/destination');

Ниже приводится пример работы с файлами сервера. В этом примере выполняются некоторые действия с содержимым файла. Используются следующие методы:

Используйте следующий код:

$fileManager = new pm_ServerFileManager();
 $configPath = PRODUCT_ROOT . '/admin/conf/panel.ini';
 if ($fileManager->fileExists($configPath)) {
 $fileData = $fileManager->fileGetContents($filePath);
 // Некоторые действия с данными файла...
 $fileData = str_replace('foo', 'bar', $fileData);

 $fileManager->filePutContents($filePath, $fileData);
 }
 

Leave your feedback on this topic here

If you have questions or need support, please visit the Plesk forum or contact your hosting provider.
The comments below are for feedback on the documentation only. No timely answers or help will be provided.