CINXE.COM
Symfony | Platform.sh Documentation
<!DOCTYPE html> <html lang="en"> <head> <script> window.dataLayer = window.dataLayer || []; </script> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KRPJGT4');</script> <title>Symfony | Platform.sh Documentation</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link rel="shortcut icon" href="/images/logos/favicon.ico"> <meta name='zd-site-verification' content='vfhn57gsamhodmcebl0hpr' /> <meta name="google-site-verification" content="AA3wwwZ69DTZVM0_qzBVXOWa5i4Dim8HNql-jGdOKvA" /> <meta name="description" content="Everything you need to get started with Symfony, a PHP framework for web development, on Platform.sh."> <meta itemprop="image" content="https://docs.platform.sh/images/logos/docs_social_2021.jpg"> <meta name="keywords" content="PaaS,cloud hosting,DevOps,PHP,Node.js,Go,Golang,Python,.NET,Ruby,Java,Drupal,Wordpress,Symfony,Maven,Lisp,Hibernate,Jakarta,Spring,TYPO3,"> <meta name="twitter:description" content="Everything you need to get started with Symfony, a PHP framework for web development, on Platform.sh."> <meta name="twitter:title" content="Symfony"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="@platformsh"> <meta name="twitter:creator" content="@platformsh"> <meta name="twitter:image" content="https://docs.platform.sh/images/logos/docs_social_2021.jpg"> <meta name="og:description" content="Everything you need to get started with Symfony, a PHP framework for web development, on Platform.sh."> <meta property="og:type" content="article"> <meta property="og:url" content="https://docs.platform.sh"> <meta property="og:image" content="https://docs.platform.sh/images/logos/docs_social_2021.jpg"> <meta property="og:site_name" content="Platform.sh User Documentation"> <link rel="stylesheet" href="/css/vendor.9103f8195eacee63ac4bebd73013d7ecb67a5048508cb3214b551a045423fb2b.css?version=1.1.0"> <link rel="stylesheet" href="/css/main.c77040ca7581886e927babe6831bb1c89babf97acbe18a7b0275e1943d2a83e5.css?version=1.1.0"> <script defer src="/alpinejs/cdn.min.js?version=1.1.0"></script> <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script> <script> MathJax = { tex: { displayMath: [['\\[', '\\]'], ['$$', '$$']], inlineMath: [['\\(', '\\)']] } }; </script> </head> <body class="bg-white" onload="dataLayer.push({'event': 'datalayer_ready', 'page_category1': 'guides', 'page_category2': 'Symfony', 'link_url': 'https:\/\/docs.platform.sh\/\/guides\/symfony.html'});"> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KRPJGT4" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <header class="print:hidden bg-primary-darker flex p-4 text-white fixed top-0 w-full z-50"> <a class="basis-1/4 md:basis-1/6 flex justify-center" href="/"> <img class="min-w-32 max-w-[175px]" src="/images/logos/Platformsh_logo_white.svg" alt="Platform.sh User Documentation"> </a> <div id="xssroot" class="basis-3/4 md:basis-4/6 pl-8 pr-4"></div> <div class="hidden md:flex basis-1/6 items-center justify-end"> <a class="font-semibold secondary-action text-sm xl:text-base px-4 py-2 mx-2 rounded hidden lg:inline xl:px-8 hover:bg-skye-light focus:bg-skye-light hover:text-slate focus:text-slate" onclick="dataLayer.push({'event': 'click_login', 'click_name': 'Login', 'link_url': 'https:\/\/docs.platform.sh\/\/guides\/symfony.html'});" href="https://console.platform.sh/" rel="noopener">Log in</a> <a class="font-semibold primary-action text-sm xl:text-base px-4 py-2 bg-skye rounded text-white hover:bg-skye-dark focus:bg-skye-dark" onclick="dataLayer.push({'event': 'click_free_trial', 'click_name': 'Free trial', 'link_url': 'https:\/\/docs.platform.sh\/\/guides\/symfony.html'});" href="https://auth.api.platform.sh/register" rel="noopener">Sign up</a> </div> </header> <div class="grid md:grid-cols-10 divide-x-4 mt-24 print:mt-4 print:block print:mx-2" > <nav class="print:hidden md:col-span-2 pt-2 pl-2 md:pb-28 max-h-fullv overflow-y-scroll top-24 md:sticky h-[calc(100vh - 6rem)]" x-data="{ showSidebar: false }" > <button class="md:hidden hover:bg-skye-light my-4" @click="showSidebar = ! showSidebar" aria-controls="sidebar-nav" aria-expanded="false" aria-label="Toggle navigation"> <svg width="30" height="24" viewBox="0 0 30 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M0 0h30v2H0z" class="fill-slate"></path> <path d="M0 10h30v2H0z" class="fill-slate"></path> <path d="M0 20h30v2H0z" class="fill-slate"></path> </svg> </button> <h2 class="sr-only">Site navigation</h2> <div class="md:block" :class="showSidebar ? '' : 'hidden'" id="sidebar-nav"> <div x-data="{ expanded: false }"> <h3 class="font-semibold"> <button class="bg-no-repeat bg-right-2 w-[95%] py-4 pl-2 pr-6 my-2 text-left bg-grey" :style="expanded ? 'background-image: url(/images/icons/minus.svg);' : 'background-image: url(/images/icons/add.svg);'" @click="expanded = ! expanded" aria-controls="section-get-started" aria-expanded="false"> Get started </button> </h3> <div x-show="expanded" id="section-get-started"> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/get-started/introduction.html" destination="/get-started/introduction.html" class="hover:text-skye-dark focus:text-skye-dark"> Introduction </a> </h4> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-introduction-sidebar-id" id="section-introduction-sidebar-id"> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/get-started/deploy.html" destination="/get-started/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Deploy </a> </h4> <button class="py-2" id="nav-expand-section-deploy-sidebar-id" aria-controls="section-deploy-sidebar-id" aria-expanded="false" aria-label="Deploy"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-deploy-sidebar-id" id="section-deploy-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/get-started/deploy/init.html" destination="/get-started/deploy/init.html" class="hover:text-skye-dark focus:text-skye-dark"> Git init </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/get-started/deploy/commit.html" destination="/get-started/deploy/commit.html" class="hover:text-skye-dark focus:text-skye-dark"> Git commit </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/get-started/add-data.html" destination="/get-started/add-data.html" class="hover:text-skye-dark focus:text-skye-dark"> Add data </a> </h4> <button class="py-2" id="nav-expand-section-add-data-sidebar-id" aria-controls="section-add-data-sidebar-id" aria-expanded="false" aria-label="Add data"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-add-data-sidebar-id" id="section-add-data-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/get-started/add-data/branch.html" destination="/get-started/add-data/branch.html" class="hover:text-skye-dark focus:text-skye-dark"> Git branch </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/get-started/add-data/merge.html" destination="/get-started/add-data/merge.html" class="hover:text-skye-dark focus:text-skye-dark"> Git merge </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/get-started/monitor-and-troubleshoot.html" destination="/get-started/monitor-and-troubleshoot.html" class="hover:text-skye-dark focus:text-skye-dark"> Monitor and troubleshoot </a> </h4> <button class="py-2" id="nav-expand-section-monitor-and-troubleshoot-sidebar-id" aria-controls="section-monitor-and-troubleshoot-sidebar-id" aria-expanded="false" aria-label="Monitor and troubleshoot"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-monitor-and-troubleshoot-sidebar-id" id="section-monitor-and-troubleshoot-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/get-started/monitor-and-troubleshoot/log.html" destination="/get-started/monitor-and-troubleshoot/log.html" class="hover:text-skye-dark focus:text-skye-dark"> Git log </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/get-started/monitor-and-troubleshoot/status.html" destination="/get-started/monitor-and-troubleshoot/status.html" class="hover:text-skye-dark focus:text-skye-dark"> Git status </a> </div> </li> </ul> </div> </div> </div> <div x-data="{ expanded: false }"> <h3 class="font-semibold"> <button class="bg-no-repeat bg-right-2 w-[95%] py-4 pl-2 pr-6 my-2 text-left bg-grey" :style="expanded ? 'background-image: url(/images/icons/minus.svg);' : 'background-image: url(/images/icons/add.svg);'" @click="expanded = ! expanded" aria-controls="section-learn" aria-expanded="false"> Learn </button> </h3> <div x-show="expanded" id="section-learn"> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/learn/overview.html" destination="/learn/overview.html" class="hover:text-skye-dark focus:text-skye-dark"> What is Platform.sh? </a> </h4> <button class="py-2" id="nav-expand-section-what-is-vendor/name-sidebar-id" aria-controls="section-what-is-vendor/name-sidebar-id" aria-expanded="false" aria-label="What is Platform.sh?"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-what-is-vendor/name-sidebar-id" id="section-what-is-vendor/name-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/learn/overview/philosophy.html" destination="/learn/overview/philosophy.html" class="hover:text-skye-dark focus:text-skye-dark"> Philosophy </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/learn/overview/yaml.html" destination="/learn/overview/yaml.html" class="hover:text-skye-dark focus:text-skye-dark"> YAML </a> <button class="py-2" id="nav-expand-yaml-sidebar-id" aria-controls="yaml-sidebar-id" aria-expanded="false" aria-label="YAML"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-yaml-sidebar-id" id="yaml-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/learn/overview/yaml/what-is-yaml.html" class="hover:text-skye-dark focus:text-skye-dark"> What YAML is </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/learn/overview/yaml/yaml-structure.html" class="hover:text-skye-dark focus:text-skye-dark"> Platform.sh YAML structure </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/learn/overview/yaml/platform-yaml-tags.html" class="hover:text-skye-dark focus:text-skye-dark"> Platform.sh YAML tags </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/learn/overview/structure.html" destination="/learn/overview/structure.html" class="hover:text-skye-dark focus:text-skye-dark"> Structure </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/learn/overview/build-deploy.html" destination="/learn/overview/build-deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Build and deploy </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/learn/overview/get-support.html" destination="/learn/overview/get-support.html" class="hover:text-skye-dark focus:text-skye-dark"> Get support </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/learn/tutorials.html" destination="/learn/tutorials.html" class="hover:text-skye-dark focus:text-skye-dark"> Tutorials </a> </h4> <button class="py-2" id="nav-expand-section-tutorials-sidebar-id" aria-controls="section-tutorials-sidebar-id" aria-expanded="false" aria-label="Tutorials"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-tutorials-sidebar-id" id="section-tutorials-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/learn/tutorials/dependency-updates.html" destination="/learn/tutorials/dependency-updates.html" class="hover:text-skye-dark focus:text-skye-dark"> Automate your code updates </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/learn/tutorials/restrict-service-access.html" destination="/learn/tutorials/restrict-service-access.html" class="hover:text-skye-dark focus:text-skye-dark"> Restrict service access </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/learn/tutorials/exporting.html" destination="/learn/tutorials/exporting.html" class="hover:text-skye-dark focus:text-skye-dark"> Exporting data </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/learn/tutorials/migrating.html" destination="/learn/tutorials/migrating.html" class="hover:text-skye-dark focus:text-skye-dark"> Migrating to Platform.sh </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/learn/bestpractices.html" destination="/learn/bestpractices.html" class="hover:text-skye-dark focus:text-skye-dark"> Best practices </a> </h4> <button class="py-2" id="nav-expand-section-best-practices-sidebar-id" aria-controls="section-best-practices-sidebar-id" aria-expanded="false" aria-label="Best practices"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-best-practices-sidebar-id" id="section-best-practices-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/learn/bestpractices/http-caching.html" destination="/learn/bestpractices/http-caching.html" class="hover:text-skye-dark focus:text-skye-dark"> HTTP caching </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/learn/bestpractices/oneormany.html" destination="/learn/bestpractices/oneormany.html" class="hover:text-skye-dark focus:text-skye-dark"> Monolith, headless or microservices? </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/learn/bestpractices/clean-repository.html" destination="/learn/bestpractices/clean-repository.html" class="hover:text-skye-dark focus:text-skye-dark"> Keep your Git repository clean </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/learn/resources.html" destination="/learn/resources.html" class="hover:text-skye-dark focus:text-skye-dark"> More resources </a> </h4> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-more-resources-sidebar-id" id="section-more-resources-sidebar-id"> </ul> </div> </div> </div> <div x-data="{ expanded: true }"> <h3 class="font-semibold"> <button class="bg-no-repeat bg-right-2 w-[95%] py-4 pl-2 pr-6 my-2 text-left bg-grey" :style="expanded ? 'background-image: url(/images/icons/minus.svg);' : 'background-image: url(/images/icons/add.svg);'" @click="expanded = ! expanded" aria-controls="section-guides" aria-expanded="true"> Frameworks </button> </h3> <div x-show="expanded" id="section-guides"> <div class="text-sm" x-data="{ topExpanded: false }"> <h5 class="text-xs px-5 pt-2 pb-2 uppercase">Python</h5> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/django.html" destination="/guides/django.html" class="hover:text-skye-dark focus:text-skye-dark"> Django </a> </h4> <button class="py-2" id="nav-expand-section-django-sidebar-id" aria-controls="section-django-sidebar-id" aria-expanded="false" aria-label="Django"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-django-sidebar-id" id="section-django-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/django/deploy.html" destination="/guides/django/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Get started </a> <button class="py-2" id="nav-expand-get-started-sidebar-id" aria-controls="get-started-sidebar-id" aria-expanded="false" aria-label="Get started"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-get-started-sidebar-id" id="get-started-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/django/deploy/configure.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/django/deploy/customize.html" class="hover:text-skye-dark focus:text-skye-dark"> Customize </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/django/deploy/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Deploy </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/django/deploy/next-steps.html" class="hover:text-skye-dark focus:text-skye-dark"> Next steps </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/django/local.html" destination="/guides/django/local.html" class="hover:text-skye-dark focus:text-skye-dark"> Local development </a> <button class="py-2" id="nav-expand-local-development-sidebar-id" aria-controls="local-development-sidebar-id" aria-expanded="false" aria-label="Local development"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-local-development-sidebar-id" id="local-development-sidebar-id"> <h5 class="text-xs my-1 uppercase">Integrated environments</h5> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/django/local/ddev.html" class="hover:text-skye-dark focus:text-skye-dark"> DDEV </a> </li> <h5 class="text-xs my-1 uppercase">Supported environments</h5> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/django/local/tethered.html" class="hover:text-skye-dark focus:text-skye-dark"> Tethered local </a> </li> </ul> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <h5 class="text-xs px-5 pt-2 pb-2 uppercase">PHP</h5> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/drupal.html" destination="/guides/drupal.html" class="hover:text-skye-dark focus:text-skye-dark"> Drupal </a> </h4> <button class="py-2" id="nav-expand-section-drupal-sidebar-id" aria-controls="section-drupal-sidebar-id" aria-expanded="false" aria-label="Drupal"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-drupal-sidebar-id" id="section-drupal-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/drupal/deploy.html" destination="/guides/drupal/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Get started </a> <button class="py-2" id="nav-expand-get-started-sidebar-id" aria-controls="get-started-sidebar-id" aria-expanded="false" aria-label="Get started"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-get-started-sidebar-id" id="get-started-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/drupal/deploy/configure.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/drupal/deploy/customize.html" class="hover:text-skye-dark focus:text-skye-dark"> Customize </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/drupal/deploy/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Deploy </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/drupal/deploy/next-steps.html" class="hover:text-skye-dark focus:text-skye-dark"> Next steps </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/drupal/elasticsearch.html" destination="/guides/drupal/elasticsearch.html" class="hover:text-skye-dark focus:text-skye-dark"> Elasticsearch </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/drupal/memcached.html" destination="/guides/drupal/memcached.html" class="hover:text-skye-dark focus:text-skye-dark"> Memcached </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/drupal/multi-site.html" destination="/guides/drupal/multi-site.html" class="hover:text-skye-dark focus:text-skye-dark"> Multi-site </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/drupal/redis.html" destination="/guides/drupal/redis.html" class="hover:text-skye-dark focus:text-skye-dark"> Redis </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/drupal/simplesaml.html" destination="/guides/drupal/simplesaml.html" class="hover:text-skye-dark focus:text-skye-dark"> SimpleSAML </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/drupal/faq.html" destination="/guides/drupal/faq.html" class="hover:text-skye-dark focus:text-skye-dark"> FAQ </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/ibexa.html" destination="/guides/ibexa.html" class="hover:text-skye-dark focus:text-skye-dark"> Ibexa DXP <span class="text-sm text-ebony bg-skye-light p-1 rounded ml-2">Partner</span> </a> </h4> <button class="py-2" id="nav-expand-section-ibexa-dxp-sidebar-id" aria-controls="section-ibexa-dxp-sidebar-id" aria-expanded="false" aria-label="Ibexa DXP"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-ibexa-dxp-sidebar-id" id="section-ibexa-dxp-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/ibexa/deploy.html" destination="/guides/ibexa/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Get started </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/ibexa/fastly.html" destination="/guides/ibexa/fastly.html" class="hover:text-skye-dark focus:text-skye-dark"> Fastly </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: true }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/symfony.html" destination="/guides/symfony.html" class="hover:text-skye-dark focus:text-skye-dark text-skye-dark"> Symfony <span class="text-sm text-ebony bg-skye-light p-1 rounded ml-2">Partner</span> </a> </h4> <button class="py-2" id="nav-expand-section-symfony-sidebar-id" aria-controls="section-symfony-sidebar-id" aria-expanded="true" aria-label="Symfony"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-symfony-sidebar-id" id="section-symfony-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/symfony/get-started.html" destination="/guides/symfony/get-started.html" class="hover:text-skye-dark focus:text-skye-dark"> Get started </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/symfony/integration.html" destination="/guides/symfony/integration.html" class="hover:text-skye-dark focus:text-skye-dark"> Symfony integration </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/symfony/environment-variables.html" destination="/guides/symfony/environment-variables.html" class="hover:text-skye-dark focus:text-skye-dark"> Environment variables </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/symfony/workers.html" destination="/guides/symfony/workers.html" class="hover:text-skye-dark focus:text-skye-dark"> Workers </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/symfony/crons.html" destination="/guides/symfony/crons.html" class="hover:text-skye-dark focus:text-skye-dark"> Cron Jobs </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/symfony/blackfire.html" destination="/guides/symfony/blackfire.html" class="hover:text-skye-dark focus:text-skye-dark"> Blackfire </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/symfony/local.html" destination="/guides/symfony/local.html" class="hover:text-skye-dark focus:text-skye-dark"> Local development </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/symfony/faq.html" destination="/guides/symfony/faq.html" class="hover:text-skye-dark focus:text-skye-dark"> FAQ </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/laravel.html" destination="/guides/laravel.html" class="hover:text-skye-dark focus:text-skye-dark"> Laravel </a> </h4> <button class="py-2" id="nav-expand-section-laravel-sidebar-id" aria-controls="section-laravel-sidebar-id" aria-expanded="false" aria-label="Laravel"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-laravel-sidebar-id" id="section-laravel-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/laravel/deploy.html" destination="/guides/laravel/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Get started </a> <button class="py-2" id="nav-expand-get-started-sidebar-id" aria-controls="get-started-sidebar-id" aria-expanded="false" aria-label="Get started"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-get-started-sidebar-id" id="get-started-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/laravel/deploy/configure.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/laravel/deploy/bridge.html" class="hover:text-skye-dark focus:text-skye-dark"> Laravel Bridge </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/laravel/deploy/scheduling.html" class="hover:text-skye-dark focus:text-skye-dark"> Scheduling tasks </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/laravel/deploy/blackfire.html" class="hover:text-skye-dark focus:text-skye-dark"> Blackfire </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/laravel/deploy/octane.html" class="hover:text-skye-dark focus:text-skye-dark"> Octane </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/laravel/deploy/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Deploy </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/laravel/local-development.html" destination="/guides/laravel/local-development.html" class="hover:text-skye-dark focus:text-skye-dark"> Local development </a> <button class="py-2" id="nav-expand-local-development-sidebar-id" aria-controls="local-development-sidebar-id" aria-expanded="false" aria-label="Local development"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-local-development-sidebar-id" id="local-development-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/laravel/local-development/ddev.html" class="hover:text-skye-dark focus:text-skye-dark"> DDEV </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/laravel/local-development/lando.html" class="hover:text-skye-dark focus:text-skye-dark"> Lando </a> </li> </ul> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/typo3.html" destination="/guides/typo3.html" class="hover:text-skye-dark focus:text-skye-dark"> TYPO3 </a> </h4> <button class="py-2" id="nav-expand-section-typo3-sidebar-id" aria-controls="section-typo3-sidebar-id" aria-expanded="false" aria-label="TYPO3"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-typo3-sidebar-id" id="section-typo3-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/typo3/deploy.html" destination="/guides/typo3/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Get started </a> <button class="py-2" id="nav-expand-get-started-sidebar-id" aria-controls="get-started-sidebar-id" aria-expanded="false" aria-label="Get started"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-get-started-sidebar-id" id="get-started-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/typo3/deploy/configure.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/typo3/deploy/customize.html" class="hover:text-skye-dark focus:text-skye-dark"> Customize </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/typo3/deploy/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Deploy </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/typo3/deploy/next-steps.html" class="hover:text-skye-dark focus:text-skye-dark"> Next steps </a> </li> </ul> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/wordpress.html" destination="/guides/wordpress.html" class="hover:text-skye-dark focus:text-skye-dark"> WordPress </a> </h4> <button class="py-2" id="nav-expand-section-wordpress-sidebar-id" aria-controls="section-wordpress-sidebar-id" aria-expanded="false" aria-label="WordPress"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-wordpress-sidebar-id" id="section-wordpress-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/wordpress/deploy.html" destination="/guides/wordpress/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Get started </a> <button class="py-2" id="nav-expand-get-started-sidebar-id" aria-controls="get-started-sidebar-id" aria-expanded="false" aria-label="Get started"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-get-started-sidebar-id" id="get-started-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/wordpress/deploy/configure.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/wordpress/deploy/customize.html" class="hover:text-skye-dark focus:text-skye-dark"> Customize </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/wordpress/deploy/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Deploy </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/wordpress/deploy/next-steps.html" class="hover:text-skye-dark focus:text-skye-dark"> Next steps </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/wordpress/composer.html" destination="/guides/wordpress/composer.html" class="hover:text-skye-dark focus:text-skye-dark"> Why use Composer? </a> <button class="py-2" id="nav-expand-why-use-composer-sidebar-id" aria-controls="why-use-composer-sidebar-id" aria-expanded="false" aria-label="Why use Composer?"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-why-use-composer-sidebar-id" id="why-use-composer-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/wordpress/composer/migrate.html" class="hover:text-skye-dark focus:text-skye-dark"> Upgrade to use Composer </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/wordpress/vanilla.html" destination="/guides/wordpress/vanilla.html" class="hover:text-skye-dark focus:text-skye-dark"> Deploy without Composer </a> <button class="py-2" id="nav-expand-deploy-without-composer-sidebar-id" aria-controls="deploy-without-composer-sidebar-id" aria-expanded="false" aria-label="Deploy without Composer"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-deploy-without-composer-sidebar-id" id="deploy-without-composer-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/wordpress/vanilla/configure.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/wordpress/vanilla/customize.html" class="hover:text-skye-dark focus:text-skye-dark"> Customize </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/wordpress/vanilla/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Deploy </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/wordpress/vanilla/next-steps.html" class="hover:text-skye-dark focus:text-skye-dark"> Next steps </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/wordpress/redis.html" destination="/guides/wordpress/redis.html" class="hover:text-skye-dark focus:text-skye-dark"> Redis </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/pimcore.html" destination="/guides/pimcore.html" class="hover:text-skye-dark focus:text-skye-dark"> Pimcore PaaS <span class="text-sm text-ebony bg-skye-light p-1 rounded ml-2">Partner</span> </a> </h4> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-pimcore-paas-sidebar-id" id="section-pimcore-paas-sidebar-id"> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/shopware.html" destination="/guides/shopware.html" class="hover:text-skye-dark focus:text-skye-dark"> Shopware PaaS <span class="text-sm text-ebony bg-skye-light p-1 rounded ml-2">Partner</span> </a> </h4> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-shopware-paas-sidebar-id" id="section-shopware-paas-sidebar-id"> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <h5 class="text-xs px-5 pt-2 pb-2 uppercase">Javascript/Node.js</h5> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/gatsby.html" destination="/guides/gatsby.html" class="hover:text-skye-dark focus:text-skye-dark"> Gatsby </a> </h4> <button class="py-2" id="nav-expand-section-gatsby-sidebar-id" aria-controls="section-gatsby-sidebar-id" aria-expanded="false" aria-label="Gatsby"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-gatsby-sidebar-id" id="section-gatsby-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/gatsby/deploy.html" destination="/guides/gatsby/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Get started </a> <button class="py-2" id="nav-expand-get-started-sidebar-id" aria-controls="get-started-sidebar-id" aria-expanded="false" aria-label="Get started"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-get-started-sidebar-id" id="get-started-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/gatsby/deploy/configure.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/gatsby/deploy/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Deploy </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/gatsby/deploy/next-steps.html" class="hover:text-skye-dark focus:text-skye-dark"> Next steps </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/gatsby/headless.html" destination="/guides/gatsby/headless.html" class="hover:text-skye-dark focus:text-skye-dark"> Headless CMS </a> <button class="py-2" id="nav-expand-headless-cms-sidebar-id" aria-controls="headless-cms-sidebar-id" aria-expanded="false" aria-label="Headless CMS"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-headless-cms-sidebar-id" id="headless-cms-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/gatsby/headless/drupal.html" class="hover:text-skye-dark focus:text-skye-dark"> Drupal </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/gatsby/headless/strapi.html" class="hover:text-skye-dark focus:text-skye-dark"> Strapi </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/gatsby/headless/wordpress.html" class="hover:text-skye-dark focus:text-skye-dark"> WordPress </a> </li> </ul> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/nextjs.html" destination="/guides/nextjs.html" class="hover:text-skye-dark focus:text-skye-dark"> Next.js </a> </h4> <button class="py-2" id="nav-expand-section-nextjs-sidebar-id" aria-controls="section-nextjs-sidebar-id" aria-expanded="false" aria-label="Next.js"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-nextjs-sidebar-id" id="section-nextjs-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/nextjs/deploy.html" destination="/guides/nextjs/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Get started </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/strapi.html" destination="/guides/strapi.html" class="hover:text-skye-dark focus:text-skye-dark"> Strapi </a> </h4> <button class="py-2" id="nav-expand-section-strapi-sidebar-id" aria-controls="section-strapi-sidebar-id" aria-expanded="false" aria-label="Strapi"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-strapi-sidebar-id" id="section-strapi-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/strapi/deploy.html" destination="/guides/strapi/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Get started </a> <button class="py-2" id="nav-expand-get-started-sidebar-id" aria-controls="get-started-sidebar-id" aria-expanded="false" aria-label="Get started"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-get-started-sidebar-id" id="get-started-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/strapi/deploy/configure.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/strapi/deploy/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Deploy </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/strapi/database-configuration.html" destination="/guides/strapi/database-configuration.html" class="hover:text-skye-dark focus:text-skye-dark"> Database Configuration </a> <button class="py-2" id="nav-expand-database-configuration-sidebar-id" aria-controls="database-configuration-sidebar-id" aria-expanded="false" aria-label="Database Configuration"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-database-configuration-sidebar-id" id="database-configuration-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/strapi/database-configuration/sqlite.html" class="hover:text-skye-dark focus:text-skye-dark"> SQLite </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/strapi/database-configuration/postgresql.html" class="hover:text-skye-dark focus:text-skye-dark"> PostgreSQL </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/strapi/database-configuration/mysql.html" class="hover:text-skye-dark focus:text-skye-dark"> MySQL </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/strapi/database-configuration/mongodb.html" class="hover:text-skye-dark focus:text-skye-dark"> MongoDB </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/strapi/local-development.html" destination="/guides/strapi/local-development.html" class="hover:text-skye-dark focus:text-skye-dark"> Local development </a> <button class="py-2" id="nav-expand-local-development-sidebar-id" aria-controls="local-development-sidebar-id" aria-expanded="false" aria-label="Local development"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-local-development-sidebar-id" id="local-development-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/strapi/local-development/local-development-v3.html" class="hover:text-skye-dark focus:text-skye-dark"> Strapi v3 </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/strapi/local-development/local-development-v4.html" class="hover:text-skye-dark focus:text-skye-dark"> Strapi v4 </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/strapi/adding-frontends.html" destination="/guides/strapi/adding-frontends.html" class="hover:text-skye-dark focus:text-skye-dark"> Adding frontends </a> <button class="py-2" id="nav-expand-adding-frontends-sidebar-id" aria-controls="adding-frontends-sidebar-id" aria-expanded="false" aria-label="Adding frontends"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-adding-frontends-sidebar-id" id="adding-frontends-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/strapi/adding-frontends/gatsby.html" class="hover:text-skye-dark focus:text-skye-dark"> Gatsby </a> </li> </ul> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <h5 class="text-xs px-5 pt-2 pb-2 uppercase">Java</h5> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/hibernate.html" destination="/guides/hibernate.html" class="hover:text-skye-dark focus:text-skye-dark"> Hibernate </a> </h4> <button class="py-2" id="nav-expand-section-hibernate-sidebar-id" aria-controls="section-hibernate-sidebar-id" aria-expanded="false" aria-label="Hibernate"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-hibernate-sidebar-id" id="section-hibernate-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/hibernate/deploy.html" destination="/guides/hibernate/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Get started </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/jakarta.html" destination="/guides/jakarta.html" class="hover:text-skye-dark focus:text-skye-dark"> Jakarta </a> </h4> <button class="py-2" id="nav-expand-section-jakarta-sidebar-id" aria-controls="section-jakarta-sidebar-id" aria-expanded="false" aria-label="Jakarta"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-jakarta-sidebar-id" id="section-jakarta-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/jakarta/deploy.html" destination="/guides/jakarta/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Get started </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/micronaut.html" destination="/guides/micronaut.html" class="hover:text-skye-dark focus:text-skye-dark"> Micronaut </a> </h4> <button class="py-2" id="nav-expand-section-micronaut-sidebar-id" aria-controls="section-micronaut-sidebar-id" aria-expanded="false" aria-label="Micronaut"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-micronaut-sidebar-id" id="section-micronaut-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/micronaut/deploy.html" destination="/guides/micronaut/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Get started </a> <button class="py-2" id="nav-expand-get-started-sidebar-id" aria-controls="get-started-sidebar-id" aria-expanded="false" aria-label="Get started"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-get-started-sidebar-id" id="get-started-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/micronaut/deploy/configure.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/micronaut/deploy/customize.html" class="hover:text-skye-dark focus:text-skye-dark"> Customize </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/micronaut/deploy/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Deploy </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/micronaut/deploy/next-steps.html" class="hover:text-skye-dark focus:text-skye-dark"> Next steps </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/micronaut/elasticsearch.html" destination="/guides/micronaut/elasticsearch.html" class="hover:text-skye-dark focus:text-skye-dark"> Elasticsearch </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/micronaut/micronaut-data.html" destination="/guides/micronaut/micronaut-data.html" class="hover:text-skye-dark focus:text-skye-dark"> Micronaut Data </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/micronaut/mongodb.html" destination="/guides/micronaut/mongodb.html" class="hover:text-skye-dark focus:text-skye-dark"> MongoDB </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/micronaut/redis.html" destination="/guides/micronaut/redis.html" class="hover:text-skye-dark focus:text-skye-dark"> Redis </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/micronaut/jpa.html" destination="/guides/micronaut/jpa.html" class="hover:text-skye-dark focus:text-skye-dark"> JPA </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/quarkus.html" destination="/guides/quarkus.html" class="hover:text-skye-dark focus:text-skye-dark"> Quarkus </a> </h4> <button class="py-2" id="nav-expand-section-quarkus-sidebar-id" aria-controls="section-quarkus-sidebar-id" aria-expanded="false" aria-label="Quarkus"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-quarkus-sidebar-id" id="section-quarkus-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/quarkus/deploy.html" destination="/guides/quarkus/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Get started </a> <button class="py-2" id="nav-expand-get-started-sidebar-id" aria-controls="get-started-sidebar-id" aria-expanded="false" aria-label="Get started"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-get-started-sidebar-id" id="get-started-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/quarkus/deploy/configure.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/quarkus/deploy/customize.html" class="hover:text-skye-dark focus:text-skye-dark"> Customize </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/quarkus/deploy/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Deploy </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/quarkus/deploy/next-steps.html" class="hover:text-skye-dark focus:text-skye-dark"> Next steps </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/quarkus/elasticsearch.html" destination="/guides/quarkus/elasticsearch.html" class="hover:text-skye-dark focus:text-skye-dark"> Elasticsearch </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/quarkus/jpa.html" destination="/guides/quarkus/jpa.html" class="hover:text-skye-dark focus:text-skye-dark"> JPA </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/quarkus/mongodb.html" destination="/guides/quarkus/mongodb.html" class="hover:text-skye-dark focus:text-skye-dark"> MongoDB </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/quarkus/panache.html" destination="/guides/quarkus/panache.html" class="hover:text-skye-dark focus:text-skye-dark"> Panache </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/quarkus/redis.html" destination="/guides/quarkus/redis.html" class="hover:text-skye-dark focus:text-skye-dark"> Redis </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/guides/spring.html" destination="/guides/spring.html" class="hover:text-skye-dark focus:text-skye-dark"> Spring </a> </h4> <button class="py-2" id="nav-expand-section-spring-sidebar-id" aria-controls="section-spring-sidebar-id" aria-expanded="false" aria-label="Spring"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-spring-sidebar-id" id="section-spring-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/spring/mysql.html" destination="/guides/spring/mysql.html" class="hover:text-skye-dark focus:text-skye-dark"> MariaDB/MySQL </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/spring/postgresql.html" destination="/guides/spring/postgresql.html" class="hover:text-skye-dark focus:text-skye-dark"> PostgreSQL </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/spring/rabbitmq.html" destination="/guides/spring/rabbitmq.html" class="hover:text-skye-dark focus:text-skye-dark"> RabbitMQ </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/spring/solr.html" destination="/guides/spring/solr.html" class="hover:text-skye-dark focus:text-skye-dark"> Solr </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/guides/spring/deploy.html" destination="/guides/spring/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Get started </a> <button class="py-2" id="nav-expand-get-started-sidebar-id" aria-controls="get-started-sidebar-id" aria-expanded="false" aria-label="Get started"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-get-started-sidebar-id" id="get-started-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/spring/deploy/configure.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/spring/deploy/customize.html" class="hover:text-skye-dark focus:text-skye-dark"> Customize </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/spring/deploy/deploy.html" class="hover:text-skye-dark focus:text-skye-dark"> Deploy </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/guides/spring/deploy/next-steps.html" class="hover:text-skye-dark focus:text-skye-dark"> Next steps </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/spring/elasticsearch.html" destination="/guides/spring/elasticsearch.html" class="hover:text-skye-dark focus:text-skye-dark"> Elasticsearch </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/spring/jpa.html" destination="/guides/spring/jpa.html" class="hover:text-skye-dark focus:text-skye-dark"> JPA </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/spring/mongodb.html" destination="/guides/spring/mongodb.html" class="hover:text-skye-dark focus:text-skye-dark"> MongoDB </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/guides/spring/redis.html" destination="/guides/spring/redis.html" class="hover:text-skye-dark focus:text-skye-dark"> Redis </a> </div> </li> </ul> </div> </div> </div> <div x-data="{ expanded: true }"> <h3 class="font-semibold"> <button class="bg-no-repeat bg-right-2 w-[95%] py-4 pl-2 pr-6 my-2 text-left bg-grey" :style="expanded ? 'background-image: url(/images/icons/minus.svg);' : 'background-image: url(/images/icons/add.svg);'" @click="expanded = ! expanded" aria-controls="section-home" aria-expanded="false"> Reference </button> </h3> <div x-show="expanded" id="section-home"> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/create-apps.html" destination="/create-apps.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure apps </a> </h4> <button class="py-2" id="nav-expand-section-configure-apps-sidebar-id" aria-controls="section-configure-apps-sidebar-id" aria-expanded="false" aria-label="Configure apps"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-configure-apps-sidebar-id" id="section-configure-apps-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/create-apps/app-reference.html" destination="/create-apps/app-reference.html" class="hover:text-skye-dark focus:text-skye-dark"> App reference </a> <button class="py-2" id="nav-expand-app-reference-sidebar-id" aria-controls="app-reference-sidebar-id" aria-expanded="false" aria-label="App reference"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-app-reference-sidebar-id" id="app-reference-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/create-apps/app-reference/single-runtime-image.html" class="hover:text-skye-dark focus:text-skye-dark"> Single-runtime image </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/create-apps/app-reference/composable-image.html" class="hover:text-skye-dark focus:text-skye-dark"> Composable image <span class="text-sm text-ebony bg-skye-light p-1 rounded ml-2">Beta</span> </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/create-apps/source-operations.html" destination="/create-apps/source-operations.html" class="hover:text-skye-dark focus:text-skye-dark"> Source operations </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/create-apps/runtime-operations.html" destination="/create-apps/runtime-operations.html" class="hover:text-skye-dark focus:text-skye-dark"> Runtime operations </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/create-apps/web.html" destination="/create-apps/web.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure what’s served </a> <button class="py-2" id="nav-expand-configure-whatrsquos-served-sidebar-id" aria-controls="configure-whatrsquos-served-sidebar-id" aria-expanded="false" aria-label="Configure what’s served"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-configure-whatrsquos-served-sidebar-id" id="configure-whatrsquos-served-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/create-apps/web/php-basic.html" class="hover:text-skye-dark focus:text-skye-dark"> PHP with front controller </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/create-apps/web/rewrite-requests.html" class="hover:text-skye-dark focus:text-skye-dark"> Rewrite requests </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/create-apps/web/serve-different-directories.html" class="hover:text-skye-dark focus:text-skye-dark"> Serve different paths </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/create-apps/web/static.html" class="hover:text-skye-dark focus:text-skye-dark"> Static sites </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/create-apps/web/custom-headers.html" class="hover:text-skye-dark focus:text-skye-dark"> Custom headers </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/create-apps/multi-app.html" destination="/create-apps/multi-app.html" class="hover:text-skye-dark focus:text-skye-dark"> Multiple apps </a> <button class="py-2" id="nav-expand-multiple-apps-sidebar-id" aria-controls="multiple-apps-sidebar-id" aria-expanded="false" aria-label="Multiple apps"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-multiple-apps-sidebar-id" id="multiple-apps-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/create-apps/multi-app/project-structure.html" class="hover:text-skye-dark focus:text-skye-dark"> Choose a project structure </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/create-apps/multi-app/routes.html" class="hover:text-skye-dark focus:text-skye-dark"> Define routes </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/create-apps/multi-app/relationships.html" class="hover:text-skye-dark focus:text-skye-dark"> Define relationships </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/create-apps/timezone.html" destination="/create-apps/timezone.html" class="hover:text-skye-dark focus:text-skye-dark"> Timezones </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/create-apps/troubleshoot-disks.html" destination="/create-apps/troubleshoot-disks.html" class="hover:text-skye-dark focus:text-skye-dark"> Troubleshoot disks </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/create-apps/troubleshoot-mounts.html" destination="/create-apps/troubleshoot-mounts.html" class="hover:text-skye-dark focus:text-skye-dark"> Troubleshoot mounts </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/create-apps/upgrading.html" destination="/create-apps/upgrading.html" class="hover:text-skye-dark focus:text-skye-dark"> Upgrading </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/create-apps/hooks.html" destination="/create-apps/hooks.html" class="hover:text-skye-dark focus:text-skye-dark"> Use build and deploy hooks </a> <button class="py-2" id="nav-expand-use-build-and-deploy-hooks-sidebar-id" aria-controls="use-build-and-deploy-hooks-sidebar-id" aria-expanded="false" aria-label="Use build and deploy hooks"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-use-build-and-deploy-hooks-sidebar-id" id="use-build-and-deploy-hooks-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/create-apps/hooks/vary-hooks-by-environment.html" class="hover:text-skye-dark focus:text-skye-dark"> Change hooks in different environments </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/create-apps/hooks/hooks-comparison.html" class="hover:text-skye-dark focus:text-skye-dark"> Comparison of hooks </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/create-apps/hooks/hooks-and-dependencies.html" class="hover:text-skye-dark focus:text-skye-dark"> Use hooks with dependencies </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/create-apps/workers.html" destination="/create-apps/workers.html" class="hover:text-skye-dark focus:text-skye-dark"> Work with workers </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/add-services.html" destination="/add-services.html" class="hover:text-skye-dark focus:text-skye-dark"> Add services </a> </h4> <button class="py-2" id="nav-expand-section-add-services-sidebar-id" aria-controls="section-add-services-sidebar-id" aria-expanded="false" aria-label="Add services"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-add-services-sidebar-id" id="section-add-services-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/add-services/elasticsearch.html" destination="/add-services/elasticsearch.html" class="hover:text-skye-dark focus:text-skye-dark"> Elasticsearch <span class="text-sm text-ebony bg-skye-light p-1 rounded ml-2">Premium</span> </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/add-services/gotenberg.html" destination="/add-services/gotenberg.html" class="hover:text-skye-dark focus:text-skye-dark"> Gotenberg </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/add-services/headless-chrome.html" destination="/add-services/headless-chrome.html" class="hover:text-skye-dark focus:text-skye-dark"> Headless Chrome </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/add-services/influxdb.html" destination="/add-services/influxdb.html" class="hover:text-skye-dark focus:text-skye-dark"> InfluxDB </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/add-services/kafka.html" destination="/add-services/kafka.html" class="hover:text-skye-dark focus:text-skye-dark"> Kafka </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/add-services/mysql.html" destination="/add-services/mysql.html" class="hover:text-skye-dark focus:text-skye-dark"> MariaDB/MySQL </a> <button class="py-2" id="nav-expand-mariadb/mysql-sidebar-id" aria-controls="mariadb/mysql-sidebar-id" aria-expanded="false" aria-label="MariaDB/MySQL"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-mariadb/mysql-sidebar-id" id="mariadb/mysql-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/add-services/mysql/mysql-replication.html" class="hover:text-skye-dark focus:text-skye-dark"> MariaDB/MySQL Replication </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/add-services/mysql/troubleshoot.html" class="hover:text-skye-dark focus:text-skye-dark"> Troubleshoot </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/add-services/memcached.html" destination="/add-services/memcached.html" class="hover:text-skye-dark focus:text-skye-dark"> Memcached </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/add-services/mongodb.html" destination="/add-services/mongodb.html" class="hover:text-skye-dark focus:text-skye-dark"> MongoDB <span class="text-sm text-ebony bg-skye-light p-1 rounded ml-2">Premium</span> </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/add-services/network-storage.html" destination="/add-services/network-storage.html" class="hover:text-skye-dark focus:text-skye-dark"> Network Storage </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/add-services/opensearch.html" destination="/add-services/opensearch.html" class="hover:text-skye-dark focus:text-skye-dark"> OpenSearch </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/add-services/postgresql.html" destination="/add-services/postgresql.html" class="hover:text-skye-dark focus:text-skye-dark"> PostgreSQL </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/add-services/rabbitmq.html" destination="/add-services/rabbitmq.html" class="hover:text-skye-dark focus:text-skye-dark"> RabbitMQ </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/add-services/redis.html" destination="/add-services/redis.html" class="hover:text-skye-dark focus:text-skye-dark"> Redis </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/add-services/solr.html" destination="/add-services/solr.html" class="hover:text-skye-dark focus:text-skye-dark"> Solr </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/add-services/varnish.html" destination="/add-services/varnish.html" class="hover:text-skye-dark focus:text-skye-dark"> Varnish </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/add-services/vault.html" destination="/add-services/vault.html" class="hover:text-skye-dark focus:text-skye-dark"> Vault KMS </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/define-routes.html" destination="/define-routes.html" class="hover:text-skye-dark focus:text-skye-dark"> Define routes </a> </h4> <button class="py-2" id="nav-expand-section-define-routes-sidebar-id" aria-controls="section-define-routes-sidebar-id" aria-expanded="false" aria-label="Define routes"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-define-routes-sidebar-id" id="section-define-routes-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/define-routes/ssi.html" destination="/define-routes/ssi.html" class="hover:text-skye-dark focus:text-skye-dark"> Server Side Includes (SSI) </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/define-routes/cache.html" destination="/define-routes/cache.html" class="hover:text-skye-dark focus:text-skye-dark"> HTTP cache </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/define-routes/https.html" destination="/define-routes/https.html" class="hover:text-skye-dark focus:text-skye-dark"> HTTPS </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/define-routes/proxy.html" destination="/define-routes/proxy.html" class="hover:text-skye-dark focus:text-skye-dark"> Proxy routes </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/define-routes/redirects.html" destination="/define-routes/redirects.html" class="hover:text-skye-dark focus:text-skye-dark"> Redirects </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/languages.html" destination="/languages.html" class="hover:text-skye-dark focus:text-skye-dark"> Languages </a> </h4> <button class="py-2" id="nav-expand-section-languages-sidebar-id" aria-controls="section-languages-sidebar-id" aria-expanded="false" aria-label="Languages"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-languages-sidebar-id" id="section-languages-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/languages/dotnet.html" destination="/languages/dotnet.html" class="hover:text-skye-dark focus:text-skye-dark"> C#/.NET Core </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/languages/elixir.html" destination="/languages/elixir.html" class="hover:text-skye-dark focus:text-skye-dark"> Elixir </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/languages/go.html" destination="/languages/go.html" class="hover:text-skye-dark focus:text-skye-dark"> Go </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/languages/java.html" destination="/languages/java.html" class="hover:text-skye-dark focus:text-skye-dark"> Java </a> <button class="py-2" id="nav-expand-java-sidebar-id" aria-controls="java-sidebar-id" aria-expanded="false" aria-label="Java"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-java-sidebar-id" id="java-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/java/frameworks.html" class="hover:text-skye-dark focus:text-skye-dark"> Frameworks </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/java/migration.html" class="hover:text-skye-dark focus:text-skye-dark"> Moving to Platform.sh </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/java/tuning.html" class="hover:text-skye-dark focus:text-skye-dark"> Tuning </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/languages/nodejs.html" destination="/languages/nodejs.html" class="hover:text-skye-dark focus:text-skye-dark"> JavaScript/Node.js </a> <button class="py-2" id="nav-expand-javascript/nodejs-sidebar-id" aria-controls="javascript/nodejs-sidebar-id" aria-expanded="false" aria-label="JavaScript/Node.js"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-javascript/nodejs-sidebar-id" id="javascript/nodejs-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/nodejs/debug.html" class="hover:text-skye-dark focus:text-skye-dark"> Debugging </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/nodejs/node-version.html" class="hover:text-skye-dark focus:text-skye-dark"> Manage Node.js versions </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/languages/lisp.html" destination="/languages/lisp.html" class="hover:text-skye-dark focus:text-skye-dark"> Lisp </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/languages/php.html" destination="/languages/php.html" class="hover:text-skye-dark focus:text-skye-dark"> PHP </a> <button class="py-2" id="nav-expand-php-sidebar-id" aria-controls="php-sidebar-id" aria-expanded="false" aria-label="PHP"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-php-sidebar-id" id="php-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/php/extensions.html" class="hover:text-skye-dark focus:text-skye-dark"> Extensions </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/php/tuning.html" class="hover:text-skye-dark focus:text-skye-dark"> Performance tuning </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/php/fpm.html" class="hover:text-skye-dark focus:text-skye-dark"> PHP-FPM sizing </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/php/xdebug.html" class="hover:text-skye-dark focus:text-skye-dark"> Xdebug </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/php/redis.html" class="hover:text-skye-dark focus:text-skye-dark"> Custom Redis </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/php/swoole.html" class="hover:text-skye-dark focus:text-skye-dark"> Swoole </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/php/composer-auth.html" class="hover:text-skye-dark focus:text-skye-dark"> Authenticated Composer </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/php/troubleshoot.html" class="hover:text-skye-dark focus:text-skye-dark"> Troubleshoot </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/languages/python.html" destination="/languages/python.html" class="hover:text-skye-dark focus:text-skye-dark"> Python </a> <button class="py-2" id="nav-expand-python-sidebar-id" aria-controls="python-sidebar-id" aria-expanded="false" aria-label="Python"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-python-sidebar-id" id="python-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/python/dependencies.html" class="hover:text-skye-dark focus:text-skye-dark"> Manage dependencies </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/python/server.html" class="hover:text-skye-dark focus:text-skye-dark"> Web servers </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/languages/python/python-version.html" class="hover:text-skye-dark focus:text-skye-dark"> Python in non-Python containers </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/languages/ruby.html" destination="/languages/ruby.html" class="hover:text-skye-dark focus:text-skye-dark"> Ruby </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/languages/rust.html" destination="/languages/rust.html" class="hover:text-skye-dark focus:text-skye-dark"> Rust </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/development.html" destination="/development.html" class="hover:text-skye-dark focus:text-skye-dark"> Development </a> </h4> <button class="py-2" id="nav-expand-section-development-sidebar-id" aria-controls="section-development-sidebar-id" aria-expanded="false" aria-label="Development"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-development-sidebar-id" id="section-development-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/development/templates.html" destination="/development/templates.html" class="hover:text-skye-dark focus:text-skye-dark"> Project templates </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/development/local.html" destination="/development/local.html" class="hover:text-skye-dark focus:text-skye-dark"> Local development </a> <button class="py-2" id="nav-expand-local-development-sidebar-id" aria-controls="local-development-sidebar-id" aria-expanded="false" aria-label="Local development"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-local-development-sidebar-id" id="local-development-sidebar-id"> <h5 class="text-xs my-1 uppercase">Integrated environments</h5> <li class="border-l border-stone py-1 pl-4"> <a href="/development/local/ddev.html" class="hover:text-skye-dark focus:text-skye-dark"> DDEV </a> </li> <h5 class="text-xs my-1 uppercase">Supported environments</h5> <li class="border-l border-stone py-1 pl-4"> <a href="/development/local/tethered.html" class="hover:text-skye-dark focus:text-skye-dark"> Tethered </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/development/local/untethered.html" class="hover:text-skye-dark focus:text-skye-dark"> Untethered </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/development/local/docksal.html" class="hover:text-skye-dark focus:text-skye-dark"> Docksal </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/development/local/lando.html" class="hover:text-skye-dark focus:text-skye-dark"> Lando </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/development/variables.html" destination="/development/variables.html" class="hover:text-skye-dark focus:text-skye-dark"> Variables overview </a> <button class="py-2" id="nav-expand-variables-overview-sidebar-id" aria-controls="variables-overview-sidebar-id" aria-expanded="false" aria-label="Variables overview"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-variables-overview-sidebar-id" id="variables-overview-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/development/variables/set-variables.html" class="hover:text-skye-dark focus:text-skye-dark"> Set variables </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/development/variables/use-variables.html" class="hover:text-skye-dark focus:text-skye-dark"> Use variables </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/development/access-site.html" destination="/development/access-site.html" class="hover:text-skye-dark focus:text-skye-dark"> Access your site </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/development/file-transfer.html" destination="/development/file-transfer.html" class="hover:text-skye-dark focus:text-skye-dark"> Transfer files </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/development/headers.html" destination="/development/headers.html" class="hover:text-skye-dark focus:text-skye-dark"> Headers </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/development/email.html" destination="/development/email.html" class="hover:text-skye-dark focus:text-skye-dark"> Email </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/development/private-repository.html" destination="/development/private-repository.html" class="hover:text-skye-dark focus:text-skye-dark"> Private repositories </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/development/submodules.html" destination="/development/submodules.html" class="hover:text-skye-dark focus:text-skye-dark"> Git submodules </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/development/ssh.html" destination="/development/ssh.html" class="hover:text-skye-dark focus:text-skye-dark"> Connect with SSH </a> <button class="py-2" id="nav-expand-connect-with-ssh-sidebar-id" aria-controls="connect-with-ssh-sidebar-id" aria-expanded="false" aria-label="Connect with SSH"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-connect-with-ssh-sidebar-id" id="connect-with-ssh-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/development/ssh/ssh-keys.html" class="hover:text-skye-dark focus:text-skye-dark"> SSH keys </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/development/ssh/troubleshoot-ssh.html" class="hover:text-skye-dark focus:text-skye-dark"> Troubleshoot SSH </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/development/transfer-dedicated.html" destination="/development/transfer-dedicated.html" class="hover:text-skye-dark focus:text-skye-dark"> Sync to Dedicated Gen 2 </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/development/regions.html" destination="/development/regions.html" class="hover:text-skye-dark focus:text-skye-dark"> Regions </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/development/troubleshoot.html" destination="/development/troubleshoot.html" class="hover:text-skye-dark focus:text-skye-dark"> Troubleshoot </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/development/deploy-button.html" destination="/development/deploy-button.html" class="hover:text-skye-dark focus:text-skye-dark"> Deploy on Platform.sh </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/development/sanitize-db.html" destination="/development/sanitize-db.html" class="hover:text-skye-dark focus:text-skye-dark"> Sanitize databases </a> <button class="py-2" id="nav-expand-sanitize-databases-sidebar-id" aria-controls="sanitize-databases-sidebar-id" aria-expanded="false" aria-label="Sanitize databases"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-sanitize-databases-sidebar-id" id="sanitize-databases-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/development/sanitize-db/mariadb.html" class="hover:text-skye-dark focus:text-skye-dark"> MariaDB and Drupal </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/development/sanitize-db/postgresql.html" class="hover:text-skye-dark focus:text-skye-dark"> PostgreSQL and Django </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/development/sanitize-db/postgresql-symfony.html" class="hover:text-skye-dark focus:text-skye-dark"> PostgreSQL and Symfony </a> </li> </ul> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/integrations.html" destination="/integrations.html" class="hover:text-skye-dark focus:text-skye-dark"> Integrations </a> </h4> <button class="py-2" id="nav-expand-section-integrations-sidebar-id" aria-controls="section-integrations-sidebar-id" aria-expanded="false" aria-label="Integrations"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-integrations-sidebar-id" id="section-integrations-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/integrations/overview.html" destination="/integrations/overview.html" class="hover:text-skye-dark focus:text-skye-dark"> Overview </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/integrations/activity.html" destination="/integrations/activity.html" class="hover:text-skye-dark focus:text-skye-dark"> Activity scripts </a> <button class="py-2" id="nav-expand-activity-scripts-sidebar-id" aria-controls="activity-scripts-sidebar-id" aria-expanded="false" aria-label="Activity scripts"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-activity-scripts-sidebar-id" id="activity-scripts-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/integrations/activity/reference.html" class="hover:text-skye-dark focus:text-skye-dark"> Activity reference </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/integrations/activity/utility.html" class="hover:text-skye-dark focus:text-skye-dark"> Utility routines </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/integrations/activity/discord.html" class="hover:text-skye-dark focus:text-skye-dark"> Example: Discord </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/integrations/activity/slack.html" class="hover:text-skye-dark focus:text-skye-dark"> Example: Slack </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/integrations/activity/webhooks.html" class="hover:text-skye-dark focus:text-skye-dark"> Webhooks </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/integrations/source.html" destination="/integrations/source.html" class="hover:text-skye-dark focus:text-skye-dark"> Source integrations </a> <button class="py-2" id="nav-expand-source-integrations-sidebar-id" aria-controls="source-integrations-sidebar-id" aria-expanded="false" aria-label="Source integrations"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-source-integrations-sidebar-id" id="source-integrations-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/integrations/source/bitbucket.html" class="hover:text-skye-dark focus:text-skye-dark"> Bitbucket </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/integrations/source/github.html" class="hover:text-skye-dark focus:text-skye-dark"> GitHub </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/integrations/source/gitlab.html" class="hover:text-skye-dark focus:text-skye-dark"> GitLab </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/integrations/source/troubleshoot.html" class="hover:text-skye-dark focus:text-skye-dark"> Resolve access </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/integrations/notifications.html" destination="/integrations/notifications.html" class="hover:text-skye-dark focus:text-skye-dark"> Health notifications </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/increase-observability.html" destination="/increase-observability.html" class="hover:text-skye-dark focus:text-skye-dark"> Increase observability </a> </h4> <button class="py-2" id="nav-expand-section-increase-observability-sidebar-id" aria-controls="section-increase-observability-sidebar-id" aria-expanded="false" aria-label="Increase observability"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-increase-observability-sidebar-id" id="section-increase-observability-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/increase-observability/metrics.html" destination="/increase-observability/metrics.html" class="hover:text-skye-dark focus:text-skye-dark"> Infrastructure metrics </a> <button class="py-2" id="nav-expand-infrastructure-metrics-sidebar-id" aria-controls="infrastructure-metrics-sidebar-id" aria-expanded="false" aria-label="Infrastructure metrics"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-infrastructure-metrics-sidebar-id" id="infrastructure-metrics-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/increase-observability/metrics/dedicated.html" class="hover:text-skye-dark focus:text-skye-dark"> Dedicated Gen 2 metrics </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/increase-observability/metrics/dedicated-generation-3.html" class="hover:text-skye-dark focus:text-skye-dark"> Dedicated Gen 3 metrics </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/increase-observability/metrics/grid.html" class="hover:text-skye-dark focus:text-skye-dark"> Grid metrics </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/increase-observability/integrate-observability.html" destination="/increase-observability/integrate-observability.html" class="hover:text-skye-dark focus:text-skye-dark"> Integrate observability </a> <button class="py-2" id="nav-expand-integrate-observability-sidebar-id" aria-controls="integrate-observability-sidebar-id" aria-expanded="false" aria-label="Integrate observability"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-integrate-observability-sidebar-id" id="integrate-observability-sidebar-id"> <h5 class="text-xs my-1 uppercase">In-house observability tool</h5> <li class="border-l border-stone py-1 pl-4"> <a href="/increase-observability/integrate-observability/blackfire.html" class="hover:text-skye-dark focus:text-skye-dark"> Blackfire </a> </li> <h5 class="text-xs my-1 uppercase">Third-party observability tools</h5> <li class="border-l border-stone py-1 pl-4"> <a href="/increase-observability/integrate-observability/new-relic.html" class="hover:text-skye-dark focus:text-skye-dark"> New Relic </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/increase-observability/integrate-observability/tideways.html" class="hover:text-skye-dark focus:text-skye-dark"> Tideways </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/increase-observability/logs.html" destination="/increase-observability/logs.html" class="hover:text-skye-dark focus:text-skye-dark"> Consume logs </a> <button class="py-2" id="nav-expand-consume-logs-sidebar-id" aria-controls="consume-logs-sidebar-id" aria-expanded="false" aria-label="Consume logs"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-consume-logs-sidebar-id" id="consume-logs-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/increase-observability/logs/access-logs.html" class="hover:text-skye-dark focus:text-skye-dark"> Access logs </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/increase-observability/logs/forward-logs.html" class="hover:text-skye-dark focus:text-skye-dark"> Forward Platform.sh and Blackfire logs </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/increase-observability/logs/forward-fastly-logs.html" class="hover:text-skye-dark focus:text-skye-dark"> Forward Fastly CDN logs </a> </li> </ul> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/environments.html" destination="/environments.html" class="hover:text-skye-dark focus:text-skye-dark"> Manage environments </a> </h4> <button class="py-2" id="nav-expand-section-manage-vendor/name-environments-sidebar-id" aria-controls="section-manage-vendor/name-environments-sidebar-id" aria-expanded="false" aria-label="Manage environments"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-manage-vendor/name-environments-sidebar-id" id="section-manage-vendor/name-environments-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/environments/backup.html" destination="/environments/backup.html" class="hover:text-skye-dark focus:text-skye-dark"> Back up an environment </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/environments/restore.html" destination="/environments/restore.html" class="hover:text-skye-dark focus:text-skye-dark"> Restore an environment </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/environments/cancel-activity.html" destination="/environments/cancel-activity.html" class="hover:text-skye-dark focus:text-skye-dark"> Cancel an activity </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/environments/change-parent.html" destination="/environments/change-parent.html" class="hover:text-skye-dark focus:text-skye-dark"> Change parent </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/environments/http-access-control.html" destination="/environments/http-access-control.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure HTTP access control </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/environments/deactivate-environment.html" destination="/environments/deactivate-environment.html" class="hover:text-skye-dark focus:text-skye-dark"> Deactivate an environment </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/environments/default-environment.html" destination="/environments/default-environment.html" class="hover:text-skye-dark focus:text-skye-dark"> Rename the default environment </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/environments/scalability.html" destination="/environments/scalability.html" class="hover:text-skye-dark focus:text-skye-dark"> Scalability </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/environments/search-engine-visibility.html" destination="/environments/search-engine-visibility.html" class="hover:text-skye-dark focus:text-skye-dark"> Set search engine visibility </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/projects.html" destination="/projects.html" class="hover:text-skye-dark focus:text-skye-dark"> Manage projects </a> </h4> <button class="py-2" id="nav-expand-section-manage-projects-sidebar-id" aria-controls="section-manage-projects-sidebar-id" aria-expanded="false" aria-label="Manage projects"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-manage-projects-sidebar-id" id="section-manage-projects-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/projects/region-migration.html" destination="/projects/region-migration.html" class="hover:text-skye-dark focus:text-skye-dark"> Change regions </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/projects/change-project-timezone.html" destination="/projects/change-project-timezone.html" class="hover:text-skye-dark focus:text-skye-dark"> Change the project timezone </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/projects/delete-project.html" destination="/projects/delete-project.html" class="hover:text-skye-dark focus:text-skye-dark"> Delete a project </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/domains.html" destination="/domains.html" class="hover:text-skye-dark focus:text-skye-dark"> Custom domains </a> </h4> <button class="py-2" id="nav-expand-section-custom-domains-sidebar-id" aria-controls="section-custom-domains-sidebar-id" aria-expanded="false" aria-label="Custom domains"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-custom-domains-sidebar-id" id="section-custom-domains-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/domains/steps.html" destination="/domains/steps.html" class="hover:text-skye-dark focus:text-skye-dark"> Set up a custom domain </a> <button class="py-2" id="nav-expand-set-up-a-custom-domain-sidebar-id" aria-controls="set-up-a-custom-domain-sidebar-id" aria-expanded="false" aria-label="Set up a custom domain"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-set-up-a-custom-domain-sidebar-id" id="set-up-a-custom-domain-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/domains/steps/dns.html" class="hover:text-skye-dark focus:text-skye-dark"> DNS and apex domains </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/domains/steps/tls.html" class="hover:text-skye-dark focus:text-skye-dark"> Custom TLS certificates </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/domains/steps/subdomains.html" class="hover:text-skye-dark focus:text-skye-dark"> Handle subdomains </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/domains/steps/custom-domains-preview-environments.html" class="hover:text-skye-dark focus:text-skye-dark"> Preview environments </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/domains/cdn.html" destination="/domains/cdn.html" class="hover:text-skye-dark focus:text-skye-dark"> Content delivery networks </a> <button class="py-2" id="nav-expand-content-delivery-networks-sidebar-id" aria-controls="content-delivery-networks-sidebar-id" aria-expanded="false" aria-label="Content delivery networks"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-content-delivery-networks-sidebar-id" id="content-delivery-networks-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/domains/cdn/fastly.html" class="hover:text-skye-dark focus:text-skye-dark"> Fastly setup </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/domains/cdn/managed-fastly.html" class="hover:text-skye-dark focus:text-skye-dark"> Managed Fastly CDN </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/domains/cdn/cloudflare.html" class="hover:text-skye-dark focus:text-skye-dark"> Cloudflare setup </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/domains/troubleshoot.html" destination="/domains/troubleshoot.html" class="hover:text-skye-dark focus:text-skye-dark"> Troubleshooting </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/administration.html" destination="/administration.html" class="hover:text-skye-dark focus:text-skye-dark"> Administration </a> </h4> <button class="py-2" id="nav-expand-section-administration-sidebar-id" aria-controls="section-administration-sidebar-id" aria-expanded="false" aria-label="Administration"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-administration-sidebar-id" id="section-administration-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/administration/cli.html" destination="/administration/cli.html" class="hover:text-skye-dark focus:text-skye-dark"> Command line interface (CLI) </a> <button class="py-2" id="nav-expand-command-line-interface-cli-sidebar-id" aria-controls="command-line-interface-cli-sidebar-id" aria-expanded="false" aria-label="Command line interface (CLI)"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-command-line-interface-cli-sidebar-id" id="command-line-interface-cli-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/administration/cli/api-tokens.html" class="hover:text-skye-dark focus:text-skye-dark"> API tokens </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/administration/cli/reference.html" class="hover:text-skye-dark focus:text-skye-dark"> Command reference </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/administration/web.html" destination="/administration/web.html" class="hover:text-skye-dark focus:text-skye-dark"> Console </a> <button class="py-2" id="nav-expand-console-sidebar-id" aria-controls="console-sidebar-id" aria-expanded="false" aria-label="Console"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-console-sidebar-id" id="console-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/administration/web/configure-project.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure a project </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/administration/web/configure-environment.html" class="hover:text-skye-dark focus:text-skye-dark"> Configure environments </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/administration/organizations.html" destination="/administration/organizations.html" class="hover:text-skye-dark focus:text-skye-dark"> Organizations </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/administration/teams.html" destination="/administration/teams.html" class="hover:text-skye-dark focus:text-skye-dark"> Teams </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/administration/users.html" destination="/administration/users.html" class="hover:text-skye-dark focus:text-skye-dark"> Users </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/administration/pricing.html" destination="/administration/pricing.html" class="hover:text-skye-dark focus:text-skye-dark"> Pricing </a> <button class="py-2" id="nav-expand-pricing-sidebar-id" aria-controls="pricing-sidebar-id" aria-expanded="false" aria-label="Pricing"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-pricing-sidebar-id" id="pricing-sidebar-id"> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/administration/servers.html" destination="/administration/servers.html" class="hover:text-skye-dark focus:text-skye-dark"> Server upgrades </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/administration/security.html" destination="/administration/security.html" class="hover:text-skye-dark focus:text-skye-dark"> Security </a> <button class="py-2" id="nav-expand-security-sidebar-id" aria-controls="security-sidebar-id" aria-expanded="false" aria-label="Security"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-security-sidebar-id" id="security-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/administration/security/mfa.html" class="hover:text-skye-dark focus:text-skye-dark"> Multifactor Authentication (MFA) </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/administration/security/sso.html" class="hover:text-skye-dark focus:text-skye-dark"> Single Sign-On (SSO) </a> </li> </ul> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/security.html" destination="/security.html" class="hover:text-skye-dark focus:text-skye-dark"> Security and compliance </a> </h4> <button class="py-2" id="nav-expand-section-security-and-compliance-sidebar-id" aria-controls="section-security-and-compliance-sidebar-id" aria-expanded="false" aria-label="Security and compliance"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-security-and-compliance-sidebar-id" id="section-security-and-compliance-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/security/backups.html" destination="/security/backups.html" class="hover:text-skye-dark focus:text-skye-dark"> Backup and restore </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/security/data-retention.html" destination="/security/data-retention.html" class="hover:text-skye-dark focus:text-skye-dark"> Data retention </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/security/project-isolation.html" destination="/security/project-isolation.html" class="hover:text-skye-dark focus:text-skye-dark"> Project isolation </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/security/web-application-firewall.html" destination="/security/web-application-firewall.html" class="hover:text-skye-dark focus:text-skye-dark"> Web Application Firewall (WAF) </a> <button class="py-2" id="nav-expand-web-application-firewall-waf-sidebar-id" aria-controls="web-application-firewall-waf-sidebar-id" aria-expanded="false" aria-label="Web Application Firewall (WAF)"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-web-application-firewall-waf-sidebar-id" id="web-application-firewall-waf-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/security/web-application-firewall/waf.html" class="hover:text-skye-dark focus:text-skye-dark"> Platform.sh WAF </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/security/web-application-firewall/fastly-waf.html" class="hover:text-skye-dark focus:text-skye-dark"> Fastly Next-Gen WAF </a> </li> </ul> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/dedicated-environments.html" destination="/dedicated-environments.html" class="hover:text-skye-dark focus:text-skye-dark"> Dedicated environments </a> </h4> <button class="py-2" id="nav-expand-section-dedicated-environments-sidebar-id" aria-controls="section-dedicated-environments-sidebar-id" aria-expanded="false" aria-label="Dedicated environments"> <svg :class="topExpanded ? '' : '-rotate-90'" @click="topExpanded = ! topExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-dedicated-environments-sidebar-id" id="section-dedicated-environments-sidebar-id"> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/dedicated-environments/overview.html" destination="/dedicated-environments/overview.html" class="hover:text-skye-dark focus:text-skye-dark"> Overview </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/dedicated-environments/dedicated-gen-2.html" destination="/dedicated-environments/dedicated-gen-2.html" class="hover:text-skye-dark focus:text-skye-dark"> Dedicated Gen 2 </a> <button class="py-2" id="nav-expand-dedicated-gen-2-sidebar-id" aria-controls="dedicated-gen-2-sidebar-id" aria-expanded="false" aria-label="Dedicated Gen 2"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-dedicated-gen-2-sidebar-id" id="dedicated-gen-2-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/dedicated-environments/dedicated-gen-2/overview.html" class="hover:text-skye-dark focus:text-skye-dark"> DG2 overview </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/dedicated-environments/dedicated-gen-2/development.html" class="hover:text-skye-dark focus:text-skye-dark"> DG2 development </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/dedicated-environments/dedicated-gen-2/environment-differences.html" class="hover:text-skye-dark focus:text-skye-dark"> Environment differences </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between"> <a href="/dedicated-environments/dedicated-gen-3.html" destination="/dedicated-environments/dedicated-gen-3.html" class="hover:text-skye-dark focus:text-skye-dark"> Dedicated Gen 3 </a> <button class="py-2" id="nav-expand-dedicated-gen-3-sidebar-id" aria-controls="dedicated-gen-3-sidebar-id" aria-expanded="false" aria-label="Dedicated Gen 3"> <svg :class="secondExpanded ? '' : '-rotate-90'" @click="secondExpanded = ! secondExpanded" width="24" height="24" viewBox="0 0 24 24" fill="current" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M6.90002 9.8999C6.90002 9.5999 7.00002 9.3999 7.20002 9.1999C7.60002 8.7999 8.20002 8.7999 8.60002 9.1999L12.1 12.6999L15.6 9.1999C16 8.7999 16.6 8.7999 17 9.1999C17.4 9.5999 17.4 10.1999 17 10.5999L12.8 14.7999C12.4 15.1999 11.8 15.1999 11.4 14.7999L7.20002 10.5999C7.00002 10.3999 6.90002 10.1999 6.90002 9.8999Z"></path></svg> </button> </div> <ul x-show="secondExpanded" class="pl-4 py-2" aria-labelledby="nav-expand-dedicated-gen-3-sidebar-id" id="dedicated-gen-3-sidebar-id"> <li class="border-l border-stone py-1 pl-4"> <a href="/dedicated-environments/dedicated-gen-3/overview.html" class="hover:text-skye-dark focus:text-skye-dark"> DG3 overview </a> </li> <li class="border-l border-stone py-1 pl-4"> <a href="/dedicated-environments/dedicated-gen-3/development.html" class="hover:text-skye-dark focus:text-skye-dark"> DG3 development </a> </li> </ul> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/dedicated-environments/security-monitoring.html" destination="/dedicated-environments/security-monitoring.html" class="hover:text-skye-dark focus:text-skye-dark"> Security and monitoring </a> </div> </li> <li x-data="{ secondExpanded: false }"> <div class="flex items-center pl-4 justify-between py-2 pl-4 "> <a href="/dedicated-environments/backups-restores.html" destination="/dedicated-environments/backups-restores.html" class="hover:text-skye-dark focus:text-skye-dark"> Dedicated backups </a> </div> </li> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/glossary.html" destination="/glossary.html" class="hover:text-skye-dark focus:text-skye-dark"> Glossary </a> </h4> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-glossary-sidebar-id" id="section-glossary-sidebar-id"> </ul> </div> <div class="text-sm" x-data="{ topExpanded: false }"> <div class="pl-8 pr-2 flex items-center justify-between min-h-[2.5rem]"> <h4 class="pr-2 font-semibold"> <a href="/request-features.html" destination="/request-features.html" class="hover:text-skye-dark focus:text-skye-dark"> Request features </a> </h4> </div> <ul x-show="topExpanded" class="pl-12" aria-labelledby="nav-expand-section-request-features-sidebar-id" id="section-request-features-sidebar-id"> </ul> </div> </div> </div> <div x-data="{ expanded: false }"> <h3 class="font-semibold"> <button class="bg-no-repeat bg-right-2 w-[95%] py-4 pl-2 pr-6 my-2 text-left bg-grey" :style="expanded ? 'background-image: url(/images/icons/minus.svg);' : 'background-image: url(/images/icons/external_link.svg);'" @click="location.href = 'https://api.platform.sh/docs'" aria-expanded="false"> API Documentation </button> </h3> </div> </div> </nav> <main class="md:col-span-8 xl:max-w-[120ch] xl:text-lg px-4 md:pr-0 md:pl-8 pt-4 pb-12 print:border-none print:max-w-full xl:print:max-w-full print:text-sm xl:print:text-sm"> <div class="flex justify-end mr-4"> <div class="hidden md:block mb-6 mr-2 text-right"> <a href="https://github.com/platformsh/platformsh-docs/edit/main/sites/platform/src/guides/symfony/_index.md" rel="noopener" target="_blank" class="print:hidden font-semibold bg-gray-400 text-white hover:bg-ebony focus:bg-ebony pl-4 pr-3 py-2 font-['Space_Grotesk'] text-xs rounded-full inline-flex items-center gap-2"> Edit page<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="inline"> <path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z"/> <path d="m15 5 4 4"/> </svg> </a> </div> </div> <h1 class="font-black text-2xl mb-8 xl:text-4xl">Symfony</h1> <div class="grid md:grid-cols-[minmax(0,1fr),270px] md:gap-4 md:pr-4 print:block"> <div class="print:hidden max-w-[92vw] md:max-w-none md:order-2 md:top-24 md:sticky md:h-[calc(100vh-6rem)] md:overflow-y-auto border-t border-stone"> <div class="print:hidden hidden md:block"> <div class="p-4" x-data="FeedbackForm()"> <h3 class="pt-4 pb-2 font-light">Is this page helpful?</h3> <div class="text-sm"> <button x-show="!feedbackSubmitted" @click="handleClick" title="Yes" class="py-2 px-4 hover:bg-skye-light text-xl"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"/> </svg> </button> <button x-show="!feedbackSubmitted" @click="handleClick" title="No" class="py-2 px-4 hover:bg-skye-light text-xl"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"/> </svg> </button> <div x-show="feedbackSubmitted && feedback === 'positive'" class="feedback-message" > 鉂わ笍 Thanks for letting us know! </div> <div x-show="feedbackSubmitted && feedback === 'negative'" class="feedback-message" > 馃槥 Thanks for the feedback. <br /> <a :href="editPageUrl" class="text-skye-dark hover:underline focus:underline">Suggest a change</a> <br /> <a :href="issueUrl" class="text-skye-dark hover:underline focus:underline">Submit an issue</a> </div> <div x-show="feedbackSubmitted && feedback === 'error'" class="feedback-message" > 馃檨 Couldn't process your feedback. Thanks for trying! </div> </div> </div> <script> function FeedbackForm() { const currentUrl = location.protocol + "//" + location.host + location.pathname; const repoURL = "https://github.com/platformsh/platformsh-docs/blob/main/sites/platform/src/guides/symfony/_index.md" return { feedbackSubmitted: false, feedback: "", editPageUrl: repoURL, issueUrl: "https://github.com/platformsh/platformsh-docs/issues/new?template=improvements.yml&where_on_docs_platform_sh_should_be_changed=" + currentUrl + "&title=%F0%9F%90%9B%20Issue%20on%20the%20page%20" + document.title.replace(" 路 %!s(\u003cnil\u003e) Documentation", ""), handleClick(event) { const button = event.target.closest('button'); const title = button ? button.getAttribute("title") : null; if (title === "Yes") this.feedback = "positive"; else if (title === "No") this.feedback = "negative"; fetch("/feedback/submit", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ url: currentUrl, feedback: this.feedback, }), }) .then((res) => { this.feedbackSubmitted = true; }) .catch((err) => { this.feedbackSubmitted = true; this.feedback = "error"; }); }, }; } </script> </div> <div class="bg-gradient-to-b from-[#FF4A11] from-0% via-[#ED49F0] via-45% to-[#DDF933] to-100% rounded-2xl p-[1px] mt-1 mb-4"> <div class="rounded-2xl p-5 bg-[#f9f9f9] flex-col justify-start items-start gap-4 inline-flex"> <div class="bg-clip-text text-transparent bg-gradient-to-r from-[#806BFF] to-[#ED49F0] text-xl font-bold leading-normal"> Try for 30 days </div> <div class="main-section justify-start items-start gap-2.5 inline-flex"> <div class="cta-text main-copy flex-col justify-start items-start gap-2 inline-flex"> <div class="cta-body"> Flexible, version-controlled infrastructure provisioning and development-to-production workflows </div> </div> </div> <a href="https://auth.api.platform.sh/register/" class="px-6 py-2 bg-[#6046FF] hover:!bg-[#4D38CC] rounded-3xl text-white text-center text-sm font-semibold"> Activate your trial </a> <div class="cta-terms"> </div> </div> </div> </div> <div class="prose xl:prose-lg max-w-[96vw] md:max-w-full w-full prose-code:!mb-0 prose-h2:text-xl prose-h3:text-xl prose-h4:text-lg"> <!-- shortcode start description --> <p>Everything you need to get started with <a href="https://www.symfony.com/" target="_blank" rel="noopener">Symfony</a>, a <a href="/development/templates.html#php">PHP</a> framework for web development, on Platform.sh.</p> <!-- shortcode end description --> <!-- shortcode start guides/link-philosophy --> <p>If you’re new to Platform.sh, you might want to check out the <a href="/learn/overview/philosophy.html">philosophy of Platform.sh</a> to get started on the best possible footing.</p> <!-- shortcode end guides/link-philosophy --> <div class="space-y-4 not-prose"> <a href="/guides/symfony/get-started.html" class="block p-[2px] bg-stone hover:bg-skye-dark rounded-xl transition-all"> <div class="p-8 bg-white rounded-xl h-full hover:shadow-lg"> <h3 class="text-xl font-medium mb-2 text-gray-900"> Get started </h3> <p class="text-gray-600 m-0">See how to get started deploying Symfony on Platform.sh.</p> </div> </a> <a href="/guides/symfony/integration.html" class="block p-[2px] bg-stone hover:bg-skye-dark rounded-xl transition-all"> <div class="p-8 bg-white rounded-xl h-full hover:shadow-lg"> <h3 class="text-xl font-medium mb-2 text-gray-900"> Symfony integration </h3> <p class="text-gray-600 m-0">Learn how to use the Symfony integration for a better Platform.sh experience.</p> </div> </a> <a href="/guides/symfony/environment-variables.html" class="block p-[2px] bg-stone hover:bg-skye-dark rounded-xl transition-all"> <div class="p-8 bg-white rounded-xl h-full hover:shadow-lg"> <h3 class="text-xl font-medium mb-2 text-gray-900"> Environment variables </h3> <p class="text-gray-600 m-0">Learn about the environment variables added by the Symfony integration.</p> </div> </a> <a href="/guides/symfony/workers.html" class="block p-[2px] bg-stone hover:bg-skye-dark rounded-xl transition-all"> <div class="p-8 bg-white rounded-xl h-full hover:shadow-lg"> <h3 class="text-xl font-medium mb-2 text-gray-900"> Workers </h3> <p class="text-gray-600 m-0">Understand how to configure Symfony workers.</p> </div> </a> <a href="/guides/symfony/crons.html" class="block p-[2px] bg-stone hover:bg-skye-dark rounded-xl transition-all"> <div class="p-8 bg-white rounded-xl h-full hover:shadow-lg"> <h3 class="text-xl font-medium mb-2 text-gray-900"> Cron Jobs </h3> <p class="text-gray-600 m-0">Understand how to configure Symfony cron jobs.</p> </div> </a> <a href="/guides/symfony/blackfire.html" class="block p-[2px] bg-stone hover:bg-skye-dark rounded-xl transition-all"> <div class="p-8 bg-white rounded-xl h-full hover:shadow-lg"> <h3 class="text-xl font-medium mb-2 text-gray-900"> Blackfire </h3> <p class="text-gray-600 m-0">Set up a continuous observability strategy for your Symfony app with Blackfire.</p> </div> </a> <a href="/guides/symfony/local.html" class="block p-[2px] bg-stone hover:bg-skye-dark rounded-xl transition-all"> <div class="p-8 bg-white rounded-xl h-full hover:shadow-lg"> <h3 class="text-xl font-medium mb-2 text-gray-900"> Local development </h3> <p class="text-gray-600 m-0">Sync Platform.sh with your local environments to start contributing.</p> </div> </a> <a href="/guides/symfony/faq.html" class="block p-[2px] bg-stone hover:bg-skye-dark rounded-xl transition-all"> <div class="p-8 bg-white rounded-xl h-full hover:shadow-lg"> <h3 class="text-xl font-medium mb-2 text-gray-900"> FAQ </h3> <p class="text-gray-600 m-0">Troubleshoot issue you might encounter using <a href="https://www.symfony.com/" target="_blank" rel="noopener">Symfony</a>, a <a href="/development/templates.html#php">PHP</a> framework on Platform.sh.</p> </div> </a> </div> </div> </div> <div class="print:hidden block md:hidden"> <div class="p-4" x-data="FeedbackForm()"> <h3 class="pt-4 pb-2 font-light">Is this page helpful?</h3> <div class="text-sm"> <button x-show="!feedbackSubmitted" @click="handleClick" title="Yes" class="py-2 px-4 hover:bg-skye-light text-xl"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"/> </svg> </button> <button x-show="!feedbackSubmitted" @click="handleClick" title="No" class="py-2 px-4 hover:bg-skye-light text-xl"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"/> </svg> </button> <div x-show="feedbackSubmitted && feedback === 'positive'" class="feedback-message" > 鉂わ笍 Thanks for letting us know! </div> <div x-show="feedbackSubmitted && feedback === 'negative'" class="feedback-message" > 馃槥 Thanks for the feedback. <br /> <a :href="editPageUrl" class="text-skye-dark hover:underline focus:underline">Suggest a change</a> <br /> <a :href="issueUrl" class="text-skye-dark hover:underline focus:underline">Submit an issue</a> </div> <div x-show="feedbackSubmitted && feedback === 'error'" class="feedback-message" > 馃檨 Couldn't process your feedback. Thanks for trying! </div> </div> </div> <script> function FeedbackForm() { const currentUrl = location.protocol + "//" + location.host + location.pathname; const repoURL = "https://github.com/platformsh/platformsh-docs/blob/main/sites/platform/src/guides/symfony/_index.md" return { feedbackSubmitted: false, feedback: "", editPageUrl: repoURL, issueUrl: "https://github.com/platformsh/platformsh-docs/issues/new?template=improvements.yml&where_on_docs_platform_sh_should_be_changed=" + currentUrl + "&title=%F0%9F%90%9B%20Issue%20on%20the%20page%20" + document.title.replace(" 路 %!s(\u003cnil\u003e) Documentation", ""), handleClick(event) { const button = event.target.closest('button'); const title = button ? button.getAttribute("title") : null; if (title === "Yes") this.feedback = "positive"; else if (title === "No") this.feedback = "negative"; fetch("/feedback/submit", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ url: currentUrl, feedback: this.feedback, }), }) .then((res) => { this.feedbackSubmitted = true; }) .catch((err) => { this.feedbackSubmitted = true; this.feedback = "error"; }); }, }; } </script> </div> </main> </div> <script src="/scripts/xss/dist/bundle.js?version=1.1.0"></script> </body> </html>