TYPO3 isDir, getRealPath не работает на контроллере - PullRequest
0 голосов
/ 24 мая 2018

Что я хотел бы сделать, так это заархивировать мой fileadmin и папку с расширениями с помощью zipAction на моем контроллере.Итак, я взял кусок кода из здесь и у меня есть это:

$fileAdminPath = 'fileadmin';
$archiveName = $importerSettings['fileadminArchiveName'];
$zip = new \ZipArchive;
$zip->open($archiveName, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);
$files = new \RecursiveIteratorIterator (new \RecursiveDirectoryIterator($fileAdminPath), \RecursiveIteratorIterator::LEAVES_ONLY);

if (!$file->isDir()) {
   // Get real and relative path for current file
   $filePath = $file->getRealPath();
   $relativePath = substr($filePath, strlen($fileAdminPath) + 1);
   // Add current file to archive
   $zip->addFile($filePath, $relativePath);
}

// Zip archive will be created only after closing object
$zip->close();

Теперь, когда код достигает части isDir(), я получаю следующую ошибку:

Вызов функции-члена isDir () со значением NULL

Если я удаляю его и снова запускаю код, getRealPath() получает ту же ошибку.Так что я предполагаю, что мне не хватает пространства имен или чего-то подобного, в котором хранятся эти функции.

На локальном php-файле (index.php) и MAMPP это работает.На TYPO3 нет.

Кстати, я не уверен, действительно ли контроллер считывает путь к fileadmin.Если я ошибся, пожалуйста, поправьте меня.

С уважением

1 Ответ

0 голосов
/ 24 мая 2018

Если вы запускаете ваш скрипт внутри расширения, этот скрипт ищет fileadmin в вашем каталоге расширений.

Попробуйте использовать следующий скрипт:

$fileAdminPath = \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName('fileadmin');

Редактировать:

Вам также следует пройти файлы в foreach, поскольку вы сканируете каталог рекурсивно:

foreach ($files as $file) {
  if (!$file->isDir()) {
    // Get real and relative path for current file
    $filePath = $file->getRealPath();
    $relativePath = substr($filePath, strlen($fileAdminPath) + 1);
    // Add current file to archive
    $zip->addFile($filePath, $relativePath);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...