{$target}"); } return true; } /** Get path to exiftool binary for proc_open */ public static function getExiftool(): array { if (Util::getSystemConfig('memories.exiftool_no_local')) { return ['perl', __DIR__.'/../exiftool-bin/exiftool/exiftool']; } return [Util::getSystemConfig('memories.exiftool')]; } /** Detect the exiftool binary to use */ public static function detectExiftool(): void { if (!empty($path = Util::getSystemConfig('memories.exiftool'))) { if (file_exists($path) && !is_executable($path)) { chmod($path, 0755); } return; } if (Util::getSystemConfig('memories.exiftool_no_local')) { return; } // Detect architecture $arch = \OCA\Memories\Util::getArch(); $libc = \OCA\Memories\Util::getLibc(); // Get static binary if available if ($arch && $libc) { // get target file path $path = realpath(__DIR__."/../exiftool-bin/exiftool-{$arch}-{$libc}"); // Set config Util::setSystemConfig('memories.exiftool', $path); // make sure it is executable if (file_exists($path)) { if (!is_executable($path)) { chmod($path, 0755); } } else { error_log("Exiftool binary not found: {$path}"); Util::setSystemConfig('memories.exiftool_no_local', true); } } } }