adminerSsoDir(), '/'); if ($runtimeDir === '' || !is_dir($runtimeDir)) { return; } if (!is_writable($runtimeDir)) { self::log($pluginErrorLog, 'Adminer runtime dir is not writable: ' . $runtimeDir); return; } $payload = [ 'version' => 1, 'adminer_public' => ($settings->enableAdminer() && $settings->adminerPublic()), 'updated_at' => time(), ]; $encoded = json_encode($payload, JSON_UNESCAPED_SLASHES); if (!is_string($encoded) || $encoded === '') { self::log($pluginErrorLog, 'Failed to encode Adminer runtime config JSON.'); return; } $targetPath = $runtimeDir . '/' . self::FILE_NAME; $tempPath = $runtimeDir . '/.' . self::FILE_NAME . '.' . getmypid() . '.tmp'; $written = @file_put_contents($tempPath, $encoded, LOCK_EX); if ($written === false) { self::log($pluginErrorLog, 'Failed to write temporary Adminer runtime config: ' . $tempPath); return; } @chmod($tempPath, 0644); if (!@rename($tempPath, $targetPath)) { @unlink($tempPath); self::log($pluginErrorLog, 'Failed to replace Adminer runtime config: ' . $targetPath); return; } @chmod($targetPath, 0644); } private static function log(string $pluginErrorLog, string $message): void { if ($pluginErrorLog === '') { return; } $line = sprintf("[%s] ADMINER_RUNTIME_CONFIG %s\n", date('c'), $message); @error_log($line, 3, $pluginErrorLog); } }