1<!DOCTYPE html> 2<html lang="en" dir="ltr" prefix="og: https://ogp.me/ns#" class="scroll-smooth"> 3 <head> 4
4<script type="text/plain" nonce="8UBK3HsGxXcQDrZc2FlvwA" class="optanon-category-C0004" src="https://cdn.optimizely.com/js/5486583420289024.js"></script>
4 5 <!-- Standard Favicon --> 6 <link rel="icon" type="image/png" sizes="16x16" href="/themes/custom/p4base/assets/favicons/znd/favicon-16x16.png"> 7 <link rel="icon" type="image/png" sizes="32x32" href="/themes/custom/p4base/assets/favicons/znd/favicon-32x32.png"> 8 <link rel="shortcut icon" href="/themes/custom/p4base/assets/favicons/znd/favicon.ico"> 9 <link rel="icon" type="image/x-icon" href="/themes/custom/p4base/assets/favicons/znd/favicon.ico"> 10 <!-- Apple Touch Icon (iOS) --> 11 <link rel="apple-touch-icon" sizes="180x180" href="/themes/custom/p4base/assets/favicons/znd/apple-touch-icon.png"> 12 <!-- Android Chrome Icons --> 13 <link rel="icon" type="image/png" sizes="192x192" href="/themes/custom/p4base/assets/favicons/znd/android-chrome-192x192.png"> 14 <link rel="icon" type="image/png" sizes="512x512" href="/themes/custom/p4base/assets/favicons/znd/android-chrome-512x512.png"> 15 <!-- Web App Manifest --> 16 <link rel="manifest" href="/themes/custom/p4base/assets/favicons/znd/site.webmanifest"> 17 18 <meta name="msapplication-TileColor" content="#ffffff"> 19 <meta name="theme-color" content="#4C00FF"> 20 21 <meta charset="utf-8" /> 22<meta name="description" content="Get-long term support, stay compliant, and access 24/7 expert help with secure and supported Zend PHP runtimes. Learn more and unlock ZendPHP free trial details." /> 23<link rel="canonical" href="https://www.zend.com/products/zendphp-enterprise" /> 24<meta property="og:url" content="https://www.zend.com/products/zendphp-enterprise" /> 25<meta property="og:title" content="Product - ZendPHP | Zend" /> 26<meta property="og:description" content="Get-long term support, stay compliant, and access 24/7 expert help with secure and supported Zend PHP runtimes. Learn more and see ZendPHP free trial details." /> 27<meta property="og:image" content="https://www.zend.com/sites/default/files/image-social-share-default.jpg" /> 28<meta property="og:image:url" content="https://www.zend.com/sites/default/files/image-social-share-default.jpg" /> 29<meta property="og:image:width" content="1200" /> 30<meta property="og:image:height" content="630" /> 31<meta name="twitter:card" content="summary_large_image" /> 32<meta name="twitter:site" content="@perforce" /> 33<meta name="twitter:description" content="Get-long term support, stay compliant, and access 24/7 expert help with secure and supported Zend PHP runtimes. Learn more and see ZendPHP free trial details." /> 34<meta name="twitter:title" content="Product - ZendPHP | Zend" /> 35<meta name="twitter:creator" content="@perforce" /> 36<meta name="MobileOptimized" content="width" /> 37<meta name="HandheldFriendly" content="true" /> 38<meta name="viewport" content="width=device-width, initial-scale=1.0" />
39<script type="application/ld+json">{ 40 "@context": "https://schema.org", 41 "@graph": [ 42 { 43 "@type": "SoftwareApplication", 44 "name": "ZendPHP Enterprise", 45 "description": "ZendPHP Enterprise provides secure, long-term supported PHP runtimes with advanced observability and automation tools for mission-critical applications.", 46 "applicationSuite": "Perforce Zend", 47 "applicationCategory": "DeveloperApplication", 48 "operatingSystem": "Linux, Windows, IBM i", 49 "featureList": "Fully patched PHP runtimes (including EOL versions 7.2â8.0), 24/7/365 global support from PHP experts, Hardened PHP container images, Plug-and-play PHP monitoring and observability, Real-time root cause analysis, Customizable alerts, Code tracing for performance bottlenecks, Z-Ray for application-level insights, JobQueue for deferred and scheduled job execution, Disaster recovery with MariaDB and PostgreSQL support, Support for multiple operating systems (e.g., Ubuntu, Debian, CentOS, Alpine, Windows, IBM i), Provisioning tools for Vhosts, SSL, and PHP version management, Terraform templates for orchestration, Support for Apache and Nginx web servers, Availability on cloud platforms like AWS, Azure, and Google Cloud", 50 "softwareVersion": "8.3", 51 "downloadUrl": "https://www.zend.com/products/zendphp-enterprise" 52 } 53 ] 54}</script>
vendor: 1 bytes, line 54
54
55<script id="gtmScript" nonce="8UBK3HsGxXcQDrZc2FlvwA" data-gtm-nonce="8UBK3HsGxXcQDrZc2FlvwA">(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=GTM-PG5L5N'+dl;var n=d.querySelector('[nonce]');n&&j.setAttribute('nonce',n.nonce||n.getAttribute('nonce'));f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-PG5L5N');</script>
55 56<link rel="alternate" hreflang="en" href="https://www.zend.com/products/zendphp-enterprise" /> 57<link rel="stylesheet" href="/styles/node/454/36569/backgrounds.css" /> 58<link rel="icon" href="/sites/default/files/favicon.ico" type="image/vnd.microsoft.icon" />
59<script nonce="8UBK3HsGxXcQDrZc2FlvwA">window.a2a_config=window.a2a_config||{};a2a_config.callbacks=[];a2a_config.overlays=[];a2a_config.templates={};a2a_config.icon_color = "#4C00FF";</script>
59 60 61 <title>ZendPHP Enterprise | Secure & Supported PHP Runtimes | Zend</title> 62 <link rel="stylesheet" media="all" href="/sites/default/files/css/css_h6KLesmhxi8S2KjdO7YrRGEozu4grDOXIJaASSqpyDs.css?delta=0&language=en&theme=p4base&include=eJxFjlEOwyAMQy_E4Gf3QWGkNBqFKEnV9vZjVbv9RM-ObBlytg7tCHCBn6Q3c0ABKJbaE1SX0Awl4s5dMceJ6pAaCjaU8cbdKrV3yLIyVH9Jx88EiuF7bi4gNjKPjXJBu10W0sUxCBQBnvUu-jt-bbymSjpjdjx367oRj-QP_Ss3p2Q4qjFCRbFAjczpoYbLueIDUY1buA" /> 63<link rel="stylesheet" media="all" href="//cdnjs.cloudflare.com/ajax/libs/photoswipe/5.4.4/photoswipe.min.css" /> 64<link rel="stylesheet" media="all" href="/sites/default/files/css/css_CpxlAAAuc4nPf0TVbTXz0qBwBQISh-vjyD002hcYIDI.css?delta=2&language=en&theme=p4base&include=eJxFjlEOwyAMQy_E4Gf3QWGkNBqFKEnV9vZjVbv9RM-ObBlytg7tCHCBn6Q3c0ABKJbaE1SX0Awl4s5dMceJ6pAaCjaU8cbdKrV3yLIyVH9Jx88EiuF7bi4gNjKPjXJBu10W0sUxCBQBnvUu-jt-bbymSjpjdjx367oRj-QP_Ss3p2Q4qjFCRbFAjczpoYbLueIDUY1buA" /> 65<link rel="stylesheet" media="all" href="/sites/default/files/css/css_onx2Nxy4C7dc5yvB0rpbnXouqHmDsWPwbUQuJ8fLBCY.css?delta=3&language=en&theme=p4base&include=eJxFjlEOwyAMQy_E4Gf3QWGkNBqFKEnV9vZjVbv9RM-ObBlytg7tCHCBn6Q3c0ABKJbaE1SX0Awl4s5dMceJ6pAaCjaU8cbdKrV3yLIyVH9Jx88EiuF7bi4gNjKPjXJBu10W0sUxCBQBnvUu-jt-bbymSjpjdjx367oRj-QP_Ss3p2Q4qjFCRbFAjczpoYbLueIDUY1buA" /> 66 67 68
68<script type="text/plain" nonce="8UBK3HsGxXcQDrZc2FlvwA" class="optanon-category-C0004"> 69 var zaius = window['zaius']||(window['zaius']=[]);zaius.methods=["initialize","onload","customer","entity","event","subscribe","unsubscribe","consent","identify","anonymize","dispatch"];zaius.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);zaius.push(t);return zaius}};(function(){for(var i=0;i<zaius.methods.length;i++){var method=zaius.methods[i];zaius[method]=zaius.factory(method)}var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src=("https:"===document.location.protocol?"https://":"http://")+"d1igp3oop3iho5.cloudfront.net/v2/fhfbx5i1OfDpypNu3t8vpQ/zaius-min.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})(); 70 // Edits to this script should only be made below this line. 71 function sixsense_vuid_hash_id() {zaius.event('pageview', 72 {"sixsense_vuid_hash_id": window.zaius.VUID} 73 );} 74 if (window.zaius.VUID) {sixsense_vuid_hash_id();}else {window.zaius.onload(sixsense_vuid_hash_id);} 75 </script>
75 76 </head> 77 <body class="site-zend"> 78 <!-- Google Tag Manager (noscript) --> 79 <noscript> 80 <iframe class="hidden invisible" src="//www.googletagmanager.com/ns.html?id=GTM-PG5L5N" height="0" width="0"></iframe> 81 </noscript> 82 <!-- End Google Tag Manager (noscript) --> 83 <a href="#main-content" class="visually-hidden focusable"> 84 Skip to main content 85 </a> 86 <div data-sitewide-alert aria-live="polite"></div> 87 88 <div class="dialog-off-canvas-main-canvas" data-off-canvas-main-canvas> 89 90 91 92 93<div class="layout-container"> 94 <header > 95 <div id="top-nav-bar"> 96 <div class="region--header-top"> 97 <div class="max-w-container mx-auto relative block"> 98 <div id="block-p4base-perforcesite" class="block"> 99 100 101 102 103 <div class="text-long"><div><div class="photoswipe-gallery"><div><a href="https://www.perforce.com" title="Perforce Software" aria-label="Perforce Software (opens in a new window)"><svg style="margin-top:-10px;" id="logo-perforce-icon-reg" width="30" height="30" viewBox="0 0 176.53 144.22"><g><path d="M122.2,50.37l-16.76,9.68,4.24,2.45c5.01,2.89,5.55,7.69,5.55,9.62s-.54,6.73-5.55,9.62l-75.84,43.79c-5.01,2.89-9.44.96-11.11,0-1.67-.96-5.55-3.83-5.55-9.62V28.32c0-5.79,3.88-8.66,5.55-9.62,1.67-.96,6.09-2.89,11.11,0l20.09,11.6,17.17-9.91L42.42,3.83C33.56-1.28,22.99-1.28,14.14,3.83,5.29,8.95,0,18.1,0,28.32v87.58c0,10.22,5.29,19.38,14.14,24.49,4.43,2.56,9.28,3.83,14.14,3.83s9.71-1.28,14.14-3.83l75.84-43.79c8.85-5.11,14.14-14.27,14.14-24.49,0-8.6-3.75-16.43-10.2-21.74Z" fill="#4c00ff" /><path d="M54.33,93.86l16.76-9.68-4.24-2.45c-5.01-2.89-5.55-7.69-5.55-9.62s.54-6.73,5.55-9.62l75.84-43.79c5.01-2.89,9.44-.96,11.11,0,1.67.96,5.55,3.83,5.55,9.62v87.58c0,5.79-3.88,8.66-5.55,9.62-1.67.96-6.09,2.89-11.11,0l-20.09-11.6-17.17,9.91,28.68,16.56c8.85,5.11,19.43,5.11,28.28,0,8.85-5.11,14.14-14.27,14.14-24.49V28.32c0-10.22-5.29-19.38-14.14-24.49-4.43-2.56-9.28-3.83-14.14-3.83s-9.71,1.28-14.14,3.83L58.27,47.62c-8.85,5.11-14.14,14.27-14.14,24.49,0,8.6,3.75,16.43,10.2,21.74Z" fill="#4c00ff" /></g></svg></a></div></div></div></div> 104 105 </div> 106 107 </div> 108 </div> 109 110 111 <div id="branding-mm"> 112 113 <div class="flex items-center justify-between px-8 py-4 fixed z-50 bg-white w-full h-24"> 114 <div id="block-p4base-sitebranding" class="block my-auto mr-8"> 115 116 117 <div class="branding-flex flex items-center gap-6"> 118 <a 119 href="https://www.perforce.com" 120 class="perforce-logo" 121 aria-label="Perforce" 122 > 123 </a> 124 <a href="/" rel="home" target="_blank"> 125 <img src="/sites/default/files/logo-zend-reg.svg" alt="Zend" fetchpriority="high" class="lg:max-w-[18.75rem] max-w-[12rem] max-h-[40px] w-48" /> 126 </a> 127 128 </div> 129</div> 130<nav role="navigation" aria-labelledby="block-p4base-mainmenusystem-menu" id="block-p4base-mainmenusystem" data-region="header" class="order-2 xl:order-1 xl:border-none md:border-l border-solid border-gray-300"> 131 132 <h2 class="visually-hidden" id="block-p4base-mainmenusystem-menu">Main Menu System</h2> 133 134 135 136<nav 137 class="relative w-full" 138 aria-label="Main navigation" 139 x-data="{ 140 mobileOpen: false, 141 activeItem: null, 142 closeTimer: null, 143 toggleItem(index) { 144 this.activeItem = this.activeItem === index ? null : index; 145 } 146 }" 147> 148 149 <div class="xl:hidden flex items-center justify-end"> 150 <button 151 class="flex items-center gap-2 px-3 py-2 heading-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2" 152 @click="mobileOpen = true" 153 :aria-expanded="mobileOpen ? 'true' : 'false'" 154 aria-controls="main-nav-menu" 155 aria-label="Open navigation menu" 156 > 157 <span class="text-[2.25rem] leading-none">â°</span> 158 <span class="sr-only">Open menu</span> 159 </button> 160 </div> 161 162 <div 163 x-show="mobileOpen" 164 x-transition:enter="transition ease-out duration-300" 165 x-transition:enter-start="opacity-0 translate-x-full" 166 x-transition:enter-end="opacity-100 translate-x-0" 167 x-transition:leave="transition ease-in duration-200" 168 x-transition:leave-start="opacity-100 translate-x-0" 169 x-transition:leave-end="opacity-0 translate-x-full" 170 class="fixed inset-0 bg-white z-50 flex flex-col h-screen overflow-y-auto xl:hidden" 171 x-cloak
172 @keydown.escape.window="mobileOpen = false" 173 role="dialog" 174 aria-modal="true" 175 aria-label="Mobile navigation" 176 > 177 178 <div class="flex items-center justify-between px-4 py-3 border-b border-gray-100 flex-shrink-0"> 179 180 <div class="flex-shrink-0"> 181 <div class="block my-auto mr-8"> 182 183 184 <div class="branding-flex flex items-center gap-6"> 185 <a 186 href="https://www.perforce.com" 187 class="perforce-logo" 188 aria-label="Perforce" 189 > 190 </a> 191 <a href="/" rel="home" target="_blank"> 192 <img src="/sites/default/files/logo-zend-reg.svg" alt="Zend" fetchpriority="high" class="lg:max-w-[18.75rem] max-w-[12rem] max-h-[40px] w-48" /> 193 </a> 194 <a href="/" rel="home" class="hidden">Zend</a> 195 196 </div> 197</div> 198 199 </div> 200 201 <button 202 class="flex items-center gap-2 px-3 py-2 heading-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 mr-8" 203 @click="mobileOpen = false" 204 aria-label="Close navigation menu" 205 > 206 <span class="text-base leading-none">â</span> 207 <span class="sr-only">Close menu</span> 208 </button> 209 210 </div> 211 <div class="mobile-search md:hidden"> 212 <div data-drupal-selector="views-exposed-form-sitewide-search-page-search" class="block views-exposed-form bef-exposed-form"> 213 214 <h2 class="h2">Sitewide Search</h2> 215 216 <form action="/search" method="get" id="views-exposed-form-sitewide-search-page-search" accept-charset="UTF-8"> 217 218 <div class="relative mx-auto"> 219 <input 220 type="text" 221 name="keys" 222 value="" 223 placeholder="Search..." 224 class="w-[800px] placeholder:text-p4-primary text-base text-p4-dark py-4 px-4 pr-12 border rounded-md focus:outline-none focus:ring-0 focus:border-transparent" 225 /> 226 227 <button 228 type="submit" 229 name="" 230 value="Apply" 231 class="absolute top-1/2 right-8 transform -translate-y-1/2" 232 aria-label="Search" 233 > 234 <svg class="w-6 h-6 text-p4-primary" id="icon_search" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> 235 <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" 236 d="M17.4 9.2c0 4.5-3.7 8.2-8.2 8.2S1 13.8 1 9.2 4.7 1 9.2 1s8.2 3.7 8.2 8.2ZM15 15l8 8"/> 237 </svg> 238 239 </button> 240 </div> 241 242 243 244 245</form> 246 </div> 247 248 </div> 249 <ul class="menu menu-level-0 flex flex-col w-full flex-1 overflow-y-auto !pl-2"> 250 251 252 253 <li 254 class="menu-item list-none border-gray-100" 255 > 256 257 258 <div class="flex items-center justify-between"> 259 260 261 <button 262 type="button" 263 class="px-1 py-1 inline-flex items-center gap-2 flex-1 heading-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 menu-item--has-panel" aria-haspopup="true" :aria-expanded="(activeItem === 0) ? "true" : "false"" 264 @click="activeItem = activeItem === 0 ? null : 0" 265 > 266 Products 267 </button> 268 269 <button 270 class="px-4 py-4 mr-12 lg:mr-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2" 271 @click="activeItem = activeItem === 0 ? null : 0" 272 :aria-expanded="activeItem === 0 ? 'true' : 'false'" 273 aria-label="Toggle Products submenu" 274 > 275 <svg 276 class="w-4 h-4 transition-transform duration-200" 277 :class="activeItem === 0 ? 'rotate-180' : ''" 278 xmlns="http://www.w3.org/2000/svg" 279 fill="none" viewBox="0 0 24 24" 280 stroke="currentColor" stroke-width="2" 281 > 282 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" /> 283 </svg> 284 </button> 285 286 </div> 287 288 289 <div 290 x-show="activeItem === 0" 291 x-transition:enter="transition ease-out duration-200" 292 x-transition:enter-start="opacity-0 -translate-y-2" 293 x-transition:enter-end="opacity-100 translate-y-0" 294 x-transition:leave="transition ease-in duration-150" 295 x-transition:leave-start="opacity-100 translate-y-0" 296 x-transition:leave-end="opacity-0 -translate-y-2" 297 class="flex flex-col" 298 x-cloak 299 > 300 <div class=" flex-1"> 301 <div class=" 302 lg:p-4 303 [&_.layout]:!block 304 [&_.layout__region]:!block 305 [&_.layout__region]:!w-full 306 "> 307 308 309 <div class="menu_link_content menu-link-contentmain-menu-system view-mode-
309default menu-dropdown menu-dropdown-0 menu-type-default"> 310 311 312 313 314 315 <div class="field field--name-field-menu-panel field--type-entity-reference-revisions field--label-hidden"> 316 <div> 317 318<div id="p-4196" class="paragraph paragraph--type--menu-panel paragraph--view-mode--default"> 319 320<div class="layout--two-column-50-50-menu w-full max-w-2xl mx-auto"> 321 <div class="grid grid-cols-1 lg:grid-cols-2 gap-4"> 322 <div class="layout__region--col1 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 323 324 325 326<div id="p-4201" class="menu-link-list p-4 has-no-title"> 327 <span class="hidden lg:inline"></span> 328 <div class="menu-links-wrapper"> 329 330 331 332 333 334 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 335 <div> 336 337<div id="p-4197" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 338 339 340 341 342 343 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/index%2Ephp/products/zendphp-enterprise">ZendPHP</a></div> 344 345</div></div> 346 <div> 347 348<div id="p-4198" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 349 350 351 352 353 354 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/index%2Ephp/products/zendhq">ZendHQ</a></div> 355 356</div></div> 357 <div> 358 359<div id="p-4199" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 360 361 362 363 364 365 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/index%2Ephp/products/enterprise-web-platform">Zend Web Platform</a></div> 366 367</div></div> 368 <div> 369 370<div id="p-4200" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 371 372 373 374 375 376 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/index%2Ephp/services/php-long-term-support">Long-Term Support</a></div> 377 378</div></div> 379 </div> 380 381 </div> 382</div> 383 384 </div> 385 <div class="layout__region--col2 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 386 387 388<div id="p-4202" class="paragraph paragraph--type--menu-featured-content paragraph--view-mode--default menu-featured-content p-4 hidden lg:block"> 389 <span class="font-bold my-4 leading-normal">ZendPHP</span> 390 391 <div class="rounded-3xl overflow-hidden mx-auto !my-4"> 392 393 394 395 396 397 <div class="field field--name-field-image field--type-entity-reference field--label-hidden"><div> 398 399 400 401 402 403 404 <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> 405 <div class="visually-hidden">Image</div> 406 <img loading="lazy" src="/sites/default/files/2025-05/image-hero-background-light-large-opt2.svg" title="image-hero-background-light-large-opt2.svg" /> 407 408 409 </div> 410 411</div> 412</div> 413 414 </div> 415 <span class="menu-link-list"> 416 417 418 <div class="text-long"><p>PHP Runtime and Support</p> 419</div> 420 421 </span> 422 423 <div class="menu-link-item mt-8"> 424 425 426 427 428 429 <div class="field field--name-field-link field--type-link field--label-hidden"><a href="/index%2Ephp/products/zendphp-enterprise/trial">Try Free ></a></div> 430 431 </div> 432</div> 433 434 </div> 435 </div> 436</div> 437 438</div> 439</div> 440 </div> 441 442 </div> 443 444 445 446 </div> 447 </div> 448 449 450 </div> 451 452 </li> 453 454 455 456 <li 457 class="menu-item list-none border-gray-100" 458 > 459 460 461 <div class="flex items-center justify-between"> 462 463 464 <button 465 type="button" 466 class="px-1 py-1 inline-flex items-center gap-2 flex-1 heading-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 menu-item--has-panel" aria-haspopup="true" :aria-expanded="(activeItem === 1) ? "true" : "false"" 467 @click="activeItem = activeItem === 1 ? null : 1" 468 > 469 Services 470 </button> 471 472 <button 473 class="px-4 py-4 mr-12 lg:mr-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2" 474 @click="activeItem = activeItem === 1 ? null : 1" 475 :aria-expanded="activeItem === 1 ? 'true' : 'false'" 476 aria-label="Toggle Services submenu" 477 > 478 <svg 479 class="w-4 h-4 transition-transform duration-200" 480 :class="activeItem === 1 ? 'rotate-180' : ''" 481 xmlns="http://www.w3.org/2000/svg" 482 fill="none" viewBox="0 0 24 24" 483 stroke="currentColor" stroke-width="2" 484 > 485 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" /> 486 </svg> 487 </button> 488 489 </div> 490 491 492 <div 493 x-show="activeItem === 1" 494 x-transition:enter="transition ease-out duration-200" 495 x-transition:enter-start="opacity-0 -translate-y-2" 496 x-transition:enter-end="opacity-100 translate-y-0" 497 x-transition:leave="transition ease-in duration-150" 498 x-transition:leave-start="opacity-100 translate-y-0" 499 x-transition:leave-end="opacity-0 -translate-y-2" 500 class="flex flex-col" 501 x-cloak 502 > 503 <div class=" flex-1"> 504 <div class=" 505 lg:p-4 506 [&_.layout]:!block 507 [&_.layout__region]:!block 508 [&_.layout__region]:!w-full 509 "> 510 511 512 <div class="menu_link_content menu-link-contentmain-menu-system view-mode-
512default menu-dropdown menu-dropdown-0 menu-type-default"> 513 514 515 516 517 518 <div class="field field--name-field-menu-panel field--type-entity-reference-revisions field--label-hidden"> 519 <div> 520 521<div id="p-4203" class="paragraph paragraph--type--menu-panel paragraph--view-mode--default"> 522 523<div class="layout--three-column-33-33-33-menu w-full lg:w-[calc(100vw-4rem)] max-w-screen-lg mx-auto"> 524 <div class="grid grid-cols-1 lg:grid-cols-[1fr_1fr_1fr] gap-4"> 525 <div class="layout__region--col1 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 526 527 528 529<div id="p-4210" class="menu-link-list p-4 has-title"> 530 <span class="font-bold w-full leading-normal">All Services</span> 531 <span class="hidden lg:inline"></span> 532 <div class="menu-links-wrapper"> 533 534 535 536 537 538 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 539 <div> 540 541<div id="p-4204" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 542 543 544 545 546 547 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/php-long-term-support">Long-Term Support</a></div> 548 549</div></div> 550 <div> 551 552<div id="p-4205" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 553 554 555 556 557 558 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/migration">Upgrades & Modernization</a></div> 559 560</div></div> 561 <div> 562 563<div id="p-4206" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 564 565 566 567 568 569 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/custom-consulting">Consulting</a></div> 570 571</div></div> 572 <div> 573 574<div id="p-4207" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 575 576 577 578 579 580 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/performance-auditing">Auditing</a></div> 581 582</div></div> 583 <div> 584 585<div id="p-4208" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 586 587 588 589 590 591 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/black-belt-php-support-services">Black Belt Services</a></div> 592 593</div></div> 594 <div> 595 596<div id="p-4209" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 597 598 599 600 601 602 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/continuous-delivery">CI/CD & Test Automation</a></div> 603 604</div></div> 605 </div> 606 607 </div> 608</div> 609 610 </div> 611 <div class="layout__region--col2 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 612 613 614 615<div id="p-4364" class="menu-link-list p-4 has-title"> 616 <span class="font-bold w-full leading-normal">Migration Services</span> 617 <span class="hidden lg:inline"></span> 618 <div class="menu-links-wrapper"> 619 620 621 622 623 624 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 625 <div> 626 627<div id="p-4359" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 628 629 630 631 632 633 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/migration/laravel-migration">Laravel Migrations</a></div> 634 635</div></div> 636 <div> 637 638<div id="p-4360" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 639 640 641 642 643 644 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/migration/symfony-migration">Symfony Migrations</a></div> 645 646</div></div> 647 <div> 648 649<div id="p-4361" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 650 651 652 653 654 655 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/migration/codeigniter-migration">CodeIgniter Migrations</a></div> 656 657</div></div> 658 <div> 659 660<div id="p-4362" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 661 662 663 664 665 666 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/migration/cakephp-migration">CakePHP Migrations</a></div> 667 668</div></div> 669 <div> 670 671<div id="p-4363" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 672 673 674 675 676 677 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/migration/php-mysql-migration">PHP MySQL Migrations</a></div> 678 679</div></div> 680 <div> 681 682<div id="p-4366" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 683 684 685 686 687 688 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/migration">All Migration Services</a></div> 689 690</div></div> 691 </div> 692 693 </div> 694</div> 695 696 </div> 697 <div class="layout__region--col3 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 698 699 700<div id="p-4365" class="paragraph paragraph--type--menu-featured-content paragraph--view-mode--default menu-featured-content p-4 hidden lg:block">
701 <span class="font-bold my-4 leading-normal">Complimentary Code Assessments for PHP Migrations</span> 702 703 <div class="rounded-3xl overflow-hidden mx-auto !my-4"> 704 705 706 707 708 709 <div class="field field--name-field-image field--type-entity-reference field--label-hidden"><div> 710 711 712 713 714 715 716 <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> 717 <div class="visually-hidden">Image</div> 718 <img loading="lazy" src="/sites/default/files/2025-05/image-hero-background-light-small-opt2-animated.svg" alt="Decorative image with 3d triangles" /> 719 720 721 </div> 722 723</div> 724</div> 725 726 </div> 727 <span class="menu-link-list"> 728 729 </span> 730 731 <div class="menu-link-item mt-8"> 732 733 734 735 736 737 <div class="field field--name-field-link field--type-link field--label-hidden"><a href="/services/migration/complimentary-code-assessment">Get Details ></a></div> 738 739 </div> 740</div> 741 742 </div> 743 </div> 744</div> 745 746</div> 747</div> 748 <div> 749<div id="p-4211" class="paragraph paragraph--type--menu-footer-cta paragraph--view-mode--default menu-footer-cta hidden lg:block"> 750 <div class=" 751 flex items-center gap-4 752 bg-p4-white 753 px-8 py-4 754 -mx-6 -mb-6 755 md:-mx-6 md:-mb-6"> 756 757 758 759 <div class="ml-auto"> 760 <a href="/services"> 761 All Services > 762 </a> 763 </div> 764 </div> 765</div> 766</div> 767 </div> 768 769 </div> 770 771 772 773 </div> 774 </div> 775 776 777 </div> 778 779 </li> 780 781 782 783 <li 784 class="menu-item list-none border-gray-100" 785 > 786 787 788 <div class="flex items-center justify-between"> 789 790 791 <button 792 type="button" 793 class="px-1 py-1 inline-flex items-center gap-2 flex-1 heading-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 menu-item--has-panel" aria-haspopup="true" :aria-expanded="(activeItem === 2) ? "true" : "false"" 794 @click="activeItem = activeItem === 2 ? null : 2" 795 > 796 Solutions 797 </button> 798 799 <button 800 class="px-4 py-4 mr-12 lg:mr-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2" 801 @click="activeItem = activeItem === 2 ? null : 2" 802 :aria-expanded="activeItem === 2 ? 'true' : 'false'" 803 aria-label="Toggle Solutions submenu" 804 > 805 <svg 806 class="w-4 h-4 transition-transform duration-200" 807 :class="activeItem === 2 ? 'rotate-180' : ''" 808 xmlns="http://www.w3.org/2000/svg" 809 fill="none" viewBox="0 0 24 24" 810 stroke="currentColor" stroke-width="2" 811 > 812 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" /> 813 </svg> 814 </button> 815 816 </div> 817 818 819 <div 820 x-show="activeItem === 2" 821 x-transition:enter="transition ease-out duration-200" 822 x-transition:enter-start="opacity-0 -translate-y-2" 823 x-transition:enter-end="opacity-100 translate-y-0" 824 x-transition:leave="transition ease-in duration-150" 825 x-transition:leave-start="opacity-100 translate-y-0" 826 x-transition:leave-end="opacity-0 -translate-y-2" 827 class="flex flex-col" 828 x-cloak 829 > 830 <div class=" flex-1"> 831 <div class=" 832 lg:p-4 833 [&_.layout]:!block 834 [&_.layout__region]:!block 835 [&_.layout__region]:!w-full 836 "> 837 838 839 <div class="menu_link_content menu-link-contentmain-menu-system view-mode-default menu-dropdown menu-dropdown-0 menu-type-default"> 840 841 842 843 844 845 <div class="field field--name-field-menu-panel field--type-entity-reference-revisions field--label-hidden"> 846 <div> 847 848<div id="p-4212" class="paragraph paragraph--type--menu-panel paragraph--view-mode--default"> 849 <div class="layout--one-column-menu w-md mx-auto"> 850 <div class="layout__region--main layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 851 852 853 854<div id="p-4219" class="menu-link-list p-4 has-title">
855 <span class="font-bold w-full leading-normal">PHP Solutions</span> 856 <span class="hidden lg:inline"></span> 857 <div class="menu-links-wrapper"> 858 859 860 861 862 863 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 864 <div> 865 866<div id="p-4213" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 867 868 869 870 871 872 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/solutions/cloud">Cloud Solutions</a></div> 873 874</div></div> 875 <div> 876 877<div id="p-4214" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 878 879 880 881 882 883 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/solutions/containers">Container Solutions</a></div> 884 885</div></div> 886 <div> 887 888<div id="p-4215" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 889 890 891 892 893 894 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/solutions/security">Security Solutions</a></div> 895 896</div></div> 897 <div> 898 899<div id="p-4216" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 900 901 902 903 904 905 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/solutions/php-hosting-providers">Hosting Providers</a></div> 906 907</div></div> 908 <div> 909 910<div id="p-4217" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 911 912 913 914 915 916 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/solutions/php-windows">Windows Solutions</a></div> 917 918</div></div> 919 <div> 920 921<div id="p-4218" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 922 923 924 925 926 927 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/solutions/migrating-from-zend-server-to-zendphp">Zend Server Migration</a></div> 928 929</div></div> 930 </div> 931 932 </div> 933</div> 934 935 </div> 936 </div> 937 938</div> 939</div> 940 </div> 941 942 </div> 943 944 945 946 </div> 947 </div> 948 949 950 </div> 951 952 </li> 953 954 955 956 <li 957 class="menu-item list-none border-gray-100" 958 > 959 960 961 <div class="flex items-center justify-between"> 962 963 964 <button 965 type="button" 966 class="px-1 py-1 inline-flex items-center gap-2 flex-1 heading-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 menu-item--has-panel" aria-haspopup="true" :aria-expanded="(activeItem === 3) ? "true" : "false"" 967 @click="activeItem = activeItem === 3 ? null : 3" 968 > 969 Learn 970 </button> 971 972 <button 973 class="px-4 py-4 mr-12 lg:mr-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2" 974 @click="activeItem = activeItem === 3 ? null : 3" 975 :aria-expanded="activeItem === 3 ? 'true' : 'false'" 976 aria-label="Toggle Learn submenu" 977 > 978 <svg 979 class="w-4 h-4 transition-transform duration-200" 980 :class="activeItem === 3 ? 'rotate-180' : ''" 981 xmlns="http://www.w3.org/2000/svg" 982 fill="none" viewBox="0 0 24 24" 983 stroke="currentColor" stroke-width="2" 984 > 985 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" /> 986 </svg> 987 </button> 988 989 </div> 990 991 992 <div 993 x-show="activeItem === 3" 994 x-transition:enter="transition ease-out duration-200" 995 x-transition:enter-start="opacity-0 -translate-y-2" 996 x-transition:enter-end="opacity-100 translate-y-0" 997 x-transition:leave="transition ease-in duration-150" 998 x-transition:leave-start="opacity-100 translate-y-0" 999 x-transition:leave-end="opacity-0 -translate-y-2" 1000 class="flex flex-col" 1001 x-cloak 1002 > 1003 <div class=" flex-1"> 1004 <div class=" 1005 lg:p-4 1006 [&_.layout]:!block 1007 [&_.layout__region]:!block 1008 [&_.layout__region]:!w-full 1009 "> 1010 1011 1012 <div class="menu_link_content menu-link-contentmain-menu-system view-mode-
1012default menu-dropdown menu-dropdown-0 menu-type-default"> 1013 1014 1015 1016 1017 1018 <div class="field field--name-field-menu-panel field--type-entity-reference-revisions field--label-hidden"> 1019 <div> 1020 1021<div id="p-4220" class="paragraph paragraph--type--menu-panel paragraph--view-mode--default"> 1022 1023<div class="layout--four-column-25-25-25-25-menu w-full lg:w-[calc(100vw-4rem)] max-w-screen-lg mx-auto relative"> 1024 <div class="grid grid-cols-1 lg:grid-cols-[1fr_1fr_1fr_1fr] gap-4"> 1025 <div class="layout__region--col1 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 1026 1027 1028 1029<div id="p-4227" class="menu-link-list p-4 has-title"> 1030 <span class="font-bold w-full leading-normal">Resources</span> 1031 <span class="hidden lg:inline"></span> 1032 <div class="menu-links-wrapper"> 1033 1034 1035 1036 1037 1038 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 1039 <div> 1040 1041<div id="p-4221" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1042 1043 1044 1045 1046 1047 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/blog">Blogs</a></div> 1048 1049</div></div> 1050 <div> 1051 1052<div id="p-4222" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1053 1054 1055 1056 1057 1058 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/resources/ebooks-papers">eBooks & Papers</a></div> 1059 1060</div></div> 1061 <div> 1062 1063<div id="p-4223" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1064 1065 1066 1067 1068 1069 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/resources/webinars">Webinars</a></div> 1070 1071</div></div> 1072 <div> 1073 1074<div id="p-4224" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1075 1076 1077 1078 1079 1080 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/resources/videos">Videos</a></div> 1081 1082</div></div> 1083 <div> 1084 1085<div id="p-4225" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1086 1087 1088 1089 1090 1091 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/resources/php-landscape-report">PHP Landscape Report</a></div> 1092 1093</div></div> 1094 <div> 1095 1096<div id="p-4226" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1097 1098 1099 1100 1101 1102 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/resources">All Resources</a></div> 1103 1104</div></div> 1105 </div> 1106 1107 </div> 1108</div> 1109 1110 </div> 1111 <div class="layout__region--col2 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 1112 1113 1114 1115<div id="p-4232" class="menu-link-list p-4 has-title"> 1116 <span class="font-bold w-full leading-normal">Training</span> 1117 <span class="hidden lg:inline"></span> 1118 <div class="menu-links-wrapper"> 1119 1120 1121 1122 1123 1124 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 1125 <div> 1126 1127<div id="p-4228" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1128 1129 1130 1131 1132 1133 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/training/php-certification-exam">PHP Certification</a></div> 1134 1135</div></div> 1136 <div> 1137 1138<div id="p-4229" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1139 1140 1141 1142 1143 1144 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/training/php">On-Demand Courses</a></div> 1145 1146</div></div> 1147 <div> 1148 1149<div id="p-4230" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1150 1151 1152 1153 1154 1155 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/training/php">Instructor-Led Training</a></div> 1156 1157</div></div> 1158 <div> 1159 1160<div id="p-4231" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1161 1162 1163 1164 1165 1166 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="https://perforceoneplacetraining.perforce.com/learn/signin?_gl=1*12plhnt*_gcl_au*MjY4NzE1ODg5LjE3NzU1NzEwOTQ.">All Training</a></div> 1167 1168</div></div> 1169 </div> 1170 1171 </div> 1172</div> 1173 1174 </div> 1175 <div class="layout__region--col3 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 1176 1177 1178 1179<div id="p-4239" class="menu-link-list p-4 has-title">
1180 <span class="font-bold w-full leading-normal">Technical</span> 1181 <span class="hidden lg:inline"></span> 1182 <div class="menu-links-wrapper"> 1183 1184 1185 1186 1187 1188 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 1189 <div> 1190 1191<div id="p-4233" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1192 1193 1194 1195 1196 1197 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="https://help.zend.com/">Documentation</a></div> 1198 1199</div></div> 1200 <div> 1201 1202<div id="p-4234" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1203 1204 1205 1206 1207 1208 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/php-security-center">Security Center</a></div> 1209 1210</div></div> 1211 <div> 1212 1213<div id="p-4235" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1214 1215 1216 1217 1218 1219 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="https://trust.perforce.com/">Trust Center</a></div> 1220 1221</div></div> 1222 <div> 1223 1224<div id="p-4236" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1225 1226 1227 1228 1229 1230 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="https://portal.perforce.com/s/topic/0TO5Y00000ByxvrWAB/zend?utm_medium=email&utm_source=email-house&utm_campaign=znd-glb-2025q4-ecm-quarterlynewsletter&utm_content=blog&_gl=1*1etznq9*_gcl_aw*R0NMLjE3Njc4ODI4MjUuQ2owS0NRaUF5UDNLQmhEOUFSSXNBQUpMbm5ZMC1SV2QyTGdVQXRiR0FNanE3aHJNa25TUGk4QVN0VTV0RnJmSXNpS1VJWGlrT3pLdF9kWWFBb3p1RUFMd193Y0I.*_gcl_au*MTQ1MjM3NzMwOC4xNzc0MjcwMzI1LjIwMTU1Njk1NDkuMTc3NDYyNDY0OC4xNzc0NjI0Njcy">Customer Support Portal</a></div> 1231 1232</div></div> 1233 <div> 1234 1235<div id="p-4237" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1236 1237 1238 1239 1240 1241 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/support">All Support</a></div> 1242 1243</div></div> 1244 <div> 1245 1246<div id="p-4238" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1247 1248 1249 1250 1251 1252 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/training/php-certification-exam">My Zend Account</a></div> 1253 1254</div></div> 1255 </div> 1256 1257 </div> 1258</div> 1259 1260 </div> 1261 <div class="layout__region--col4 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 1262 1263 1264<div id="p-4240" class="paragraph paragraph--type--menu-featured-content paragraph--view-mode--default menu-featured-content p-4 hidden lg:block"> 1265 <span class="font-bold my-4 leading-normal">2026 PHP Landscape Reportâ</span> 1266 1267 <div class="rounded-3xl overflow-hidden mx-auto !my-4"> 1268 1269 1270 1271 1272 1273 <div class="field field--name-field-image field--type-entity-reference field--label-hidden"><div> 1274 1275 1276 1277 1278 1279 1280 <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> 1281 <div class="visually-hidden">Image</div> 1282 <img loading="lazy" src="/sites/default/files/2026-04/image-php-landscape-report-26-mockup.jpeg" alt="2026 PHP Landscape Report" /> 1283 1284 1285 </div> 1286 1287</div> 1288</div> 1289 1290 </div> 1291 <span class="menu-link-list"> 1292 1293 1294 <div class="text-long"><p>The PHP Ecosystem Changes Quickly â Are You Keeping Up?</p> 1295</div> 1296 1297 </span> 1298 1299 <div class="menu-link-item mt-8"> 1300 1301 1302 1303 1304 1305 <div class="field field--name-field-link field--type-link field--label-hidden"><a href="/resources/php-landscape-report">Access Now ></a></div> 1306 1307 </div> 1308</div> 1309 1310 </div> 1311 </div> 1312</div> 1313 1314</div> 1315</div> 1316 </div> 1317 1318 </div> 1319 1320 1321 1322 </div> 1323 </div> 1324 1325 1326 </div> 1327 1328 </li> 1329 1330 1331 1332 <li 1333 class="menu-item list-none border-gray-100" 1334 > 1335 1336 1337 <div class="flex items-center justify-between"> 1338 1339 1340 <a href="/customers" class="px-1 py-1 inline-flex items-center gap-2 flex-1 heading-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2" data-drupal-link-system-path="node/3">Customers</a> 1341 1342 1343 </div> 1344 1345 1346 </li> 1347 1348 1349 1350 <li 1351 class="menu-item list-none border-gray-100" 1352 > 1353 1354 1355 <div class="flex items-center justify-between"> 1356 1357 1358 <button 1359 type="button" 1360 class="px-1 py-1 inline-flex items-center gap-2 flex-1 heading-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 menu-item--has-panel" aria-haspopup="true" :aria-expanded="(activeItem === 5) ? "true" : "false"" 1361 @click="activeItem = activeItem === 5 ? null : 5" 1362 > 1363 Company 1364 </button> 1365 1366 <button 1367 class="px-4 py-4 mr-12 lg:mr-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2" 1368 @click="activeItem = activeItem === 5 ? null : 5" 1369 :aria-expanded="activeItem === 5 ? 'true' : 'false'" 1370 aria-label="Toggle Company submenu" 1371 > 1372 <svg 1373 class="w-4 h-4 transition-transform duration-200" 1374 :class="activeItem === 5 ? 'rotate-180' : ''" 1375 xmlns="http://www.w3.org/2000/svg" 1376 fill="none" viewBox="0 0 24 24" 1377 stroke="currentColor" stroke-width="2" 1378 > 1379 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" /> 1380 </svg> 1381 </button> 1382 1383 </div> 1384 1385 1386 <div 1387 x-show="activeItem === 5" 1388 x-transition:enter="transition ease-out duration-200" 1389 x-transition:enter-start="opacity-0 -translate-y-2" 1390 x-transition:enter-end="opacity-100 translate-y-0" 1391 x-transition:leave="transition ease-in duration-150" 1392 x-transition:leave-start="opacity-100 translate-y-0" 1393 x-transition:leave-end="opacity-0 -translate-y-2" 1394 class="flex flex-col" 1395 x-cloak 1396 > 1397 <div class=" flex-1"> 1398 <div class=" 1399 lg:p-4 1400 [&_.layout]:!block 1401 [&_.layout__region]:!block 1402 [&_.layout__region]:!w-full 1403 "> 1404 1405 1406 <div class="menu_link_content menu-link-contentmain-menu-system view-mode-
1406default menu-dropdown menu-dropdown-0 menu-type-default"> 1407 1408 1409 1410 1411 1412 <div class="field field--name-field-menu-panel field--type-entity-reference-revisions field--label-hidden"> 1413 <div> 1414 1415<div id="p-4241" class="paragraph paragraph--type--menu-panel paragraph--view-mode--default"> 1416 <div class="layout--one-column-menu w-md mx-auto"> 1417 <div class="layout__region--main layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 1418 1419 1420 1421<div id="p-4246" class="menu-link-list p-4 has-no-title"> 1422 <span class="hidden lg:inline"></span> 1423 <div class="menu-links-wrapper"> 1424 1425 1426 1427 1428 1429 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 1430 <div> 1431 1432<div id="p-4242" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1433 1434 1435 1436 1437 1438 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/about">About Perforce Zend</a></div> 1439 1440</div></div> 1441 <div> 1442 1443<div id="p-4243" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1444 1445 1446 1447 1448 1449 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/plugins">Download Plugins</a></div> 1450 1451</div></div> 1452 <div> 1453 1454<div id="p-4244" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1455 1456 1457 1458 1459 1460 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/downloads">Download Software</a></div> 1461 1462</div></div> 1463 <div> 1464 1465<div id="p-4245" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1466 1467 1468 1469 1470 1471 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/partners">Partners</a></div> 1472 1473</div></div> 1474 </div> 1475 1476 </div> 1477</div> 1478 1479 </div> 1480 </div> 1481 1482</div> 1483</div> 1484 </div> 1485 1486 </div> 1487 1488 1489 1490 </div> 1491 </div> 1492 1493 1494 </div> 1495 1496 </li> 1497 <div class="mobile-utility-nav-container md:hidden block"> 1498 <nav role="navigation" aria-labelledby="-menu"> 1499 1500 <h2 id="-menu"></h2> 1501 1502 1503 <ul class="utility-nav list-none md:flex hidden items-center desktop-utility-nav"> 1504 1505 1506 1507 1508 1509 <li> 1510 1511 <a href="/downloads" class="utility-nav__link utility-nav__icon hover:opacity-70 w-5 h-5 block !max-w-none"> 1512 <div> 1513 1514 1515 1516 1517 1518 1519 <div class="field field--name-field-icon field--type-svg-image-field field--label-visually_hidden"> 1520 <div class="visually-hidden">SVG</div> 1521 <img width="25" height="25" alt="Downloads Icon" src="/sites/default/files/2026-04/icon-simple-download-bottom.svg" /> 1522 1523 </div> 1524 1525</div> 1526 1527 </a> 1528 1529 1530 </li> 1531 1532 1533 1534 <li> 1535 1536 <a href="https://portal.perforce.com/s/product/a3g5Y000006brwcQAA/zend" class="utility-nav__link utility-nav__icon hover:opacity-70 w-5 h-5 block !max-w-none"> 1537 <div> 1538 1539 1540 1541 1542 1543 1544 <div class="field field--name-field-icon field--type-svg-image-field field--label-visually_hidden"> 1545 <div class="visually-hidden">SVG</div> 1546 <img width="25" height="25" alt="Customer Portal Icon" src="/sites/default/files/2026-04/icon-simple-composition-window-man.svg" /> 1547 1548 </div> 1549 1550</div> 1551 1552 </a> 1553 1554 1555 </li> 1556 1557 1558 1559 <li> 1560 1561 1562 1563 1564 <a href="/products/zendphp-enterprise/trial" class="text-[1.15rem] underline xl1485:no-underline xl1485:p4-cta p4-cta--secondary xl1485:border xl1485:border-p4-primary xl1485:border-solid xl1485:!px-4 xl1485:py-2 xl1485:mt-0 xl1485:hover:!no-underline"> 1565 Free Trial 1566 </a> 1567 1568 1569 1570 1571 </li> 1572 1573 1574 1575 <li> 1576 1577 1578 1579 1580 1581 <a href="/pricing" class="utility-nav__link underline xl1485:no-underline xl1485:!px-4 xl1485:mt-0 xl1485:p4-cta text-[1.15rem]"> 1582 Request Pricing 1583 </a> 1584 1585 1586 1587 </li> 1588 1589 </ul> 1590 1591 1592 1593 1594 1595 1596 <li class="md:hidden block menu-item list-none border-gray-100 !mb-4 pl-4 text-[1.15rem] leading-[2.1rem] tracking-[.005rem] font-normal"> 1597 1598 <a href="/downloads" class="px-1 py-1"> 1599 Downloads 1600 </a> 1601 1602 1603 1604 <li class="md:hidden block menu-item list-none border-gray-100 !mb-4 pl-4 text-[1.15rem] leading-[2.1rem] tracking-[.005rem] font-normal"> 1605 1606 <a href="https://portal.perforce.com/s/product/a3g5Y000006brwcQAA/zend" class="px-1 py-1"> 1607 Customer Portal 1608 </a> 1609 1610 1611 1612 <li class="md:hidden block menu-item list-none border-gray-100 !mb-4 pl-4 text-[1.15rem] leading-[2.1rem] tracking-[.005rem] font-normal"> 1613 1614 1615 1616 1617 1618 1619 1620 1621<a href="/products/zendphp-enterprise/trial" class="p4-cta p4-cta--secondary text-[1.15rem] border border-p4-primary border-solid !px-4 py-2 mt-0 hover:!no-underline"> 1622 Free Trial 1623 </a> 1624 1625 1626 1627 1628 1629 <li class="md:hidden block menu-item list-none border-gray-100 !mb-4 pl-4 text-[1.15rem] leading-[2.1rem] tracking-[.005rem] font-normal"> 1630 1631 1632 1633 1634 1635 1636 1637 1638<a href="/pricing" class="p4-cta text-[1.15rem] !px-4 mt-0"> 1639 Request Pricing 1640 </a> 1641 1642 1643 1644 </nav> 1645 1646 </div> 1647 </ul> 1648 </div> 1649 1650 <ul 1651 id="main-nav-menu" 1652 class="menu menu-level-0 hidden xl:flex xl:flex-row xl:items-stretch xl:gap-[1.2rem] w-full xl:w-auto !m-0" 1653 > 1654 1655 1656 1657 <li 1658 @mouseenter=" 1659 clearTimeout(closeTimer); 1660 activeItem = 0 1661 " 1662 @mouseleave=" 1663 closeTimer = setTimeout(() => activeItem = null, 150) 1664 " 1665 class=" 1666 menu-item !m-0 list-none 1667 " 1668 > 1669 1670 1671 1672 <button type="button" class="px-3 py-2 inline-flex items-center gap-2 heading-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 menu-item--has-panel" aria-haspopup="true" :aria-expanded="(activeItem === 0) ? "true" : "false"" @keydown.enter.prevent="activeItem = (activeItem === 0) ? null : 0" @keydown.space.prevent="activeItem = (activeItem === 0) ? null : 0" @keydown.escape.stop="activeItem = null"> 1673 Products 1674 </button> 1675 1676 1677 <div 1678 x-show="activeItem === 0" 1679 x-cloak 1680 x-transition:enter="transition ease-out duration-200" 1681 x-transition:enter-start="opacity-0 translate-y-1" 1682 x-transition:enter-end="opacity-100 translate-y-0" 1683 x-transition:leave="transition ease-in-out duration-200" 1684 x-transition:leave-start="opacity-100 translate-y-0" 1685 x-transition:leave-end="opacity-0" 1686 @mouseenter="clearTimeout(closeTimer)" 1687 @mouseleave="closeTimer = setTimeout(() => activeItem = null, 150)" 1688 class=" 1689 absolute top-full -mt-px z-50 1690 left-0 right-0 1691 " 1692 > 1693 1694 <div class=" 1695 bg-white shadow-lg rounded-3xl overflow-hidden border border-t flex flex-col 1696 w-max"> 1697 1698 <div class=" flex-1"> 1699 <div class="px-6 pt-6 pb-0"> 1700 1701 1702 <div class="menu_link_content menu-link-contentmain-menu-system view-mode-
1702default menu-dropdown menu-dropdown-0 menu-type-default"> 1703 1704 1705 1706 1707 1708 <div class="field field--name-field-menu-panel field--type-entity-reference-revisions field--label-hidden"> 1709 <div> 1710 1711<div id="p-4196" class="paragraph paragraph--type--menu-panel paragraph--view-mode--default"> 1712 1713<div class="layout--two-column-50-50-menu w-full max-w-2xl mx-auto"> 1714 <div class="grid grid-cols-1 lg:grid-cols-2 gap-4"> 1715 <div class="layout__region--col1 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 1716 1717 1718 1719<div id="p-4201" class="menu-link-list p-4 has-no-title"> 1720 <span class="hidden lg:inline"></span> 1721 <div class="menu-links-wrapper"> 1722 1723 1724 1725 1726 1727 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 1728 <div> 1729 1730<div id="p-4197" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1731 1732 1733 1734 1735 1736 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/index%2Ephp/products/zendphp-enterprise">ZendPHP</a></div> 1737 1738</div></div> 1739 <div> 1740 1741<div id="p-4198" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1742 1743 1744 1745 1746 1747 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/index%2Ephp/products/zendhq">ZendHQ</a></div> 1748 1749</div></div> 1750 <div> 1751 1752<div id="p-4199" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1753 1754 1755 1756 1757 1758 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/index%2Ephp/products/enterprise-web-platform">Zend Web Platform</a></div> 1759 1760</div></div> 1761 <div> 1762 1763<div id="p-4200" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1764 1765 1766 1767 1768 1769 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/index%2Ephp/services/php-long-term-support">Long-Term Support</a></div> 1770 1771</div></div> 1772 </div> 1773 1774 </div> 1775</div> 1776 1777 </div> 1778 <div class="layout__region--col2 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 1779 1780 1781<div id="p-4202" class="paragraph paragraph--type--menu-featured-content paragraph--view-mode--default menu-featured-content p-4 hidden lg:block"> 1782 <span class="font-bold my-4 leading-normal">ZendPHP</span> 1783 1784 <div class="rounded-3xl overflow-hidden mx-auto !my-4"> 1785 1786 1787 1788 1789 1790 <div class="field field--name-field-image field--type-entity-reference field--label-hidden"><div> 1791 1792 1793 1794 1795 1796 1797 <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> 1798 <div class="visually-hidden">Image</div> 1799 <img loading="lazy" src="/sites/default/files/2025-05/image-hero-background-light-large-opt2.svg" title="image-hero-background-light-large-opt2.svg" /> 1800 1801 1802 </div> 1803 1804</div> 1805</div> 1806 1807 </div> 1808 <span class="menu-link-list"> 1809 1810 1811 <div class="text-long"><p>PHP Runtime and Support</p> 1812</div> 1813 1814 </span> 1815 1816 <div class="menu-link-item mt-8"> 1817 1818 1819 1820 1821 1822 <div class="field field--name-field-link field--type-link field--label-hidden"><a href="/index%2Ephp/products/zendphp-enterprise/trial">Try Free ></a></div> 1823 1824 </div> 1825</div> 1826 1827 </div> 1828 </div> 1829</div> 1830 1831</div> 1832</div> 1833 </div> 1834 1835 </div> 1836 1837 1838 1839 </div> 1840 </div> 1841 1842 1843 </div> 1844 1845 </div> 1846 1847 </li> 1848 1849 1850 1851 <li 1852 @mouseenter=" 1853 clearTimeout(closeTimer); 1854 activeItem = 1 1855 " 1856 @mouseleave=" 1857 closeTimer = setTimeout(() => activeItem = null, 150) 1858 " 1859 class=" 1860 menu-item !m-0 list-none 1861 " 1862 > 1863 1864 1865 1866 <button type="button" class="px-3 py-2 inline-flex items-center gap-2 heading-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 menu-item--has-panel" aria-haspopup="true" :aria-expanded="(activeItem === 1) ? "true" : "false"" @keydown.enter.prevent="activeItem = (activeItem === 1) ? null : 1" @keydown.space.prevent="activeItem = (activeItem === 1) ? null : 1" @keydown.escape.stop="activeItem = null"> 1867 Services 1868 </button> 1869 1870 1871 <div 1872 x-show="activeItem === 1" 1873 x-cloak 1874 x-transition:enter="transition ease-out duration-200" 1875 x-transition:enter-start="opacity-0 translate-y-1" 1876 x-transition:enter-end="opacity-100 translate-y-0" 1877 x-transition:leave="transition ease-in-out duration-200" 1878 x-transition:leave-start="opacity-100 translate-y-0" 1879 x-transition:leave-end="opacity-0" 1880 @mouseenter="clearTimeout(closeTimer)" 1881 @mouseleave="closeTimer = setTimeout(() => activeItem = null, 150)" 1882 class=" 1883 absolute top-full -mt-px z-50 1884 left-0 right-0 1885 " 1886 > 1887 1888 <div class=" 1889 bg-white shadow-lg rounded-3xl overflow-hidden border border-t flex flex-col 1890 w-max"> 1891 1892 <div class=" flex-1"> 1893 <div class="px-6 pt-6 pb-0"> 1894 1895 1896 <div class="menu_link_content menu-link-contentmain-menu-system view-mode-
1896default menu-dropdown menu-dropdown-0 menu-type-default"> 1897 1898 1899 1900 1901 1902 <div class="field field--name-field-menu-panel field--type-entity-reference-revisions field--label-hidden"> 1903 <div> 1904 1905<div id="p-4203" class="paragraph paragraph--type--menu-panel paragraph--view-mode--default"> 1906 1907<div class="layout--three-column-33-33-33-menu w-full lg:w-[calc(100vw-4rem)] max-w-screen-lg mx-auto"> 1908 <div class="grid grid-cols-1 lg:grid-cols-[1fr_1fr_1fr] gap-4"> 1909 <div class="layout__region--col1 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 1910 1911 1912 1913<div id="p-4210" class="menu-link-list p-4 has-title"> 1914 <span class="font-bold w-full leading-normal">All Services</span> 1915 <span class="hidden lg:inline"></span> 1916 <div class="menu-links-wrapper"> 1917 1918 1919 1920 1921 1922 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 1923 <div> 1924 1925<div id="p-4204" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1926 1927 1928 1929 1930 1931 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/php-long-term-support">Long-Term Support</a></div> 1932 1933</div></div> 1934 <div> 1935 1936<div id="p-4205" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1937 1938 1939 1940 1941 1942 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/migration">Upgrades & Modernization</a></div> 1943 1944</div></div> 1945 <div> 1946 1947<div id="p-4206" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1948 1949 1950 1951 1952 1953 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/custom-consulting">Consulting</a></div> 1954 1955</div></div> 1956 <div> 1957 1958<div id="p-4207" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1959 1960 1961 1962 1963 1964 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/performance-auditing">Auditing</a></div> 1965 1966</div></div> 1967 <div> 1968 1969<div id="p-4208" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1970 1971 1972 1973 1974 1975 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/black-belt-php-support-services">Black Belt Services</a></div> 1976 1977</div></div> 1978 <div> 1979 1980<div id="p-4209" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 1981 1982 1983 1984 1985 1986 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/continuous-delivery">CI/CD & Test Automation</a></div> 1987 1988</div></div> 1989 </div> 1990 1991 </div> 1992</div> 1993 1994 </div> 1995 <div class="layout__region--col2 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 1996 1997 1998 1999<div id="p-4364" class="menu-link-list p-4 has-title"> 2000 <span class="font-bold w-full leading-normal">Migration Services</span> 2001 <span class="hidden lg:inline"></span> 2002 <div class="menu-links-wrapper"> 2003 2004 2005 2006 2007 2008 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 2009 <div> 2010 2011<div id="p-4359" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2012 2013 2014 2015 2016 2017 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/migration/laravel-migration">Laravel Migrations</a></div> 2018 2019</div></div> 2020 <div> 2021 2022<div id="p-4360" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2023 2024 2025 2026 2027 2028 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/migration/symfony-migration">Symfony Migrations</a></div> 2029 2030</div></div> 2031 <div> 2032 2033<div id="p-4361" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2034 2035 2036 2037 2038 2039 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/migration/codeigniter-migration">CodeIgniter Migrations</a></div> 2040 2041</div></div> 2042 <div> 2043 2044<div id="p-4362" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2045 2046 2047 2048 2049 2050 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/migration/cakephp-migration">CakePHP Migrations</a></div> 2051 2052</div></div> 2053 <div> 2054 2055<div id="p-4363" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2056 2057 2058 2059 2060 2061 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/migration/php-mysql-migration">PHP MySQL Migrations</a></div> 2062 2063</div></div> 2064 <div> 2065 2066<div id="p-4366" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2067 2068 2069 2070 2071 2072 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/services/migration">All Migration Services</a></div> 2073 2074</div></div> 2075 </div> 2076 2077 </div> 2078</div> 2079 2080 </div> 2081 <div class="layout__region--col3 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 2082 2083 2084<div id="p-4365" class="paragraph paragraph--type--menu-featured-content paragraph--view-mode--default menu-featured-content p-4 hidden lg:block">
2085 <span class="font-bold my-4 leading-normal">Complimentary Code Assessments for PHP Migrations</span> 2086 2087 <div class="rounded-3xl overflow-hidden mx-auto !my-4"> 2088 2089 2090 2091 2092 2093 <div class="field field--name-field-image field--type-entity-reference field--label-hidden"><div> 2094 2095 2096 2097 2098 2099 2100 <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> 2101 <div class="visually-hidden">Image</div> 2102 <img loading="lazy" src="/sites/default/files/2025-05/image-hero-background-light-small-opt2-animated.svg" alt="Decorative image with 3d triangles" /> 2103 2104 2105 </div> 2106 2107</div> 2108</div> 2109 2110 </div> 2111 <span class="menu-link-list"> 2112 2113 </span> 2114 2115 <div class="menu-link-item mt-8"> 2116 2117 2118 2119 2120 2121 <div class="field field--name-field-link field--type-link field--label-hidden"><a href="/services/migration/complimentary-code-assessment">Get Details ></a></div> 2122 2123 </div> 2124</div> 2125 2126 </div> 2127 </div> 2128</div> 2129 2130</div> 2131</div> 2132 <div> 2133<div id="p-4211" class="paragraph paragraph--type--menu-footer-cta paragraph--view-mode--default menu-footer-cta hidden lg:block"> 2134 <div class=" 2135 flex items-center gap-4 2136 bg-p4-white 2137 px-8 py-4 2138 -mx-6 -mb-6 2139 md:-mx-6 md:-mb-6"> 2140 2141 2142 2143 <div class="ml-auto"> 2144 <a href="/services"> 2145 All Services > 2146 </a> 2147 </div> 2148 </div> 2149</div> 2150</div> 2151 </div> 2152 2153 </div> 2154 2155 2156 2157 </div> 2158 </div> 2159 2160 2161 </div> 2162 2163 </div> 2164 2165 </li> 2166 2167 2168 2169 <li 2170 @mouseenter=" 2171 clearTimeout(closeTimer); 2172 activeItem = 2 2173 " 2174 @mouseleave=" 2175 closeTimer = setTimeout(() => activeItem = null, 150) 2176 " 2177 class=" 2178 menu-item !m-0 list-none 2179 relative " 2180 > 2181 2182 2183 2184 <button type="button" class="px-3 py-2 inline-flex items-center gap-2 heading-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 menu-item--has-panel" aria-haspopup="true" :aria-expanded="(activeItem === 2) ? "true" : "false"" @keydown.enter.prevent="activeItem = (activeItem === 2) ? null : 2" @keydown.space.prevent="activeItem = (activeItem === 2) ? null : 2" @keydown.escape.stop="activeItem = null"> 2185 Solutions 2186 </button> 2187 2188 2189 <div 2190 x-show="activeItem === 2" 2191 x-cloak 2192 x-transition:enter="transition ease-out duration-200" 2193 x-transition:enter-start="opacity-0 translate-y-1" 2194 x-transition:enter-end="opacity-100 translate-y-0" 2195 x-transition:leave="transition ease-in-out duration-200" 2196 x-transition:leave-start="opacity-100 translate-y-0" 2197 x-transition:leave-end="opacity-0" 2198 @mouseenter="clearTimeout(closeTimer)" 2199 @mouseleave="closeTimer = setTimeout(() => activeItem = null, 150)" 2200 class=" 2201 absolute top-full -mt-px z-50 2202 left-0 min-w-[14rem] 2203 " 2204 > 2205 2206 <div class=" 2207 bg-white shadow-lg rounded-3xl overflow-hidden border border-t flex flex-col 2208 "> 2209 2210 <div class=" flex-1"> 2211 <div class="px-6 pt-6 pb-0"> 2212 2213 2214 <div class="menu_link_content menu-link-contentmain-menu-system view-mode-default menu-dropdown menu-dropdown-0 menu-type-default"> 2215 2216 2217 2218 2219 2220 <div class="field field--name-field-menu-panel field--type-entity-reference-revisions field--label-hidden"> 2221 <div> 2222 2223<div id="p-4212" class="paragraph paragraph--type--menu-panel paragraph--view-mode--default"> 2224 <div class="layout--one-column-menu w-md mx-auto"> 2225 <div class="layout__region--main layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 2226 2227 2228 2229<div id="p-4219" class="menu-link-list p-4 has-title"> 2230 <span class="font-bold w-full leading-normal">PHP Solutions</span> 2231 <span class="hidden lg:inline"></span> 2232 <div class="menu-links-wrapper"> 2233 2234 2235 2236 2237 2238 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 2239 <div> 2240 2241<div id="p-4213" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2242 2243 2244 2245 2246 2247 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/solutions/cloud">Cloud Solutions</a></div> 2248 2249</div></div> 2250 <div> 2251 2252<div id="p-4214" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2253 2254 2255 2256 2257 2258 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/solutions/containers">Container Solutions</a></div> 2259 2260</div></div> 2261 <div> 2262 2263<div id="p-4215" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2264 2265 2266 2267 2268 2269 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/solutions/security">Security Solutions</a></div> 2270 2271</div></div> 2272 <div> 2273 2274<div id="p-4216" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2275 2276 2277 2278 2279 2280 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/solutions/php-hosting-providers">Hosting Providers</a></div> 2281 2282</div></div> 2283 <div> 2284 2285<div id="p-4217" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2286 2287 2288 2289 2290 2291 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/solutions/php-windows">Windows Solutions</a></div> 2292 2293</div></div> 2294 <div> 2295 2296<div id="p-4218" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2297 2298 2299 2300 2301 2302 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/solutions/migrating-from-zend-server-to-zendphp">Zend Server Migration</a></div> 2303 2304</div></div> 2305 </div> 2306 2307 </div> 2308</div> 2309 2310 </div> 2311 </div> 2312 2313</div> 2314</div> 2315 </div> 2316 2317 </div> 2318 2319 2320 2321 </div> 2322 </div> 2323 2324 2325 </div> 2326 2327 </div> 2328 2329 </li> 2330 2331 2332 2333 <li 2334 @mouseenter=" 2335 clearTimeout(closeTimer); 2336 activeItem = 3 2337 " 2338 @mouseleave=" 2339 closeTimer = setTimeout(() => activeItem = null, 150) 2340 " 2341 class=" 2342 menu-item !m-0 list-none 2343 " 2344 > 2345 2346 2347 2348 <button type="button" class="px-3 py-2 inline-flex items-center gap-2 heading-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 menu-item--has-panel" aria-haspopup="true" :aria-expanded="(activeItem === 3) ? "true" : "false"" @keydown.enter.prevent="activeItem = (activeItem === 3) ? null : 3" @keydown.space.prevent="activeItem = (activeItem === 3) ? null : 3" @keydown.escape.stop="activeItem = null"> 2349 Learn 2350 </button> 2351 2352 2353 <div 2354 x-show="activeItem === 3" 2355 x-cloak 2356 x-transition:enter="transition ease-out duration-200" 2357 x-transition:enter-start="opacity-0 translate-y-1" 2358 x-transition:enter-end="opacity-100 translate-y-0" 2359 x-transition:leave="transition ease-in-out duration-200" 2360 x-transition:leave-start="opacity-100 translate-y-0" 2361 x-transition:leave-end="opacity-0" 2362 @mouseenter="clearTimeout(closeTimer)" 2363 @mouseleave="closeTimer = setTimeout(() => activeItem = null, 150)" 2364 class=" 2365 absolute top-full -mt-px z-50 2366 left-0 right-0 2367 " 2368 > 2369 2370 <div class=" 2371 bg-white shadow-lg rounded-3xl overflow-hidden border border-t flex flex-col 2372 w-max"> 2373 2374 <div class=" flex-1"> 2375 <div class="px-6 pt-6 pb-0"> 2376 2377 2378 <div class="menu_link_content menu-link-contentmain-menu-system view-mode-
2378default menu-dropdown menu-dropdown-0 menu-type-default"> 2379 2380 2381 2382 2383 2384 <div class="field field--name-field-menu-panel field--type-entity-reference-revisions field--label-hidden"> 2385 <div> 2386 2387<div id="p-4220" class="paragraph paragraph--type--menu-panel paragraph--view-mode--default"> 2388 2389<div class="layout--four-column-25-25-25-25-menu w-full lg:w-[calc(100vw-4rem)] max-w-screen-lg mx-auto relative"> 2390 <div class="grid grid-cols-1 lg:grid-cols-[1fr_1fr_1fr_1fr] gap-4"> 2391 <div class="layout__region--col1 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 2392 2393 2394 2395<div id="p-4227" class="menu-link-list p-4 has-title"> 2396 <span class="font-bold w-full leading-normal">Resources</span> 2397 <span class="hidden lg:inline"></span> 2398 <div class="menu-links-wrapper"> 2399 2400 2401 2402 2403 2404 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 2405 <div> 2406 2407<div id="p-4221" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2408 2409 2410 2411 2412 2413 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/blog">Blogs</a></div> 2414 2415</div></div> 2416 <div> 2417 2418<div id="p-4222" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2419 2420 2421 2422 2423 2424 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/resources/ebooks-papers">eBooks & Papers</a></div> 2425 2426</div></div> 2427 <div> 2428 2429<div id="p-4223" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2430 2431 2432 2433 2434 2435 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/resources/webinars">Webinars</a></div> 2436 2437</div></div> 2438 <div> 2439 2440<div id="p-4224" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2441 2442 2443 2444 2445 2446 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/resources/videos">Videos</a></div> 2447 2448</div></div> 2449 <div> 2450 2451<div id="p-4225" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2452 2453 2454 2455 2456 2457 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/resources/php-landscape-report">PHP Landscape Report</a></div> 2458 2459</div></div> 2460 <div> 2461 2462<div id="p-4226" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2463 2464 2465 2466 2467 2468 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/resources">All Resources</a></div> 2469 2470</div></div> 2471 </div> 2472 2473 </div> 2474</div> 2475 2476 </div> 2477 <div class="layout__region--col2 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 2478 2479 2480 2481<div id="p-4232" class="menu-link-list p-4 has-title"> 2482 <span class="font-bold w-full leading-normal">Training</span> 2483 <span class="hidden lg:inline"></span> 2484 <div class="menu-links-wrapper"> 2485 2486 2487 2488 2489 2490 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 2491 <div> 2492 2493<div id="p-4228" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2494 2495 2496 2497 2498 2499 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/training/php-certification-exam">PHP Certification</a></div> 2500 2501</div></div> 2502 <div> 2503 2504<div id="p-4229" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2505 2506 2507 2508 2509 2510 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/training/php">On-Demand Courses</a></div> 2511 2512</div></div> 2513 <div> 2514 2515<div id="p-4230" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2516 2517 2518 2519 2520 2521 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/training/php">Instructor-Led Training</a></div> 2522 2523</div></div> 2524 <div> 2525 2526<div id="p-4231" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2527 2528 2529 2530 2531 2532 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="https://perforceoneplacetraining.perforce.com/learn/signin?_gl=1*12plhnt*_gcl_au*MjY4NzE1ODg5LjE3NzU1NzEwOTQ.">All Training</a></div> 2533 2534</div></div> 2535 </div> 2536 2537 </div> 2538</div> 2539 2540 </div> 2541 <div class="layout__region--col3 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 2542 2543 2544 2545<div id="p-4239" class="menu-link-list p-4 has-title">
2546 <span class="font-bold w-full leading-normal">Technical</span> 2547 <span class="hidden lg:inline"></span> 2548 <div class="menu-links-wrapper"> 2549 2550 2551 2552 2553 2554 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 2555 <div> 2556 2557<div id="p-4233" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2558 2559 2560 2561 2562 2563 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="https://help.zend.com/">Documentation</a></div> 2564 2565</div></div> 2566 <div> 2567 2568<div id="p-4234" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2569 2570 2571 2572 2573 2574 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/php-security-center">Security Center</a></div> 2575 2576</div></div> 2577 <div> 2578 2579<div id="p-4235" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2580 2581 2582 2583 2584 2585 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="https://trust.perforce.com/">Trust Center</a></div> 2586 2587</div></div> 2588 <div> 2589 2590<div id="p-4236" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2591 2592 2593 2594 2595 2596 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="https://portal.perforce.com/s/topic/0TO5Y00000ByxvrWAB/zend?utm_medium=email&utm_source=email-house&utm_campaign=znd-glb-2025q4-ecm-quarterlynewsletter&utm_content=blog&_gl=1*1etznq9*_gcl_aw*R0NMLjE3Njc4ODI4MjUuQ2owS0NRaUF5UDNLQmhEOUFSSXNBQUpMbm5ZMC1SV2QyTGdVQXRiR0FNanE3aHJNa25TUGk4QVN0VTV0RnJmSXNpS1VJWGlrT3pLdF9kWWFBb3p1RUFMd193Y0I.*_gcl_au*MTQ1MjM3NzMwOC4xNzc0MjcwMzI1LjIwMTU1Njk1NDkuMTc3NDYyNDY0OC4xNzc0NjI0Njcy">Customer Support Portal</a></div> 2597 2598</div></div> 2599 <div> 2600 2601<div id="p-4237" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2602 2603 2604 2605 2606 2607 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/support">All Support</a></div> 2608 2609</div></div> 2610 <div> 2611 2612<div id="p-4238" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2613 2614 2615 2616 2617 2618 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/training/php-certification-exam">My Zend Account</a></div> 2619 2620</div></div> 2621 </div> 2622 2623 </div> 2624</div> 2625 2626 </div> 2627 <div class="layout__region--col4 layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 2628 2629 2630<div id="p-4240" class="paragraph paragraph--type--menu-featured-content paragraph--view-mode--default menu-featured-content p-4 hidden lg:block"> 2631 <span class="font-bold my-4 leading-normal">2026 PHP Landscape Reportâ</span> 2632 2633 <div class="rounded-3xl overflow-hidden mx-auto !my-4"> 2634 2635 2636 2637 2638 2639 <div class="field field--name-field-image field--type-entity-reference field--label-hidden"><div> 2640 2641 2642 2643 2644 2645 2646 <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> 2647 <div class="visually-hidden">Image</div> 2648 <img loading="lazy" src="/sites/default/files/2026-04/image-php-landscape-report-26-mockup.jpeg" alt="2026 PHP Landscape Report" /> 2649 2650 2651 </div> 2652 2653</div> 2654</div> 2655 2656 </div> 2657 <span class="menu-link-list"> 2658 2659 2660 <div class="text-long"><p>The PHP Ecosystem Changes Quickly â Are You Keeping Up?</p> 2661</div> 2662 2663 </span> 2664 2665 <div class="menu-link-item mt-8"> 2666 2667 2668 2669 2670 2671 <div class="field field--name-field-link field--type-link field--label-hidden"><a href="/resources/php-landscape-report">Access Now ></a></div> 2672 2673 </div> 2674</div> 2675 2676 </div> 2677 </div> 2678</div> 2679 2680</div> 2681</div> 2682 </div> 2683 2684 </div> 2685 2686 2687 2688 </div> 2689 </div> 2690 2691 2692 </div> 2693 2694 </div> 2695 2696 </li> 2697 2698 2699 2700 <li 2701 class=" 2702 menu-item !m-0 list-none 2703 " 2704 > 2705 2706 2707 2708 <a href="/customers" class="px-3 py-2 inline-flex items-center gap-2 heading-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2" data-drupal-link-system-path="node/3">Customers</a> 2709 2710 2711 </li> 2712 2713 2714 2715 <li 2716 @mouseenter=" 2717 clearTimeout(closeTimer); 2718 activeItem = 5 2719 " 2720 @mouseleave=" 2721 closeTimer = setTimeout(() => activeItem = null, 150) 2722 " 2723 class=" 2724 menu-item !m-0 list-none 2725 relative " 2726 > 2727 2728 2729 2730 <button type="button" class="px-3 py-2 inline-flex items-center gap-2 heading-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 menu-item--has-panel" aria-haspopup="true" :aria-expanded="(activeItem === 5) ? "true" : "false"" @keydown.enter.prevent="activeItem = (activeItem === 5) ? null : 5" @ke
2730ydown.space.prevent="activeItem = (activeItem === 5) ? null : 5" @keydown.escape.stop="activeItem = null"> 2731 Company 2732 </button> 2733 2734 2735 <div 2736 x-show="activeItem === 5" 2737 x-cloak 2738 x-transition:enter="transition ease-out duration-200" 2739 x-transition:enter-start="opacity-0 translate-y-1" 2740 x-transition:enter-end="opacity-100 translate-y-0" 2741 x-transition:leave="transition ease-in-out duration-200" 2742 x-transition:leave-start="opacity-100 translate-y-0" 2743 x-transition:leave-end="opacity-0" 2744 @mouseenter="clearTimeout(closeTimer)" 2745 @mouseleave="closeTimer = setTimeout(() => activeItem = null, 150)" 2746 class=" 2747 absolute top-full -mt-px z-50 2748 left-0 min-w-[14rem] 2749 " 2750 > 2751 2752 <div class=" 2753 bg-white shadow-lg rounded-3xl overflow-hidden border border-t flex flex-col 2754 "> 2755 2756 <div class=" flex-1"> 2757 <div class="px-6 pt-6 pb-0"> 2758 2759 2760 <div class="menu_link_content menu-link-contentmain-menu-system view-mode-default menu-dropdown menu-dropdown-0 menu-type-default"> 2761 2762 2763 2764 2765 2766 <div class="field field--name-field-menu-panel field--type-entity-reference-revisions field--label-hidden"> 2767 <div> 2768 2769<div id="p-4241" class="paragraph paragraph--type--menu-panel paragraph--view-mode--default"> 2770 <div class="layout--one-column-menu w-md mx-auto"> 2771 <div class="layout__region--main layout__region w-full lg:hover:bg-p4-white transition duration-300 ease-in-out rounded-lg !mb-6"> 2772 2773 2774 2775<div id="p-4246" class="menu-link-list p-4 has-no-title"> 2776 <span class="hidden lg:inline"></span> 2777 <div class="menu-links-wrapper"> 2778 2779 2780 2781 2782 2783 <div class="field field--name-field-menu-links field--type-entity-reference-revisions field--label-hidden"> 2784 <div> 2785 2786<div id="p-4242" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2787 2788 2789 2790 2791 2792 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/about">About Perforce Zend</a></div> 2793 2794</div></div> 2795 <div> 2796 2797<div id="p-4243" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2798 2799 2800 2801 2802 2803 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/plugins">Download Plugins</a></div> 2804 2805</div></div> 2806 <div> 2807 2808<div id="p-4244" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2809 2810 2811 2812 2813 2814 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/downloads">Download Software</a></div> 2815 2816</div></div> 2817 <div> 2818 2819<div id="p-4245" class="paragraph paragraph--type--menu-link-item paragraph--view-mode--default menu-link-item"> 2820 2821 2822 2823 2824 2825 <div class="field field--name-field-menu-link field--type-link field--label-hidden"><a href="/partners">Partners</a></div> 2826 2827</div></div> 2828 </div> 2829 2830 </div> 2831</div> 2832 2833 </div> 2834 </div> 2835 2836</div> 2837</div> 2838 </div> 2839 2840 </div> 2841 2842 2843 2844 </div> 2845 </div> 2846 2847 2848 </div> 2849 2850 </div> 2851 2852 </li> 2853 </ul> 2854</nav> 2855 </nav> 2856<nav role="navigation" aria-labelledby="block-p4base-utilitynav-menu" id="block-p4base-utilitynav" data-region="header" class="py-8 px-2 text-[.9rem] [&_li]:mx-3 hidden md:flex items-center justify-end xl:order-2 order-1 ml-auto"> 2857 2858 2859 <h2 class="visually-hidden" id="block-p4base-utilitynav-menu">Utility Nav</h2> 2860 2861 2862 <div class="flex items-center gap-2"> 2863 2864 2865 <div x-data="{ open: false }" class="relative flex items-center"> 2866 <!-- Search Icon Button --> 2867 <button @click="open = true" class="hover:text-gray-300 dark:text-p4-teal focus:outline-none" id="search-button" aria-label="Open Site Search" title="Open Site Search"> 2868 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="w-6 h-6"> 2869 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-4.35-4.35M16 10a6 6 0 1 0-12 0 6 6 0 0 0 12 0z"/> 2870 </svg> 2871 </button> 2872 2873 <!-- Fullscreen Search Overlay --> 2874 <div x-show="open" x-transition.opacity x-cloak 2875 @click.away="open = false" 2876 @keydown.escape.window="open = false" 2877 x-init="$watch('open', value => { 2878 if (value) { 2879 $nextTick(() => { 2880 const input = document.querySelector('#search-modal-content input[type=text]'); 2881 if (input) input.focus(); 2882 }); 2883 } 2884 })" 2885 class="fixed inset-0 bg-p4-primary bg-opacity-90 flex items-center justify-center z-50"> 2886 2887 <div class="container p-4 relative"> 2888 <!-- Search Form Container -->
2889 <div id="search-modal-content" class="w-full flex items-center justify-center"> 2890 <div data-drupal-selector="views-exposed-form-sitewide-search-page-search" class="block views-exposed-form bef-exposed-form"> 2891 2892 <h2 class="h2">Sitewide Search</h2> 2893 2894 <form action="/search" method="get" id="views-exposed-form-sitewide-search-page-search" accept-charset="UTF-8"> 2895 2896 <div class="relative mx-auto"> 2897 <input 2898 type="text" 2899 name="keys" 2900 value="" 2901 placeholder="Search..." 2902 class="w-[800px] placeholder:text-p4-primary text-base text-p4-dark py-4 px-4 pr-12 border rounded-md focus:outline-none focus:ring-0 focus:border-transparent" 2903 /> 2904 2905 <button 2906 type="submit" 2907 name="" 2908 value="Apply" 2909 class="absolute top-1/2 right-8 transform -translate-y-1/2" 2910 aria-label="Search" 2911 > 2912 <svg class="w-6 h-6 text-p4-primary" id="icon_search" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> 2913 <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" 2914 d="M17.4 9.2c0 4.5-3.7 8.2-8.2 8.2S1 13.8 1 9.2 4.7 1 9.2 1s8.2 3.7 8.2 8.2ZM15 15l8 8"/> 2915 </svg> 2916 2917 </button> 2918 </div> 2919 2920 2921 2922 2923</form> 2924 </div> 2925 2926 <!-- Close Button --> 2927 <button @click="open = false" 2928 class="ml-8 w-10 h-10 bg-p4-teal text-p4-dark hover:text-black text-xl rounded-full flex items-center justify-center"> 2929 â 2930 </button> 2931 </div> 2932 </div> 2933 </div> 2934 </div> 2935 2936 2937 <div> 2938 <ul class="utility-nav list-none md:flex hidden items-center desktop-utility-nav"> 2939 2940 2941 2942 2943 2944 <li> 2945 2946 <a href="/downloads" class="utility-nav__link utility-nav__icon hover:opacity-70 w-5 h-5 block !max-w-none"> 2947 <div> 2948 2949 2950 2951 2952 2953 2954 <div class="field field--name-field-icon field--type-svg-image-field field--label-visually_hidden"> 2955 <div class="visually-hidden">SVG</div> 2956 <img width="25" height="25" alt="Downloads Icon" src="/sites/default/files/2026-04/icon-simple-download-bottom.svg" /> 2957 2958 </div> 2959 2960</div> 2961 2962 </a> 2963 2964 2965 </li> 2966 2967 2968 2969 <li> 2970 2971 <a href="https://portal.perforce.com/s/product/a3g5Y000006brwcQAA/zend" class="utility-nav__link utility-nav__icon hover:opacity-70 w-5 h-5 block !max-w-none"> 2972 <div> 2973 2974 2975 2976 2977 2978 2979 <div class="field field--name-field-icon field--type-svg-image-field field--label-visually_hidden"> 2980 <div class="visually-hidden">SVG</div> 2981 <img width="25" height="25" alt="Customer Portal Icon" src="/sites/default/files/2026-04/icon-simple-composition-window-man.svg" /> 2982 2983 </div> 2984 2985</div> 2986 2987 </a> 2988 2989 2990 </li> 2991 2992 2993 2994 <li> 2995 2996 2997 2998 2999 <a href="/products/zendphp-enterprise/trial" class="text-[1.15rem] underline xl1485:no-underline xl1485:p4-cta p4-cta--secondary xl1485:border xl1485:border-p4-primary xl1485:border-solid xl1485:!px-4 xl1485:py-2 xl1485:mt-0 xl1485:hover:!no-underline"> 3000 Free Trial 3001 </a> 3002 3003 3004 3005 3006 </li> 3007 3008 3009 3010 <li> 3011 3012 3013 3014 3015 3016 <a href="/pricing" class="utility-nav__link underline xl1485:no-underline xl1485:!px-4 xl1485:mt-0 xl1485:p4-cta text-[1.15rem]"> 3017 Request Pricing 3018 </a> 3019 3020 3021 3022 </li> 3023 3024 </ul> 3025 3026 3027 3028 3029 3030 3031 <li class="md:hidden block menu-item list-none border-gray-100 !mb-4 pl-4 text-[1.15rem] leading-[2.1rem] tracking-[.005rem] font-normal"> 3032 3033 <a href="/downloads" class="px-1 py-1"> 3034 Downloads 3035 </a> 3036 3037 3038 3039 <li class="md:hidden block menu-item list-none border-gray-100 !mb-4 pl-4 text-[1.15rem] leading-[2.1rem] tracking-[.005rem] font-normal"> 3040 3041 <a href="https://portal.perforce.com/s/product/a3g5Y000006brwcQAA/zend" class="px-1 py-1"> 3042 Customer Portal 3043 </a> 3044 3045 3046 3047 <li class="md:hidden block menu-item list-none border-gray-100 !mb-4 pl-4 text-[1.15rem] leading-[2.1rem] tracking-[.005rem] font-normal"> 3048 3049 3050 3051 3052 3053 3054 3055 3056<a href="/products/zendphp-enterprise/trial" class="p4-cta p4-cta--secondary text-[1.15rem] border border-p4-primary border-solid !px-4 py-2 mt-0 hover:!no-underline"> 3057 Free Trial 3058 </a> 3059 3060 3061 3062 3063 3064 <li class="md:hidden block menu-item list-none border-gray-100 !mb-4 pl-4 text-[1.15rem] leading-[2.1rem] tracking-[.005rem] font-normal"> 3065 3066 3067 3068 3069 3070 3071 3072 3073<a href="/pricing" class="p4-cta text-[1.15rem] !px-4 mt-0"> 3074 Request Pricing 3075 </a> 3076 3077 3078 3079 </div> 3080 </div> 3081</nav> 3082 3083 </div> 3084 3085 </div> 3086 3087 </header> 3088 3089<main role="main" class="main-content px-0 pt-[96px]"> 3090 3091 3092 3093 3094 <a id="main-content" tabindex="-1"></a> <div> 3095 3096<div id="block-p4base-headerfieldblock" class="block block-- w-full"> 3097 3098 3099 3100 3101 3102 3103 3104 <div class="field field--name-field-header field--type-entity-reference-revisions field--label-hidden"> 3105 <div> 3106 3107 3108<div id="p-2103" class="header-hero"> 3109 <div class="min-h-[500px] 3110relative p-4 lp-header text-left bg-cover bg-center"> 3111 <div class="sm:max-w-container mx-auto mb-10 mt-24"> 3112 <div class="md:flex mt-8 lp-header__content"> 3113 <div class=" sm:w-8/12 sm:pr-6"> 3114 <div class="flex justify-center flex-col h-full"> 3115 <div > 3116 3117 3118<h1 class="heading">
3119 PHP Runtimes for Mission-Critical Applications 3120 </h1> 3121 <p class=" max-w-3xl"> 3122 ZendPHP Runtimes Keep Your Apps Secure, Supported, and Compliant 3123 </p> 3124 <div class="cta-wrapper mt-6"> 3125 3126 3127 3128<a href="/products/zendphp-enterprise/trial" class="p4-cta"> 3129 Try Free for 21 Days 3130 </a> 3131 </div> 3132 </div> 3133 </div> 3134 </div> 3135 </div> 3136 </div> 3137</div> 3138</div> 3139</div> 3140 </div> 3141 3142 </div> 3143 3144 <div data-drupal-messages-fallback class="hidden"></div><div id="block-p4base-content" class="block"> 3145 3146 3147 3148<article class="node"> 3149 3150 3151 3152 3153 3154 <div> 3155 3156 3157 3158 <div class="subnav field field--name-field-subnav field--type-entity-reference field--label-hidden bg-p4-primary shadow-xl"> 3159 3160 3161 3162 3163 3164<ul class="menu max-w-container mx-auto list-none hidden md:flex"> 3165 3166<li class="menu__item flex leading-5 menu__item flex leading-5--active"> 3167 <a href="/products/zendphp-enterprise" class="menu__link menu__link--active is-active" data-drupal-link-system-path="node/454" aria-current="page">ZendPHP</a> 3168 </li> 3169 3170<li class="menu__item flex leading-5"> 3171 <a href="/products/zendhq" class="menu__link" data-drupal-link-system-path="node/166">ZendHQ</a> 3172 </li> 3173 3174<li class="menu__item flex leading-5"> 3175 <a href="/products/zendphp-enterprise/whats-new" class="menu__link" data-drupal-link-system-path="node/455">What's New</a> 3176 </li> 3177 3178<li class="menu__item flex leading-5"> 3179 <a href="/products/enterprise-web-platform" class="menu__link" data-drupal-link-system-path="node/7509">Zend Web Platform</a> 3180 </li> 3181 </ul> 3182 3183 3184<div x-data="{ 3185 mobileMenuOpen: false, 3186 toggleMenu() { 3187 this.mobileMenuOpen = !this.mobileMenuOpen; 3188 console.log(this.mobileMenuOpen); 3189 if (this.mobileMenuOpen) { 3190 document.body.style.overflow = 'hidden'; 3191 } else { 3192 3193 document.body.style.overflow = ''; 3194 } 3195 } 3196}" class="md:hidden"> 3197 <button 3198 @click="toggleMenu()" 3199 class="md:hidden w-full flex items-center px-8 py-4 rounded-3xl flex justify-between"> 3200 <span class="mr-2 text-white">Overview</span> 3201 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 6" class="w-4 h-4 text-p4-teal" fill="currentColor"> 3202 <path d="M0 0h10L5 6z" /> 3203 </svg> 3204 3205 </button> 3206 3207 <nav :class="mobileMenuOpen ? 'block' : 'hidden'" class="mega-menu mt-2 md:block bg-white"> 3208 <div class="fixed inset-0 bg-white z-[500] peer-checked:flex lg:hidden flex-col overflow-y-auto"> 3209 <!-- Close Button --> 3210 <div class="text-right px-4 py-2 border-b"> 3211 <label @click="toggleMenu()" class="cursor-pointer text-xl">â</label> 3212 </div> 3213 <!-- Menu Items --> 3214 <ul class="flex-1 flex flex-col gap-y-4 px-4 py-6 list-none"> 3215 <li class="mega-menu__item list-none"> 3216 <!-- Top-Level Link Without Dropdown --> 3217 <a href="/products/zendphp-enterprise" class="block py-2 px-4 font-medium text-lg hover:text-primary"> 3218 ZendPHP 3219 </a> 3220 </li> 3221 <li class="mega-menu__item list-none"> 3222 <!-- Top-Level Link Without Dropdown --> 3223 <a href="/products/zendhq" class="block py-2 px-4 font-medium text-lg hover:text-primary"> 3224 ZendHQ 3225 </a> 3226 </li> 3227 <li class="mega-menu__item list-none"> 3228 <!-- Top-Level Link Without Dropdown --> 3229 <a href="/products/zendphp-enterprise/whats-new" class="block py-2 px-4 font-medium text-lg hover:text-primary"> 3230 What's New 3231 </a> 3232 </li> 3233 <li class="mega-menu__item list-none"> 3234 <!-- Top-Level Link Without Dropdown --> 3235 <a href="/products/enterprise-web-platform" class="block py-2 px-4 font-medium text-lg hover:text-primary"> 3236 Zend Web Platform 3237 </a> 3238 </li> 3239 </ul> 3240 </div> 3241 </nav> 3242</div></div> 3243 3244 3245 3246 3247 3248 <div class="field field--name-field-content field--type-entity-reference-revisions field--label-hidden"> 3249 <div> 3250 3251<div id="p-2100" class="paragraph--type--section paragraph--view-mode--default"> 3252 3253<div class="layout layout--one-column max-w-container mx-auto"> 3254 <div class="main-region p-4"> 3255 3256 3257<div id="p-3649" class="paragraph--type--section paragraph--view-mode--default"> 3258 3259<div class="layout layout--two-column-50-50"> 3260 <div class="grid grid-cols-1 md:grid-cols-2 gap-4 max-w-container mx-auto"> 3261 <div class="layout__region layout__region--col1"> 3262 3263 3264<div id="p-3650" class="rich-text p-4"> 3265 <h2>Rest Easy With Secure and Supported PHP Runtimes</h2> 3266 3267 3268 <div class="text-long"><div><div class="photoswipe-gallery"><p>Using a supported PHP version is crucial to keep mission-critical applications secure. For many companies, including those in highly regulated industries, frequent PHP upgrades arenât feasible. </p><p>To keep your mission-critical PHP applications secure and performant, Zend offers fully supported PHP runtimes. Hereâs whatâs included: </p><ul><li> <strong>PHP Long Term Support (LTS)</strong> for PHP 7.2, 7.3, 7.4, and 8.1</li><li><strong>Backported patches and bug fixes </strong>to keep web apps secure and compliant</li><li><strong>24/7/365 technical support </strong>from global PHP experts</li><li><strong>ZendHQ extension, </strong>adding simplified scalability and observability </li></ul><p><strong>Try ZendPHP alongside ZendHQ free for 21 days to see how they fit within your infrastru
3268cture â no commitment required.</strong> </p><p><a class="p4-cta" href="https://www.zend.com/products/zendphp-enterprise/trial">Try ZendPHP Free</a> <a class="p4-cta p4-cta--secondary" href="https://help.zend.com/zendphp/current/content/home.htm">ZendPHP Installation Documentation</a> </p></div></div></div> 3269 3270</div> 3271 3272 </div> 3273 <div class="layout__region layout__region--col2"> 3274 3275<div id="p-3651" class="paragraph paragraph--type--image paragraph--view-mode--default overflow-hidden"> 3276 <div class="text-center"> 3277 <div> 3278 3279 3280 3281 3282 3283 3284 <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> 3285 <div class="visually-hidden">Image</div> 3286 <img loading="lazy" src="/sites/default/files/2025-06/image-web-znd-php-hosting-providers-animated.svg" alt="PHP and hosting provider icons." /> 3287 3288 3289 </div> 3290 3291</div> 3292 3293 3294 </div> 3295</div> 3296 3297 </div> 3298 </div> 3299</div> 3300 3301</div> 3302 3303 </div> 3304 </div> 3305 3306</div> 3307</div> 3308 <div> 3309 3310 3311<div id="p-3640" class="compound-third-party-review-caro"> 3312 3313 3314 3315<section class="my-20"> 3316 <div class="text-center px-4"> 3317 3318 3319<h2 class="heading"> 3320 Global Enterprises Choose Zend 3321 </h2> 3322 </div> 3323 3324 <div class="text-center"> 3325 3326 3327 <div class="text-long"><div><div class="photoswipe-gallery"><p>Zend is a top choice for PHP technologies, services, and support. Contact us today and discover what we can do for your infrastructure. </p></div></div></div> 3328 3329 </div> 3330 3331 <!-- Main Carousel Wrapper --> 3332 <div x-data="thirdpartycarouselData([{"id":"3637","rating":0,"quote":"\" Zend is a big name in the PHP ecosystem, and that made choosing their services a straightforward decision. Their deep PHP expertise and easy-to-integrate LTS builds streamlined our processes \u2014 allowing us to deliver value and a stress-free experience to our customers.\"&nbsp;","reviewer_name":"Philipp Strangh\u00f6ner ","company_name":"mittwald ","job_title":"Product Owner","bio_image":null,"review_link":"internal:\/customers\/case-studies\/mittwald","review_link_text":"Read Case Study","textColor":"","bg_color":"","bg_image":"\/sites\/default\/files\/2025-05\/image-web-testimonial-light-background2.svg","review_description":""},{"id":"3638","rating":0,"quote":"\u201c[Zend] allowed us to focus on developing new features that will improve user satisfaction and further strengthen our marketplace experience, while still modernizing our application infrastructure.\"&nbsp;","reviewer_name":"Henry Searle","company_name":"Bark.com ","job_title":"Principal Engineer and Head of Architecture","bio_image":null,"review_link":"internal:\/customers\/case-studies\/barkcom","review_link_text":"Read Case Study","textColor":"","bg_color":"","bg_image":"\/sites\/default\/files\/2025-05\/image-web-testimonial-light-background4.svg","review_description":""},{"id":"3639","rating":0,"quote":"\"Contracting Zend Professional Services provided us access to the exact specialized experts that we needed to meet our customer timeline obligations and to provide us with the confidence that our PHP upgrade was performed correctly.\"&nbsp;","reviewer_name":"Vladislav Vicentijevic","company_name":"Willowglen Systems Inc. ","job_title":"Unisen Project Manager","bio_image":null,"review_link":"internal:\/customers\/case-studies\/willowglen-systems","review_link_text":"Read Case Study","textColor":"","bg_color":"","bg_image":"\/sites\/default\/files\/2025-05\/image-web-testimonial-light-background3.svg","review_description":""}])" class="relative max-w-container mx-auto mt-6 w-full overflow-hidden"> 3333 3334 <!-- Carousel Track Wrapper --> 3335 <div class="w-full overflow-hidden"> 3336 3337 <!-- Review Carousel Container -->
3338 <div class="flex w-full transition-transform ease-out duration-700" x-ref="carousel" 3339 :class="{ 3340 'translate-x-0': activeSlide === 0, 3341 '-translate-x-full': activeSlide === 1, 3342 '-translate-x-[200%]': activeSlide === 2, 3343 '-translate-x-[300%]': activeSlide === 3, 3344 '-translate-x-[400%]': activeSlide === 4, 3345 '-translate-x-[500%]': activeSlide === 5 3346 }" 3347 > 3348 <!-- Loop through Reviews --> 3349 <template x-for="(review, index) in reviews" :key="index"> 3350 <div class="flex-none w-full shrink-0"> 3351 <!-- Single Review Component --> 3352 <div 3353 x-bind:id="'p-' + review.id" 3354 :class="review.bg_color + ' w-full p-4 sm:p-6 md:p-8 rounded-3xl overflow-hidden min-h-[400px] place-content-center'" 3355 > 3356 3357 <!-- Star Rating Section --> 3358 <template x-if="review.rating > 0"> 3359 <div class="flex mb-8 sm:mb-6 justify-center items-center space-x-4"> 3360 <template x-for="star in 5"> 3361 <span :class="star <= review.rating ? 'text-p4-cyan' : 'text-p4-white'" class="star text-4xl sm:text-5xl md:text-6xl">★</span> 3362 </template> 3363 </div> 3364 </template> 3365 <!-- Quote Section --> 3366 <div :class="`${review.textColor} quote text-lg mb-8 text-center`"> 3367 <blockquote class="text-2xl text-center" :class="`${review.textColor}`" x-html="review.quote"></blockquote> 3368 </div> 3369 3370 <!-- Review Link --> 3371 <div :class="`${review.textColor} reviewer-details flex items-center justify-center text-center pt-6`"> 3372 <template x-if="review.review_link"> 3373 <span class="mr-2" x-text="review.review_description"></span> 3374 </template> 3375 <template x-if="review.review_link"> 3376 <a :href="review.review_link.startsWith('internal:') ? review.review_link.replace('internal:', '')
3376: review.review_link" 3377 :target="review.review_link.startsWith('http') ? '_blank' : '_self'" 3378 class="button p4-cta p4-cta--secondary" 3379 rel="noopener noreferrer"> 3380 <span x-text="review.review_link_text"></span> 3381 </a> 3382 3383 </template> 3384 </div> 3385 <!-- Company and Reviewer Details --> 3386 <div :class="`${review.textColor} flex flex-col sm:flex-row items-center justify-center text-center mt-4 pt-2`"> 3387 <template x-if="review.bio_image"> 3388 <img :src="review.bio_image" :alt="`${review.reviewer_name} photo`" class="bio-image w-12 h-12 sm:w-16 sm:h-16 rounded-3xl mb-2 sm:mb-0 sm:mr-4" /> 3389 </template> 3390 <div class="flex flex-col sm:flex-row items-center space-y-2 sm:space-y-0 sm:space-x-2"> 3391 <span class="company-name" x-text="getReviewerDetails(review)"></span> 3392 </div> 3393 </div> 3394 </div> 3395 <!-- End of Single Review Component --> 3396 </div> 3397 </template> 3398 </div> 3399 </div> 3400 3401 <!-- Navigation Arrows and Buttons for Slides --> 3402 <div class="flex justify-center items-center mt-6 mb-4"> 3403 <!-- Previous Arrow Button --> 3404 <button @click="prevSlide()" class="mr-4 bg-p4-teal rounded-3xl hover:bg-p4-cyan transition p-2" aria-label="Previous slide"> 3405 <svg xmlns="http://www.w3.org/2000/svg" class="w-3 h-3 hover:text-p4-dark transition-colors duration-300 transform rotate-180" fill="currentColor" viewBox="0 0 100 100"> 3406 <polygon points="20,0 100,50 20,100"></polygon> 3407 </svg> 3408 </button> 3409 3410 <!-- Pagination Dots --> 3411 <div class="flex"> 3412 <template x-for="(review, index) in reviews" :key="index"> 3413 <button @click="activeSlide = index" 3414 :class="activeSlide === index ? 'bg-p4-teal text-white' : 'bg-p4-dark hover:bg-p4-cyan hover:text-white'" 3415 class="mx-1 w-2 h-2 sm:w-3 sm:h-3 rounded-3xl focus:outline-none transition-all duration-300" 3416 :aria-label="`Go to slide ${index + 1}`"></button> 3417 </template> 3418 </div> 3419 3420 <!-- Next Arrow Button --> 3421 <button @click="nextSlide()" class="ml-4 bg-p4-teal rounded-3xl hover:bg-p4-cyan transition p-2" aria-label="Next slide"> 3422 <svg xmlns="http://www.w3.org/2000/svg" class="w-3 h-3 hover:text-p4-dark transition-colors duration-300" fill="currentColor" viewBox="0 0 100 100"> 3423 <polygon points="20,0 100,50 20,100"></polygon> 3424 </svg> 3425 </button> 3426 </div> 3427 3428 </div> 3429</section> 3430</div></div> 3431 <div> 3432 3433<div id="p-3420" class="paragraph--type--section paragraph--view-mode--default"> 3434 3435<div class="layout layout--one-column max-w-container mx-auto"> 3436 <div class="main-region p-4"> 3437 3438 3439<div id="p-3647" class="tabbed-accordion-with-image"> 3440 3441<div class="accordion-with-image px-8 py-[3.75rem] max-w-container mx-auto"> 3442 <div class="w-full"> 3443 <div class="mb-6"> 3444 3445 3446<h2 class="heading"> 3447 PHP Versions, OS Requirements, and LTS Options 3448 </h2> 3449 </div> 3450 <div class="mb-2"> 3451 3452 3453<h4 class="heading"> 3454 3455 </h4> 3456 </div> 3457 </div> 3458 <div x-data="{ 3459 tabItemCounts: [1,1,1], 3460 activeTab: '', 3461 activeItemId: '', 3462 getHashTab(isActiveItemId) { 3463 const accordionHash = window.location.hash.replace(/^#/, ''); 3464 const paragraphId = '3647'; 3465 3466 if( !accordionHash ) { 3467 return ``; 3468 } 3469 3470 const [paramParagraphId, paramAccordTabId, paramAccordItemId] = accordionHash.split('_'); 3471 const accordTabId = parseInt(paramAccordTabId, 10); 3472 let accordItemId; 3473 if( paramAccordItemId !== undefined && paramAccordItemId !== '' ) { 3474 accordItemId = parseInt(paramAccordItemId, 10); 3475 } 3476 if (Number.isNaN(accordTabId) || accordTabId < 0 || accordTabId >= 3 3477 || (accordItemId !== undefined && Number.isNaN(accordItemId)) 3478 || (accordItemId >= this.tabItemCounts[accordTabId]) || paramParagraphId != paragraphId ) { 3479 return ``; 3480 } 3481 return isActiveItemId && accordItemId ? paramAccordItemId : `${paramParagraphId}_${paramAccordTabId}` ; 3482 }, 3483 scrollToTab(id) { 3484 const [paramParagraphId, paramAccordTabId, paramAccordItemId] = id.split('_'); 3485 const paragraphId = `p-${paramParagraphId}` 3486 const el = document.getElementById(paragraphId); 3487 if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' }); 3488 } 3489 }" 3490 x-init=" 3491 activeTab = getHashTab(); 3492 activeItemId = getHashTab(true); 3493 if (activeItemId == activeTab) { 3494 activeItemId = 0; 3495 } 3496 if(activeTab) { 3497 $nextTick(() => scrollToTab(activeTab)); 3498 } else { 3499 activeTab = '3647_0' 3500 } 3501 " 3502 @hashchange.window=" 3503 activeTab = getHashTab(); 3504 activeItemId = getHashTab(true); 3505 if (activeItemId == activeTab) { 3506 activeItemId = 0; 3507 } 3508 window.location.reload(); 3509 " 3510 class=""> 3511 3512 <!-- mobile tabs --> 3513 <div class="block md:hidden w-full md:p-4 mb-4"> 3514 <label for="mobile-tabs" class="sr-only">Select Tab</label> 3515 <select 3516 id="mobile-tabs" 3517 @change="activeTab = $event.target.value" 3518 class="w-full p-2 border rounded-3xl" 3519 > 3520 <option value="3647_0" :selected="activeTab == '3647_0'"> 3521 PHP Versions 3522 </option> 3523 <option value="3647_1" :selected="activeTab == '3647_1'"> 3524 OS Requirements 3525 </option> 3526 <option value="3647_2" :selected="activeTab == '3647_2'"> 3527 Zend PHP LTS 3528 </option> 3529 </select> 3530 </div> 3531 3532 3533 <div class="hidden md:block w-full py-4 md:mr-4"> 3534 <!-- Tabs --> 3535 <ul class="pl-0 list-none flex gap-4 items-start flex-wrap"> 3536 <li class="pl-0 list-none"> 3537 <button 3538 id="tab-3647_0" 3539 @click="activeTab = '3647_0'" 3540 class="px-4 py-2 rounded-3xl leading-none hover:text-white hover:bg-p4-primary h-full [.bg-p4-primary_&]:border-p4-cyan" 3541 :class="{ 3542 'text-white bg-p4-primary [.bg-p4-primary_&]:bg-p4-cyan': activeTab == '3647_0', 3543 'border border-p4-primary [.bg-p4-primary_&]:border-p4-cyan': activeTab != '3647_0' 3544 }" 3545 > 3546 PHP Versions 3547 </button> 3548 </li> 3549 <li class="pl-0 list-none"> 3550 <button 3551 id="tab-3647_1" 3552 @click="activeTab = '3647_1'" 3553 class="px-4 py-2 rounded-3xl leading-none hover:text-white hover:bg-p4-primary h-full [.bg-p4-primary_&]:border-p4-cyan" 3554 :class="{ 3555 'text-white bg-p4-primary [.bg-p4-primary_&]:bg-p4-cyan': activeTab == '3647_1', 3556 'border border-p4-primary [.bg-p4-primary_&]:border-p4-cyan': activeTab != '3647_1' 3557 }" 3558 > 3559 OS Requirements 3560 </button> 3561 </li> 3562 <li class="pl-0 list-none"> 3563 <button 3564 id="tab-3647_2" 3565 @click="activeTab = '3647_2'" 3566 class="px-4 py-2 rounded-3xl leading-none hover:text-white hover:bg-p4-primary h-full [.bg-p4-primary_&]:border-p4-cyan" 3567 :class="{ 3568 'text-white bg-p4-primary [.bg-p4-primary_&]:bg-p4-cyan': activeTab == '3647_2', 3569 'border border-p4-primary [.bg-p4-primary_&]:border-p4-cyan': activeTab != '3647_2' 3570 }" 3571 > 3572 Zend PHP LTS 3573 </button> 3574 </li> 3575 </ul> 3576 </div> 3577 3578 <div> 3579 <div id="3647_0" x-show="activeTab == '3647_0'" x-cloak x-data="{ activeItem: (activeTab == '3647_0' ? `${activeTab}_${activeItemId}` : '3647_0_0') }" x-bind:data-active-item="activeItem" class="scroll-pt-6"> 3580 <div class="flex flex-col md:flex-row"> 3581 <div class="accordions w-full md:w-5/12 py-4 md:mr-4"> 3582 3583 3584<div x-data="{ 3585 accordionTabId: '3647_0', 3586 }" 3587 @set-accordion-meta.window=" 3588 if (!accordionTabId && $event.detail.tabId) { 3589 accordionTabId = $event.detail.tabId; 3590 } 3591 if (!activeItem) { 3592 activeItem = $event.detail.activeItem || (accordionTabId ? `${accordionTabId}_0` : ''); 3593 } 3594 " 3595 :activeItem="activeItem" 3596 :accordionTabId="accordionTabId" class=" border-t w-full border-p4-gray-200"> 3597 <div class="w-full">
3598 <div x-data="{ copied: false }"> 3599 <button type="button" 3600 class="flex w-full items-center justify-between gap-4 py-4 px-4 text-left" 3601 @click="activeItem = activeItem === `${ accordionTabId }_0` ? -1 : `${ accordionTabId }_0`" 3602 :class="activeItem === `${ accordionTabId }_0` ? 'expanded text-p4-primary [.text-p4-white_&]:text-p4-cyan' : 'font-medium'" 3603 :aria-expanded="activeItem === `${ accordionTabId }_0` ? 'true' : 'false'"> 3604 <div> 3605 <span> 3606 PHP Versions 3607 <span x-show="activeItem === `${ accordionTabId }_0` && 1 > 1" 3608 x-transition:enter="transition ease-out duration-200" 3609 @click.stop=" 3610 const url = new URL(window.location); 3611 url.hash = activeItem; 3612 navigator.clipboard.writeText(url.toString()) 3613 .then(() => { 3614 copied = true 3615 setTimeout(() => copied = false, 2000); 3616 }) 3617 .catch(() => {}); 3618 " 3619 title="Copy accordion link to clipboard" 3620 > 3621 <svg x-show="!copied" x-transition:enter="transition ease-out duration-200" class="accordion-link mt-1 ml-1" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path d="M9.16488 17.6505C8.92513 17.8743 8.73958 18.0241 8.54996 18.1336C7.62175 18.6695 6.47816 18.6695 5.54996 18.1336C5.20791 17.9361 4.87912 17.6073 4.22153 16.9498C3.56394 16.2922 3.23514 15.9634 3.03767 15.6213C2.50177 14.6931 2.50177 13.5495 3.03767 12.6213C3.23514 12.2793 3.56394 11.9505 4.22153 11.2929L7.04996 8.46448C7.70755 7.80689 8.03634 7.47809 8.37838 7.28062C9.30659 6.74472 10.4502 6.74472 11.3784 7.28061C11.7204 7.47809 12.0492 7.80689 12.7068 8.46448C13.3644 9.12207 13.6932 9.45086 13.8907 9.7929C14.4266 10.7211 14.4266 11.8647 13.8907 12.7929C13.7812 12.9825 13.6314 13.1681 13.4075 13.4078M10.5919 10.5922C10.368 10.8319 10.2182 11.0175 10.1087 11.2071C9.57284 12.1353 9.57284 13.2789 10.1087 14.2071C10.3062 14.5492 10.635 14.878 11.2926 15.5355C11.9502 16.1931 12.279 16.5219 12.621 16.7194C13.5492 17.2553 14.6928 17.2553 15.621 16.7194C15.9631 16.5219 16.2919 16.1931 16.9495 15.5355L19.7779 12.7071C20.4355 12.0495 20.7643 11.7207 20.9617 11.3787C21.4976 10.4505 21.4976 9.30689 20.9617 8.37869C20.7643 8.03665 20.4355 7.70785 19.7779 7.05026C19.1203 6.39267 18.7915 6.06388 18.4495 5.8664C17.5212 5.3305 16.3777 5.3305 15.4495 5.8664C15.2598 5.97588 15.0743 6.12571 14.8345 6.34955" stroke="#4c00ff" stroke-width="2" stroke-linecap="round"></path> </g></svg> 3622 <span x-show="copied" class="text-xs text-p4-gray-300"> 3623 <svg x-transition:enter="transition ease-out duration-200" class="accordion-link mt-1 ml-1 cursor-default" width="20" id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 20 20"><path d="M10,20C4.486,20,0,15.515,0,10S4.486,0,10,0s10,4.486,10,10-4.486,10-10,10ZM10,1.852C5.507,1.852,1.852,5.507,1.852,10s3.655,8.148,8.148,8.148,8.148-3.655,8.148-8.148S14.493,1.852,10,1.852Z" fill="#4c00ff"/><path d="M9.463,14.292l-3.563-3.563c-.343-.343-.343-.898,0-1.241s.898-.343,1.241,0l2.089,2.089,3.533-5.016c.278-.396.826-.492,1.222-.212.396.279.491.826.212,1.222l-4.733,6.721Z" fill="#4c00ff"/></svg> 3624 Link Copied! 3625 </span> 3626 </span> 3627 </span> 3628 </div> 3629 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" 3630 fill="none" stroke-width="2" stroke="currentColor" 3631 class="size-5 shrink-0 transition" 3632 :class="activeItem === `${ accordionTabId }_0` ? 'rotate-180' : ''"> 3633 <path stroke-linecap="round" stroke-linejoin="round" 3634 d="M19.5 8.25l-7.5 7.5-7.5-7.5"/> 3635 </svg> 3636 </button> 3637 3638 <div class="accordion-content grid overflow-hidden transition-all duration-300" 3639 :class="activeItem === `${ accordionTabId }_0` 3640 ? 'grid-rows-[1fr] opacity-100' 3641 : 'grid-rows-[0fr] opacity-0'" 3642 role="region"> 3643 <div class="min-h-0"> 3644 <div class="sm:text-base text-pretty pb-6 px-4 "> 3645 3646 3647 <div class="text-long"><div><div class="photoswipe-gallery"><ul><li>PHP 7.2 (LTS) </li><li>PHP 7.3 (LTS) </li><li>PHP 7.4 (LTS) </li><li>PHP 8.1 (LTS) </li><li>PHP 8.2 </li><li>PHP 8.3 </li><li>PHP 8.4 </li><li>PHP 8.5 </li></ul></div></div></div> 3648 3649 </div> 3650 </div> 3651 </div> 3652 3653 <hr class="border-p4-gray-200 border-t" /> 3654 </div> 3655 </div> 3656 </div> 3657 </div> 3658 <div class="md:w-7/12 pt-10"> 3659 <div> 3660 3661 3662 3663 3664 3665 3666 <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> 3667 <div class="visually-hidden">Image</div> 3668 <img loading="lazy" src="/sites/default/files/2025-06/image-web-znd-php-training-checklist-animated.svg" alt="PHP checklist." /> 3669 3670 3671 </div> 3672 3673</div> 3674 3675 </div> 3676 </div> 3677 </div> 3678 <div id="3647_1" x-show="activeTab == '3647_1'" x-cloak x-data="{ activeItem: (activeTab == '3647_1' ? `${activeTab}_${activeItemId}` : '3647_1_0') }" x-bind:data-active-item="activeItem" class="scroll-pt-6"> 3679 <div class="flex flex-col md:flex-row"> 3680 <div class="accordions w-full md:w-5/12 py-4 md:mr-4"> 3681 3682 3683<div x-data="{ 3684 accordionTabId: '3647_1', 3685 }" 3686 @set-accordion-meta.window=" 3687 if (!accordionTabId && $event.detail.tabId) { 3688 accordionTabId = $event.detail.tabId; 3689 } 3690 if (!activeItem) { 3691 activeItem = $event.detail.activeItem || (accordionTabId ? `${accordionTabId}_0` : ''); 3692 } 3693 " 3694 :activeItem="activeItem" 3695 :accordionTabId="accordionTabId" class=" border-t w-full border-p4-gray-200"> 3696 <div class="w-full">
3697 <div x-data="{ copied: false }"> 3698 <button type="button" 3699 class="flex w-full items-center justify-between gap-4 py-4 px-4 text-left" 3700 @click="activeItem = activeItem === `${ accordionTabId }_0` ? -1 : `${ accordionTabId }_0`" 3701 :class="activeItem === `${ accordionTabId }_0` ? 'expanded text-p4-primary [.text-p4-white_&]:text-p4-cyan' : 'font-medium'" 3702 :aria-expanded="activeItem === `${ accordionTabId }_0` ? 'true' : 'false'"> 3703 <div> 3704 <span> 3705 OS Requirements 3706 <span x-show="activeItem === `${ accordionTabId }_0` && 1 > 1" 3707 x-transition:enter="transition ease-out duration-200" 3708 @click.stop=" 3709 const url = new URL(window.location); 3710 url.hash = activeItem; 3711 navigator.clipboard.writeText(url.toString()) 3712 .then(() => { 3713 copied = true 3714 setTimeout(() => copied = false, 2000); 3715 }) 3716 .catch(() => {}); 3717 " 3718 title="Copy accordion link to clipboard" 3719 > 3720 <svg x-show="!copied" x-transition:enter="transition ease-out duration-200" class="accordion-link mt-1 ml-1" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path d="M9.16488 17.6505C8.92513 17.8743 8.73958 18.0241 8.54996 18.1336C7.62175 18.6695 6.47816 18.6695 5.54996 18.1336C5.20791 17.9361 4.87912 17.6073 4.22153 16.9498C3.56394 16.2922 3.23514 15.9634 3.03767 15.6213C2.50177 14.6931 2.50177 13.5495 3.03767 12.6213C3.23514 12.2793 3.56394 11.9505 4.22153 11.2929L7.04996 8.46448C7.70755 7.80689 8.03634 7.47809 8.37838 7.28062C9.30659 6.74472 10.4502 6.74472 11.3784 7.28061C11.7204 7.47809 12.0492 7.80689 12.7068 8.46448C13.3644 9.12207 13.6932 9.45086 13.8907 9.7929C14.4266 10.7211 14.4266 11.8647 13.8907 12.7929C13.7812 12.9825 13.6314 13.1681 13.4075 13.4078M10.5919 10.5922C10.368 10.8319 10.2182 11.0175 10.1087 11.2071C9.57284 12.1353 9.57284 13.2789 10.1087 14.2071C10.3062 14.5492 10.635 14.878 11.2926 15.5355C11.9502 16.1931 12.279 16.5219 12.621 16.7194C13.5492 17.2553 14.6928 17.2553 15.621 16.7194C15.9631 16.5219 16.2919 16.1931 16.9495 15.5355L19.7779 12.7071C20.4355 12.0495 20.7643 11.7207 20.9617 11.3787C21.4976 10.4505 21.4976 9.30689 20.9617 8.37869C20.7643 8.03665 20.4355 7.70785 19.7779 7.05026C19.1203 6.39267 18.7915 6.06388 18.4495 5.8664C17.5212 5.3305 16.3777 5.3305 15.4495 5.8664C15.2598 5.97588 15.0743 6.12571 14.8345 6.34955" stroke="#4c00ff" stroke-width="2" stroke-linecap="round"></path> </g></svg> 3721 <span x-show="copied" class="text-xs text-p4-gray-300"> 3722 <svg x-transition:enter="transition ease-out duration-200" class="accordion-link mt-1 ml-1 cursor-default" width="20" id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 20 20"><path d="M10,20C4.486,20,0,15.515,0,10S4.486,0,10,0s10,4.486,10,10-4.486,10-10,10ZM10,1.852C5.507,1.852,1.852,5.507,1.852,10s3.655,8.148,8.148,8.148,8.148-3.655,8.148-8.148S14.493,1.852,10,1.852Z" fill="#4c00ff"/><path d="M9.463,14.292l-3.563-3.563c-.343-.343-.343-.898,0-1.241s.898-.343,1.241,0l2.089,2.089,3.533-5.016c.278-.396.826-.492,1.222-.212.396.279.491.826.212,1.222l-4.733,6.721Z" fill="#4c00ff"/></svg> 3723 Link Copied! 3724 </span> 3725 </span> 3726 </span> 3727 </div> 3728 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" 3729 fill="none" stroke-width="2" stroke="currentColor" 3730 class="size-5 shrink-0 transition" 3731 :class="activeItem === `${ accordionTabId }_0` ? 'rotate-180' : ''"> 3732 <path stroke-linecap="round" stroke-linejoin="round" 3733 d="M19.5 8.25l-7.5 7.5-7.5-7.5"/> 3734 </svg> 3735 </button> 3736 3737 <div class="accordion-content grid overflow-hidden transition-all duration-300" 3738 :class="activeItem === `${ accordionTabId }_0` 3739 ? 'grid-rows-[1fr] opacity-100' 3740 : 'grid-rows-[0fr] opacity-0'" 3741 role="region"> 3742 <div class="min-h-0"> 3743 <div class="sm:text-base text-pretty pb-6 px-4 "> 3744 3745 3746 <div class="text-long"><div><div class="photoswipe-gallery"><ul><li>Alpine Linux 3.20, 3.22</li><li>Amazon Linux 2</li><li>Debian 11, 12, 13</li><li>IBM i 7.4, 7.5, 7.6</li><li>RHEL / CentOS / Oracle Linux 7</li><li>RHEL / AlmaLinux / Oracle Linux / Rocky Linux 8, 9, 10</li><li>Ubuntu 20.04, 22.04, 24.04</li><li>Windows </li></ul></div></div></div> 3747 3748 </div> 3749 </div> 3750 </div> 3751 3752 <hr class="border-p4-gray-200 border-t" /> 3753 </div> 3754 </div> 3755 </div> 3756 </div> 3757 <div class="md:w-7/12 pt-10"> 3758 <div> 3759 3760 3761 3762 3763 3764 3765 <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> 3766 <div class="visually-hidden">Image</div> 3767 <img loading="lazy" src="/sites/default/files/2025-06/image-web-znd-checklist-requirements-animated.svg" alt="Checklist with expert and network icons." /> 3768 3769 3770 </div> 3771 3772</div> 3773 3774 </div> 3775 </div> 3776 </div>
3777 <div id="3647_2" x-show="activeTab == '3647_2'" x-cloak x-data="{ activeItem: (activeTab == '3647_2' ? `${activeTab}_${activeItemId}` : '3647_2_0') }" x-bind:data-active-item="activeItem" class="scroll-pt-6"> 3778 <div class="flex flex-col md:flex-row"> 3779 <div class="accordions w-full md:w-5/12 py-4 md:mr-4"> 3780 3781 3782<div x-data="{ 3783 accordionTabId: '3647_2', 3784 }" 3785 @set-accordion-meta.window=" 3786 if (!accordionTabId && $event.detail.tabId) { 3787 accordionTabId = $event.detail.tabId; 3788 } 3789 if (!activeItem) { 3790 activeItem = $event.detail.activeItem || (accordionTabId ? `${accordionTabId}_0` : ''); 3791 } 3792 " 3793 :activeItem="activeItem" 3794 :accordionTabId="accordionTabId" class=" border-t w-full border-p4-gray-200"> 3795 <div class="w-full"> 3796 <div x-data="{ copied: false }"> 3797 <button type="button" 3798 class="flex w-full items-center justify-between gap-4 py-4 px-4 text-left" 3799 @click="activeItem = activeItem === `${ accordionTabId }_0` ? -1 : `${ accordionTabId }_0`" 3800 :class="activeItem === `${ accordionTabId }_0` ? 'expanded text-p4-primary [.text-p4-white_&]:text-p4-cyan' : 'font-medium'" 3801 :aria-expanded="activeItem === `${ accordionTabId }_0` ? 'true' : 'false'"> 3802 <div> 3803 <span> 3804 Zend PHP LTS 3805 <span x-show="activeItem === `${ accordionTabId }_0` && 1 > 1" 3806 x-transition:enter="transition ease-out duration-200" 3807 @click.stop=" 3808 const url = new URL(window.location); 3809 url.hash = activeItem; 3810 navigator.clipboard.writeText(url.toString()) 3811 .then(() => { 3812 copied = true 3813 setTimeout(() => copied = false, 2000); 3814 }) 3815 .catch(() => {}); 3816 " 3817 title="Copy accordion link to clipboard" 3818 > 3819 <svg x-show="!copied" x-transition:enter="transition ease-out duration-200" class="accordion-link mt-1 ml-1" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path d="M9.16488 17.6505C8.92513 17.8743 8.73958 18.0241 8.54996 18.1336C7.62175 18.6695 6.47816 18.6695 5.54996 18.1336C5.20791 17.9361 4.87912 17.6073 4.22153 16.9498C3.56394 16.2922 3.23514 15.9634 3.03767 15.6213C2.50177 14.6931 2.50177 13.5495 3.03767 12.6213C3.23514 12.2793 3.56394 11.9505 4.22153 11.2929L7.04996 8.46448C7.70755 7.80689 8.03634 7.47809 8.37838 7.28062C9.30659 6.74472 10.4502 6.74472 11.3784 7.28061C11.7204 7.47809 12.0492 7.80689 12.7068 8.46448C13.3644 9.12207 13.6932 9.45086 13.8907 9.7929C14.4266 10.7211 14.4266 11.8647 13.8907 12.7929C13.7812 12.9825 13.6314 13.1681 13.4075 13.4078M10.5919 10.5922C10.368 10.8319 10.2182 11.0175 10.1087 11.2071C9.57284 12.1353 9.57284 13.2789 10.1087 14.2071C10.3062 14.5492 10.635 14.878 11.2926 15.5355C11.9502 16.1931 12.279 16.5219 12.621 16.7194C13.5492 17.2553 14.6928 17.2553 15.621 16.7194C15.9631 16.5219 16.2919 16.1931 16.9495 15.5355L19.7779 12.7071C20.4355 12.0495 20.7643 11.7207 20.9617 11.3787C21.4976 10.4505 21.4976 9.30689 20.9617 8.37869C20.7643 8.03665 20.4355 7.70785 19.7779 7.05026C19.1203 6.39267 18.7915 6.06388 18.4495 5.8664C1
38197.5212 5.3305 16.3777 5.3305 15.4495 5.8664C15.2598 5.97588 15.0743 6.12571 14.8345 6.34955" stroke="#4c00ff" stroke-width="2" stroke-linecap="round"></path> </g></svg> 3820 <span x-show="copied" class="text-xs text-p4-gray-300"> 3821 <svg x-transition:enter="transition ease-out duration-200" class="accordion-link mt-1 ml-1 cursor-default" width="20" id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 20 20"><path d="M10,20C4.486,20,0,15.515,0,10S4.486,0,10,0s10,4.486,10,10-4.486,10-10,10ZM10,1.852C5.507,1.852,1.852,5.507,1.852,10s3.655,8.148,8.148,8.148,8.148-3.655,8.148-8.148S14.493,1.852,10,1.852Z" fill="#4c00ff"/><path d="M9.463,14.292l-3.563-3.563c-.343-.343-.343-.898,0-1.241s.898-.343,1.241,0l2.089,2.089,3.533-5.016c.278-.396.826-.492,1.222-.212.396.279.491.826.212,1.222l-4.733,6.721Z" fill="#4c00ff"/></svg> 3822 Link Copied! 3823 </span> 3824 </span> 3825 </span> 3826 </div> 3827 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" 3828 fill="none" stroke-width="2" stroke="currentColor" 3829 class="size-5 shrink-0 transition" 3830 :class="activeItem === `${ accordionTabId }_0` ? 'rotate-180' : ''"> 3831 <path stroke-linecap="round" stroke-linejoin="round" 3832 d="M19.5 8.25l-7.5 7.5-7.5-7.5"/> 3833 </svg> 3834 </button> 3835 3836 <div class="accordion-content grid overflow-hidden transition-all duration-300" 3837 :class="activeItem === `${ accordionTabId }_0` 3838 ? 'grid-rows-[1fr] opacity-100' 3839 : 'grid-rows-[0fr] opacity-0'" 3840 role="region"> 3841 <div class="min-h-0"> 3842 <div class="sm:text-base text-pretty pb-6 px-4 "> 3843 3844 3845 <div class="text-long"><div><div class="photoswipe-gallery"><p>Upgrade on your schedule while maintaining compliance standards with Zend PHP LTS. </p><ul><li>Extend the PHP lifecycle at least two years beyond community support </li><li>Save money on refactoring codebases, particularly for large legacy apps </li><li>24/7/365 technical support, critical security patches, bug fixes, and more </li></ul><p> <a class="p4-cta" href="https://www.zend.com/services/php-long-term-support">Zend PHP LTS Details</a></p></div></div></div> 3846 3847 </div> 3848 </div> 3849 </div> 3850 3851 <hr class="border-p4-gray-200 border-t" /> 3852 </div> 3853 </div> 3854 </div> 3855 </div> 3856 <div class="md:w-7/12 pt-10"> 3857 <div> 3858 3859 3860 3861 3862 3863 3864 <div class="photoswipe-gallery field field--name-field-media-image field--type-image field--label-visually_hidden"> 3865 <div class="visually-hidden">Image</div> 3866 <a href="https://www.zend.com/sites/default/files/2025-11/image-web-znd-php-support-chart.png" class="photoswipe" data-pswp-width="2000" data-pswp-height="1715"> <img loading="lazy" src="/sites/default/files/2025-11/image-web-znd-php-support-chart.png" width="2000" height="1715" alt="Zend PHP support chart." /> 3867</a> 3868 3869 </div> 3870 3871</div> 3872 3873 </div> 3874 </div> 3875 </div> 3876 </div> 3877 </div> 3878</div> 3879 3880 3881</div> 3882 3883 3884<div id="p-3655" class="compound-cards-with-icons"> 3885 <div class="overflow-hidden"> 3886 3887 <section x-data="cardIconCarouselData" class="max-w-container mx-auto py-12 opacity-0 transition-opacity duration-300" 3888 :class="{'opacity-0': !isReady, 'opacity-100': isReady}"> 3889 <div class="px-4"> 3890 <div> 3891 <!-- Title and Description Section --> 3892 3893 3894<h2 class="heading text-left"> 3895 Build Better PHP Applications with ZendPHP Runtimes 3896 </h2> 3897 <p class="text-left">ZendPHP delivers the foundation for flexible, future-proof PHP applications. Here are a few ways you can take your development to the next level. </p> 3898 3899 </div> 3900 3901 </div> 3902 <!-- Card Grid Section --> 3903 <div class="relative" 3904 :class="isCarouselActive && visibleCards === 3 ? 'carousel-bleed' : 'carousel-clip'"> 3905 3906 <div 3907 class="flex transition-transform will-change-transform carousel-track" 3908 x-ref="carousel" 3909 @pointerdown.prevent="startDrag($event)" 3910 @pointermove.prevent="onDrag($event)"
3911 @pointerup="endDrag()" 3912 @pointercancel="endDrag()" 3913 @touchstart.prevent="startDrag($event)" 3914 @touchmove.prevent="onDrag($event)" 3915 @touchend="endDrag()" 3916 :class="{ 3917 'is-dragging': isDragging, 3918 'is-animating': isAnimating 3919 }" 3920 x-effect="$refs.carousel.style.setProperty('--tx', `${translateX}px`)" 3921 > 3922 <div 3923 class="flex-none" 3924 :class="{'w-full': visibleCards === 1, 'md:w-1/3': visibleCards === 3}" 3925 @click="onCardClick(0)" 3926 > 3927 <div id="p-3728" class="card-component w-full p-4"> 3928 <div class="card group bg-white rounded-3xl shadow-md overflow-hidden relative"> 3929 3930 <div class="card-top-section h-36 bg-zoom bg-center gradient-top-left-black-indigo"> 3931 </div> 3932 <div class="card-image bg-white rounded-3xl absolute card-icon-position left-12 shadow-md flex items-center justify-center"> 3933 <img src="https://www.zend.com/sites/default/files/2025-05/icon-simple-headphones-customer-support-question.svg" alt="Dedicated 24/7/365 Support icon" class="w-12 h-12 rounded-3xl object-none"> 3934 </div> 3935 3936 <div class="card-content pt-12 px-8 pb-8"> 3937 3938 3939<h3 class="heading"> 3940 Dedicated 24/7/365 Support 3941 </h3> 3942 <div class="card-content-text text-p4-dark text-long"> 3943 <div><div class="photoswipe-gallery"><p>ZendPHP runtimes come with a support contract. This unlocks dedicated support, including two-hour technical support responses from a global team of PHP experts.</p></div></div> 3944 </div> 3945 3946 3947 3948<a href="/products/zendphp-enterprise/trial" class="p4-cta p4-cta--secondary"> 3949 Try ZendPHP Free for 21 Days 3950 </a> 3951 </div> 3952 </div> 3953</div> 3954 </div> 3955 <div 3956 class="flex-none" 3957 :class="{'w-full': visibleCards === 1, 'md:w-1/3': visibleCards === 3}" 3958 @click="onCardClick(1)" 3959 > 3960 <div id="p-3726" class="card-component w-full p-4"> 3961 <div class="card group bg-white rounded-3xl shadow-md overflow-hidden relative"> 3962 3963 <div class="card-top-section h-36 bg-zoom bg-center "> 3964 </div> 3965 <div class="card-image bg-white rounded-3xl absolute card-icon-position left-12 shadow-md flex items-center justify-center"> 3966 <img src="https://www.zend.com/sites/default/files/2025-05/icon-simple-seo-search-graph.svg" alt="Simplified Scalability and Observability icon" class="w-12 h-12 rounded-3xl object-none"> 3967 </div> 3968 3969 <div class="card-content pt-12 px-8 pb-8"> 3970 3971 3972<h3 class="heading"> 3973 Simplified Scalability and Observability 3974 </h3> 3975 <div class="card-content-text text-p4-dark text-long"> 3976 <div><div class="photoswipe-gallery"><p>Modern PHP applications are complex. ZendHQ, an extension for ZendPHP, delivers the functionalities and tooling needed to make it easy. Monitor, inspect, optimize, and more. </p></div></div> 3977 </div> 3978 3979 3980 3981<a href="/products/zendhq" class="p4-cta p4-cta--secondary"> 3982 Explore ZendHQ 3983 </a> 3984 </div> 3985 </div> 3986</div> 3987 </div> 3988 <div 3989 class="flex-none" 3990 :class="{'w-full': visibleCards === 1, 'md:w-1/3': visibleCards === 3}" 3991 @click="onCardClick(2)" 3992 > 3993 <div id="p-3727" class="card-component w-full p-4"> 3994 <div class="card group bg-white rounded-3xl shadow-md overflow-hidden relative"> 3995 3996 <div class="card-top-section h-36 bg-zoom bg-center gradient-top-right-black-indigo"> 3997 </div> 3998 <div class="card-image bg-white rounded-3xl absolute card-icon-position left-12 shadow-md flex items-center justify-center"> 3999 <img src="https://www.zend.com/sites/default/files/2025-05/icon-simple-lock-unlock.svg" alt="The Benefits of PaaS â Minus the Lock-In icon" class="w-12 h-12 rounded-3xl object-none"> 4000 </div> 4001 4002 <div class="card-content pt-12 px-8 pb-8"> 4003 4004 4005<h3 class="heading"> 4006 The Benefits of PaaS â Minus the Lock-In 4007 </h3>
4008 <div class="card-content-text text-p4-dark text-long"> 4009 <div><div class="photoswipe-gallery"><p>Built on ZendPHP + ZendHQ, the Zend Web Platform delivers a custom-configured command center for critical apps. Deploy anywhere, modernize effortlessly, and stay compliant. </p></div></div> 4010 </div> 4011 4012 4013 4014<a href="/products/enterprise-web-platform" class="p4-cta p4-cta--secondary"> 4015 Discover the Zend Web Platform 4016 </a> 4017 </div> 4018 </div> 4019</div> 4020 </div> 4021 </div> 4022 </div> 4023 <div class="flex items-end"> 4024 <!-- Navigation Arrows and Buttons for Slides --> 4025 <div x-show="isCarouselActive" class="flex justify-center items-center mr-4 mb-4 w-full"> 4026 <!-- Previous Arrow Button --> 4027 <button 4028 @click="prevSlide()" 4029 :class="activeSlide <= 0 ? 'bg-p4-teal opacity-30 pointer-events-none' : 'bg-p4-teal rounded-full hover:bg-p4-cyan'" 4030 class="mr-4 rounded-full transition p-2" 4031 aria-label="Previous" 4032 > 4033 <svg xmlns="http://www.w3.org/2000/svg" 4034 class="w-3 h-3 hover:text-p4-dark transition-colors duration-300 transform rotate-180" 4035 fill="currentColor" viewBox="0 0 100 100"> 4036 <polygon points="20,0 100,50 20,100"></polygon> 4037 </svg> 4038 </button> 4039 4040 <!-- Pagination Dots (one per original card) --> 4041 <div class="flex"> 4042 <template x-for="i in maxSlide + 1" :key="i"> 4043 <button 4044 @click="goToSlide(i - 1)" 4045 :class="currentDotIndex() === (i - 1) 4046 ? 'bg-p4-teal text-white' 4047 : 'bg-p4-dark hover:bg-p4-primary hover:text-white'" 4048 class="mx-1 w-3 h-3 rounded-full focus:outline-none transition-all duration-300" 4049 :aria-label="'Go to slide ' + i"> 4050 </button> 4051 </template> 4052 </div> 4053 4054 <!-- Next Arrow Button --> 4055 <button 4056 @click="nextSlide()" 4057 :class="activeSlide >= maxSlide ? 'bg-p4-teal opacity-30 pointer-events-none' : 'bg-p4-teal rounded-full hover:bg-p4-cyan'" 4058 class="ml-4 rounded-full transition p-2" 4059 aria-label="Next" 4060 > 4061 <svg xmlns="http://www.w3.org/2000/svg" 4062 class="w-3 h-3 hover:text-p4-dark transition-colors duration-300" fill="currentColor"
4063 viewBox="0 0 100 100"> 4064 <polygon points="20,0 100,50 20,100"></polygon> 4065 </svg> 4066 </button> 4067 </div> 4068 </div> 4069 </section> 4070</div> 4071</div> 4072 4073 4074<div id="p-2624" class="tabbed-accordion-with-image"> 4075 4076<div class="accordion-with-image px-8 py-[3.75rem] max-w-container mx-auto"> 4077 <div class="w-full"> 4078 <div class="mb-6"> 4079 4080 4081<h2 class="heading"> 4082 ZendPHP Orchestration Solutions 4083 </h2> 4084 </div> 4085 <div class="mb-2"> 4086 4087 4088<h4 class="heading"> 4089 4090 </h4> 4091 </div> 4092 </div> 4093 <div x-data="{ 4094 tabItemCounts: [1,1,1], 4095 activeTab: '', 4096 activeItemId: '', 4097 getHashTab(isActiveItemId) { 4098 const accordionHash = window.location.hash.replace(/^#/, ''); 4099 const paragraphId = '2624'; 4100 4101 if( !accordionHash ) { 4102 return ``; 4103 } 4104 4105 const [paramParagraphId, paramAccordTabId, paramAccordItemId] = accordionHash.split('_'); 4106 const accordTabId = parseInt(paramAccordTabId, 10); 4107 let accordItemId; 4108 if( paramAccordItemId !== undefined && paramAccordItemId !== '' ) { 4109 accordItemId = parseInt(paramAccordItemId, 10); 4110 } 4111 if (Number.isNaN(accordTabId) || accordTabId < 0 || accordTabId >= 3 4112 || (accordItemId !== undefined && Number.isNaN(accordItemId)) 4113 || (accordItemId >= this.tabItemCounts[accordTabId]) || paramParagraphId != paragraphId ) { 4114 return ``; 4115 } 4116 return isActiveItemId && accordItemId ? paramAccordItemId : `${paramParagraphId}_${paramAccordTabId}` ; 4117 }, 4118 scrollToTab(id) { 4119 const [paramParagraphId, paramAccordTabId, paramAccordItemId] = id.split('_'); 4120 const paragraphId = `p-${paramParagraphId}` 4121 const el = document.getElementById(paragraphId); 4122 if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' }); 4123 } 4124 }" 4125 x-init=" 4126 activeTab = getHashTab(); 4127 activeItemId = getHashTab(true); 4128 if (activeItemId == activeTab) { 4129 activeItemId = 0; 4130 } 4131 if(activeTab) { 4132 $nextTick(() => scrollToTab(activeTab)); 4133 } else { 4134 activeTab = '2624_0' 4135 } 4136 " 4137 @hashchange.window=" 4138 activeTab = getHashTab(); 4139 activeItemId = getHashTab(true); 4140 if (activeItemId == activeTab) { 4141 activeItemId = 0; 4142 } 4143 window.location.reload(); 4144 " 4145 class=""> 4146 4147 <!-- mobile tabs --> 4148 <div class="block md:hidden w-full md:p-4 mb-4"> 4149 <label for="mobile-tabs" class="sr-only">Select Tab</label> 4150 <select 4151 id="mobile-tabs" 4152 @change="activeTab = $event.target.value" 4153 class="w-full p-2 border rounded-3xl" 4154 > 4155 <option value="2624_0" :selected="activeTab == '2624_0'"> 4156 Containers 4157 </option> 4158 <option value="2624_1" :selected="activeTab == '2624_1'"> 4159 Supported Architectures 4160 </option> 4161 <option value="2624_2" :selected="activeTab == '2624_2'"> 4162 Application Migration 4163 </option> 4164 </select> 4165 </div> 4166 4167 4168 <div class="hidden md:block w-full py-4 md:mr-4"> 4169 <!-- Tabs --> 4170 <ul class="pl-0 list-none flex gap-4 items-start flex-wrap"> 4171 <li class="pl-0 list-none"> 4172 <button 4173 id="tab-2624_0" 4174 @click="activeTab = '2624_0'" 4175 class="px-4 py-2 rounded-3xl leading-none hover:text-white hover:bg-p4-primary h-full [.bg-p4-primary_&]:border-p4-cyan" 4176 :class="{ 4177 'text-white bg-p4-primary [.bg-p4-primary_&]:bg-p4-cyan': activeTab == '2624_0', 4178 'border border-p4-primary [.bg-p4-primary_&]:border-p4-cyan': activeTab != '2624_0' 4179 }" 4180 > 4181 Containers 4182 </button> 4183 </li> 4184 <li class="pl-0 list-none"> 4185 <button 4186 id="tab-2624_1" 4187 @click="activeTab = '2624_1'" 4188 class="px-4 py-2 rounded-3xl leading-none hover:text-white hover:bg-p4-primary h-full [.bg-p4-primary_&]:border-p4-cyan" 4189 :class="{ 4190 'text-white bg-p4-primary [.bg-p4-primary_&]:bg-p4-cyan': activeTab == '2624_1', 4191 'border border-p4-primary [.bg-p4-primary_&]:border-p4-cyan': activeTab != '2624_1' 4192 }" 4193 > 4194 Supported Architectures 4195 </button> 4196 </li> 4197 <li class="pl-0 list-none"> 4198 <button 4199 id="tab-2624_2" 4200 @click="activeTab = '2624_2'" 4201 class="px-4 py-2 rounded-3xl leading-none hover:text-white hover:bg-p4-primary h-full [.bg-p4-primary_&]:border-p4-cyan" 4202 :class="{ 4203 'text-white bg-p4-primary [.bg-p4-primary_&]:bg-p4-cyan': activeTab == '2624_2', 4204 'border border-p4-primary [.bg-p4-primary_&]:border-p4-cyan': activeTab != '2624_2' 4205 }" 4206 > 4207 Application Migration 4208 </button> 4209 </li> 4210 </ul> 4211 </div> 4212 4213 <div> 4214 <div id="2624_0" x-show="activeTab == '2624_0'" x-cloak x-data="{ activeItem: (activeTab == '2624_0' ? `${activeTab}_${activeItemId}` : '2624_0_0') }" x-bind:data-active-item="activeItem" class="scroll-pt-6"> 4215 <div class="flex flex-col md:flex-row"> 4216 <div class="accordions w-full md:w-5/12 py-4 md:mr-4"> 4217 4218 4219<div x-data="{ 4220 accordionTabId: '2624_0', 4221 }" 4222 @set-accordion-meta.window=" 4223 if (!accordionTabId && $event.detail.tabId) { 4224 accordionTabId = $event.detail.tabId; 4225 } 4226 if (!activeItem) { 4227 activeItem = $event.detail.activeItem || (accordionTabId ? `${accordionTabId}_0` : ''); 4228 } 4229 " 4230 :activeItem="activeItem" 4231 :accordionTabId="accordionTabId" class=" border-t w-full border-p4-gray-200"> 4232 <div class="w-full">
4233 <div x-data="{ copied: false }"> 4234 <button type="button" 4235 class="flex w-full items-center justify-between gap-4 py-4 px-4 text-left" 4236 @click="activeItem = activeItem === `${ accordionTabId }_0` ? -1 : `${ accordionTabId }_0`" 4237 :class="activeItem === `${ accordionTabId }_0` ? 'expanded text-p4-primary [.text-p4-white_&]:text-p4-cyan' : 'font-medium'" 4238 :aria-expanded="activeItem === `${ accordionTabId }_0` ? 'true' : 'false'"> 4239 <div> 4240 <span> 4241 Containers 4242 <span x-show="activeItem === `${ accordionTabId }_0` && 1 > 1" 4243 x-transition:enter="transition ease-out duration-200" 4244 @click.stop=" 4245 const url = new URL(window.location); 4246 url.hash = activeItem; 4247 navigator.clipboard.writeText(url.toString()) 4248 .then(() => { 4249 copied = true 4250 setTimeout(() => copied = false, 2000); 4251 }) 4252 .catch(() => {}); 4253 " 4254 title="Copy accordion link to clipboard" 4255 > 4256 <svg x-show="!copied" x-transition:enter="transition ease-out duration-200" class="accordion-link mt-1 ml-1" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path d="M9.16488 17.6505C8.92513 17.8743 8.73958 18.0241 8.54996 18.1336C7.62175 18.6695 6.47816 18.6695 5.54996 18.1336C5.20791 17.9361 4.87912 17.6073 4.22153 16.9498C3.56394 16.2922 3.23514 15.9634 3.03767 15.6213C2.50177 14.6931 2.50177 13.5495 3.03767 12.6213C3.23514 12.2793 3.56394 11.9505 4.22153 11.2929L7.04996 8.46448C7.70755 7.80689 8.03634 7.47809 8.37838 7.28062C9.30659 6.74472 10.4502 6.74472 11.3784 7.28061C11.7204 7.47809 12.0492 7.80689 12.7068 8.46448C13.3644 9.12207 13.6932 9.45086 13.8907 9.7929C14.4266 10.7211 14.4266 11.8647 13.8907 12.7929C13.7812 12.9825 13.6314 13.1681 13.4075 13.4078M10.5919 10.5922C10.368 10.8319 10.2182 11.0175 10.1087 11.2071C9.57284 12.1353 9.57284 13.2789 10.1087 14.2071C10.3062 14.5492 10.635 14.878 11.2926 15.5355C11.9502 16.1931 12.279 16.5219 12.621 16.7194C13.5492 17.2553 14.6928 17.2553 15.621 16.7194C15.9631 16.5219 16.2919 16.1931 16.9495 15.5355L19.7779 12.7071C20.4355 12.0495 20.7643 11.7207 20.9617 11.3787C21.4976 10.4505 21.4976 9.30689 20.9617 8.37869C20.7643 8.03665 20.4355 7.70785 19.7779 7.05026C19.1203 6.39267 18.7915 6.06388 18.4495 5.8664C17.5212 5.3305 16.3777 5.3305 15.4495 5.8664C15.2598 5.97588 15.0743 6.12571 14.8345 6.34955" stroke="#4c00ff" stroke-width="2" stroke-linecap="round"></path> </g></svg> 4257 <span x-show="copied" class="text-xs text-p4-gray-300"> 4258 <svg x-transition:enter="transition ease-out duration-200" class="accordion-link mt-1 ml-1 cursor-default" width="20" id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 20 20"><path d="M10,20C4.486,20,0,15.515,0,10S4.486,0,10,0s10,4.486,10,10-4.486,10-10,10ZM10,1.852C5.507,1.852,1.852,5.507,1.852,10s3.655,8.148,8.148,8.148,8.148-3.655,8.148-8.148S14.493,1.852,10,1.852Z" fill="#4c00ff"/><path d="M9.463,14.292l-3.563-3.563c-.343-.343-.343-.898,0-1.241s.898-.343,1.241,0l2.089,2.089,3.533-5.016c.278-.396.826-.492,1.222-.212.396.279.491.826.212,1.222l-4.733,6.721Z" fill="#4c00ff"/></svg> 4259 Link Copied! 4260 </span> 4261 </span> 4262 </span> 4263 </div> 4264 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" 4265 fill="none" stroke-width="2" stroke="currentColor" 4266 class="size-5 shrink-0 transition" 4267 :class="activeItem === `${ accordionTabId }_0` ? 'rotate-180' : ''"> 4268 <path stroke-linecap="round" stroke-linejoin="round" 4269 d="M19.5 8.25l-7.5 7.5-7.5-7.5"/> 4270 </svg> 4271 </button> 4272 4273 <div class="accordion-content grid overflow-hidden transition-all duration-300" 4274 :class="activeItem === `${ accordionTabId }_0` 4275 ? 'grid-rows-[1fr] opacity-100' 4276 : 'grid-rows-[0fr] opacity-0'" 4277 role="region"> 4278 <div class="min-h-0"> 4279 <div class="sm:text-base text-pretty pb-6 px-4 "> 4280 4281 4282 <div class="text-long"><div><div class="photoswipe-gallery"><p>Receive support for both community PHP and Zend LTS editions with ZendPHP containers. The containers we build include Alpine Linux, CentOS, Debian, Ubuntu, Rocky, Alpine Linux 2, with other OS and versions available on request. All images come with variants for use with the CLI PHP-FPM, or the Apache HTTPd webserver.</p><p>We also <a href="https://help.zend.com/zendphp/current/content/orchestration/docker.htm">document a standard Dockerfile </a>that can be configured using Docker build arguments. This provides the ultimate in flexibility when used in conjunction with Compose, Stack, Kubernetes, or Helm.</p><p>We provide templates demonstrating setup of a session cluster using each of these technologies to help you orchestrate your own microservices or large-scale applications.</p><p>Start with a <a href="https://www.zend.com/products/zendphp-enterprise/trial">free trial</a> or <a href="http://www.zend.com/contact-us/">contact us</a>
4282 to learn about licensing options.</p></div></div></div> 4283 4284 </div> 4285 </div> 4286 </div> 4287 4288 <hr class="border-p4-gray-200 border-t" /> 4289 </div> 4290 </div> 4291 </div> 4292 </div> 4293 <div class="md:w-7/12 pt-10"> 4294 <div> 4295 4296 4297 4298 4299 4300 4301 <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> 4302 <div class="visually-hidden">Image</div> 4303 <img loading="lazy" src="/sites/default/files/2025-06/image-web-znd-containers-orchestration-solutions-docker-animated.svg" alt="Docker logo with configuration icons." /> 4304 4305 4306 </div> 4307 4308</div> 4309 4310 </div> 4311 </div> 4312 </div> 4313 <div id="2624_1" x-show="activeTab == '2624_1'" x-cloak x-data="{ activeItem: (activeTab == '2624_1' ? `${activeTab}_${activeItemId}` : '2624_1_0') }" x-bind:data-active-item="activeItem" class="scroll-pt-6"> 4314 <div class="flex flex-col md:flex-row"> 4315 <div class="accordions w-full md:w-5/12 py-4 md:mr-4"> 4316 4317 4318<div x-data="{ 4319 accordionTabId: '2624_1', 4320 }" 4321 @set-accordion-meta.window=" 4322 if (!accordionTabId && $event.detail.tabId) { 4323 accordionTabId = $event.detail.tabId; 4324 } 4325 if (!activeItem) { 4326 activeItem = $event.detail.activeItem || (accordionTabId ? `${accordionTabId}_0` : ''); 4327 } 4328 " 4329 :activeItem="activeItem" 4330 :accordionTabId="accordionTabId" class=" border-t w-full border-p4-gray-200"> 4331 <div class="w-full"> 4332 <div x-data="{ copied: false }"> 4333 <button type="button" 4334 class="flex w-full items-center justify-between gap-4 py-4 px-4 text-left" 4335 @click="activeItem = activeItem === `${ accordionTabId }_0` ? -1 : `${ accordionTabId }_0`" 4336 :class="activeItem === `${ accordionTabId }_0` ? 'expanded text-p4-primary [.text-p4-white_&]:text-p4-cyan' : 'font-medium'" 4337 :aria-expanded="activeItem === `${ accordionTabId }_0` ? 'true' : 'false'"> 4338 <div> 4339 <span> 4340 Supported Architectures 4341 <span x-show="activeItem === `${ accordionTabId }_0` && 1 > 1" 4342 x-transition:enter="transition ease-out duration-200" 4343 @click.stop=" 4344 const url = new URL(window.location); 4345 url.hash = activeItem; 4346 navigator.clipboard.writeText(url.toString()) 4347 .then(() => { 4348 copied = true 4349 setTimeout(() => copied = false, 2000); 4350 }) 4351 .catch(() => {}); 4352 " 4353 title="Copy accordion link to clipboard" 4354 > 4355 <svg x-show="!copied" x-transition:enter="transition ease-out duration-200" class="accordion-link mt-1 ml-1" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path d="M9.16488 17.6505C8.92513 17.8743 8.73958 18.0241 8.54996 18.1336C7.62175 18.6695 6.47816 18.6695 5.54996 18.1336C5.20791 17.9361 4.87912 17.6073 4.22153 16.9498C3.56394 16.2922 3.23514 15.9634 3.03767 15.6213C2.50177 14.6931 2.50177 13.5495 3.03767 12.6213C3.23514 12.2793 3.56394 11.9505 4.22153 11.2929L7.04996 8.46448C7.70755 7.80689 8.03634 7.47809 8.37838 7.28062C9.30659 6.74472 10.4502 6.74472 11.3784 7.28061C11.7204 7.47809 12.0492 7.80689 12.7068 8.46448C13.3644 9.12207 13.6932 9.45086 13.8907 9.7929C14.4266 10.7211 14.4266 11.8647 13.8907 12.7929C13.7812 12.9825 13.6314 13.1681 13.4075 13.4078M10.5919 10.5922C10.368 10.8319 10.2182 11.0175 10.1087 11.2071C9.57284 12.1353 9.57284 13.2789 10.1087 14.2071C10.3062 14.5492 10.635 14.878 11.2926 15.5355C11.9502 16.1931 12.279 16.5219 12.621 16.7194C13.5492 17.2553 14.6928 17.2553 15.621 16.7194C15.9631 16.5219 16.2919 16.1931 16.9495 15.5355L19.7779 12.7071C20.4355 12.0495 20.7643 11.7207 20.9617 11.3787C21.4976 10.4505 21.4976 9.30689 20.9617 8.37869C20.7643 8.03665 20.4355 7.70785 19.7779 7.05026C19.1203 6.39267 18.7915 6.06388 18.4495 5.8664C1
43557.5212 5.3305 16.3777 5.3305 15.4495 5.8664C15.2598 5.97588 15.0743 6.12571 14.8345 6.34955" stroke="#4c00ff" stroke-width="2" stroke-linecap="round"></path> </g></svg> 4356 <span x-show="copied" class="text-xs text-p4-gray-300"> 4357 <svg x-transition:enter="transition ease-out duration-200" class="accordion-link mt-1 ml-1 cursor-default" width="20" id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 20 20"><path d="M10,20C4.486,20,0,15.515,0,10S4.486,0,10,0s10,4.486,10,10-4.486,10-10,10ZM10,1.852C5.507,1.852,1.852,5.507,1.852,10s3.655,8.148,8.148,8.148,8.148-3.655,8.148-8.148S14.493,1.852,10,1.852Z" fill="#4c00ff"/><path d="M9.463,14.292l-3.563-3.563c-.343-.343-.343-.898,0-1.241s.898-.343,1.241,0l2.089,2.089,3.533-5.016c.278-.396.826-.492,1.222-.212.396.279.491.826.212,1.222l-4.733,6.721Z" fill="#4c00ff"/></svg> 4358 Link Copied! 4359 </span> 4360 </span> 4361 </span> 4362 </div> 4363 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" 4364 fill="none" stroke-width="2" stroke="currentColor" 4365 class="size-5 shrink-0 transition" 4366 :class="activeItem === `${ accordionTabId }_0` ? 'rotate-180' : ''"> 4367 <path stroke-linecap="round" stroke-linejoin="round" 4368 d="M19.5 8.25l-7.5 7.5-7.5-7.5"/> 4369 </svg> 4370 </button> 4371 4372 <div class="accordion-content grid overflow-hidden transition-all duration-300" 4373 :class="activeItem === `${ accordionTabId }_0` 4374 ? 'grid-rows-[1fr] opacity-100' 4375 : 'grid-rows-[0fr] opacity-0'" 4376 role="region"> 4377 <div class="min-h-0"> 4378 <div class="sm:text-base text-pretty pb-6 px-4 "> 4379 4380 4381 <div class="text-long"><div><div class="photoswipe-gallery"><p>To add more freedom and potential cost savings when deploying PHP, ZendPHP supports both ARM and x86 processor architectures.</p><p>ZendPHP ARM support is provided in several ways:</p><ul><li>ARM-specific packages for each supported operating system</li><li>ARM-specific container images for use with Docker, Podman, Kubernetes, etc.</li></ul><p>Click the button below for the full list of supported platforms and PHP versions.</p><p><a class="p4-cta" href="https://help.zend.com/zendphp/current/content/introduction/supported_platforms.htm">Full ZendPHP Documentation</a></p></div></div></div> 4382 4383 </div> 4384 </div> 4385 </div> 4386 4387 <hr class="border-p4-gray-200 border-t" /> 4388 </div> 4389 </div> 4390 </div> 4391 </div> 4392 <div class="md:w-7/12 pt-10"> 4393 <div> 4394 4395 4396 4397 4398 4399 4400 <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> 4401 <div class="visually-hidden">Image</div> 4402 <img loading="lazy" src="/sites/default/files/2025-06/image-web-znd-php-security-audit-illustration-animated.svg" alt="PHP security illustration." /> 4403 4404 4405 </div> 4406 4407</div> 4408 4409 </div> 4410 </div> 4411 </div> 4412 <div id="2624_2" x-show="activeTab == '2624_2'" x-cloak x-data="{ activeItem: (activeTab == '2624_2' ? `${activeTab}_${activeItemId}` : '2624_2_0') }" x-bind:data-active-item="activeItem" class="scroll-pt-6"> 4413 <div class="flex flex-col md:flex-row"> 4414 <div class="accordions w-full md:w-5/12 py-4 md:mr-4"> 4415 4416 4417<div x-data="{ 4418 accordionTabId: '2624_2', 4419 }" 4420 @set-accordion-meta.window=" 4421 if (!accordionTabId && $event.detail.tabId) { 4422 accordionTabId = $event.detail.tabId; 4423 } 4424 if (!activeItem) { 4425 activeItem = $event.detail.activeItem || (accordionTabId ? `${accordionTabId}_0` : ''); 4426 } 4427 " 4428 :activeItem="activeItem" 4429 :accordionTabId="accordionTabId" class=" border-t w-full border-p4-gray-200"> 4430 <div class="w-full">
4431 <div x-data="{ copied: false }"> 4432 <button type="button" 4433 class="flex w-full items-center justify-between gap-4 py-4 px-4 text-left" 4434 @click="activeItem = activeItem === `${ accordionTabId }_0` ? -1 : `${ accordionTabId }_0`" 4435 :class="activeItem === `${ accordionTabId }_0` ? 'expanded text-p4-primary [.text-p4-white_&]:text-p4-cyan' : 'font-medium'" 4436 :aria-expanded="activeItem === `${ accordionTabId }_0` ? 'true' : 'false'"> 4437 <div> 4438 <span> 4439 Application Migration 4440 <span x-show="activeItem === `${ accordionTabId }_0` && 1 > 1" 4441 x-transition:enter="transition ease-out duration-200" 4442 @click.stop=" 4443 const url = new URL(window.location); 4444 url.hash = activeItem; 4445 navigator.clipboard.writeText(url.toString()) 4446 .then(() => { 4447 copied = true 4448 setTimeout(() => copied = false, 2000); 4449 }) 4450 .catch(() => {}); 4451 " 4452 title="Copy accordion link to clipboard" 4453 > 4454 <svg x-show="!copied" x-transition:enter="transition ease-out duration-200" class="accordion-link mt-1 ml-1" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path d="M9.16488 17.6505C8.92513 17.8743 8.73958 18.0241 8.54996 18.1336C7.62175 18.6695 6.47816 18.6695 5.54996 18.1336C5.20791 17.9361 4.87912 17.6073 4.22153 16.9498C3.56394 16.2922 3.23514 15.9634 3.03767 15.6213C2.50177 14.6931 2.50177 13.5495 3.03767 12.6213C3.23514 12.2793 3.56394 11.9505 4.22153 11.2929L7.04996 8.46448C7.70755 7.80689 8.03634 7.47809 8.37838 7.28062C9.30659 6.74472 10.4502 6.74472 11.3784 7.28061C11.7204 7.47809 12.0492 7.80689 12.7068 8.46448C13.3644 9.12207 13.6932 9.45086 13.8907 9.7929C14.4266 10.7211 14.4266 11.8647 13.8907 12.7929C13.7812 12.9825 13.6314 13.1681 13.4075 13.4078M10.5919 10.5922C10.368 10.8319 10.2182 11.0175 10.1087 11.2071C9.57284 12.1353 9.57284 13.2789 10.1087 14.2071C10.3062 14.5492 10.635 14.878 11.2926 15.5355C11.9502 16.1931 12.279 16.5219 12.621 16.7194C13.5492 17.2553 14.6928 17.2553 15.621 16.7194C15.9631 16.5219 16.2919 16.1931 16.9495 15.5355L19.7779 12.7071C20.4355 12.0495 20.7643 11.7207 20.9617 11.3787C21.4976 10.4505 21.4976 9.30689 20.9617 8.37869C20.7643 8.03665 20.4355 7.70785 19.7779 7.05026C19.1203 6.39267 18.7915 6.06388 18.4495 5.8664C17.5212 5.3305 16.3777 5.3305 15.4495 5.8664C15.2598 5.97588 15.0743 6.12571 14.8345 6.34955" stroke="#4c00ff" stroke-width="2" stroke-linecap="round"></path> </g></svg> 4455 <span x-show="copied" class="text-xs text-p4-gray-300"> 4456 <svg x-transition:enter="transition ease-out duration-200" class="accordion-link mt-1 ml-1 cursor-default" width="20" id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 20 20"><path d="M10,20C4.486,20,0,15.515,0,10S4.486,0,10,0s10,4.486,10,10-4.486,10-10,10ZM10,1.852C5.507,1.852,1.852,5.507,1.852,10s3.655,8.148,8.148,8.148,8.148-3.655,8.148-8.148S14.493,1.852,10,1.852Z" fill="#4c00ff"/><path d="M9.463,14.292l-3.563-3.563c-.343-.343-.343-.898,0-1.241s.898-.343,1.241,0l2.089,2.089,3.533-5.016c.278-.396.826-.492,1.222-.212.396.279.491.826.212,1.222l-4.733,6.721Z" fill="#4c00ff"/></svg> 4457 Link Copied! 4458 </span> 4459 </span> 4460 </span> 4461 </div> 4462 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" 4463 fill="none" stroke-width="2" stroke="currentColor" 4464 class="size-5 shrink-0 transition" 4465 :class="activeItem === `${ accordionTabId }_0` ? 'rotate-180' : ''"> 4466 <path stroke-linecap="round" stroke-linejoin="round" 4467 d="M19.5 8.25l-7.5 7.5-7.5-7.5"/> 4468 </svg> 4469 </button> 4470 4471 <div class="accordion-content grid overflow-hidden transition-all duration-300" 4472 :class="activeItem === `${ accordionTabId }_0` 4473 ? 'grid-rows-[1fr] opacity-100' 4474 : 'grid-rows-[0fr] opacity-0'" 4475 role="region"> 4476 <div class="min-h-0"> 4477 <div class="sm:text-base text-pretty pb-6 px-4 "> 4478 4479 4480 <div class="text-long"><div><div class="photoswipe-gallery"><p>Zend Server reaches EOL in December 2027. To help you migrate to ZendPHP, we provide Ansible tooling to configure ZendPHP and match your existing installation. </p><p>Using our turnkey solution, you can provision ZendPHP and deploy your apps using existing Zend Server deployment packages (ZPKs). Follow a few easy steps to install and execute. Our playbook will take care of the rest, configuring ZendPHP across multiple targets in a single deployment. </p><p><a class="p4-cta" href="https://help.zend.com/zendphp/current/content/orchestration/ansible.htm">View Playbook Documentation</a> <a class="p4-cta p4-cta--secondary" href="https://www.zend.com/solutions/migrating-from-zend-server-to-zendphp">Zend Server Migration Options</a></p></div></div></div> 4481 4482 </div> 4483 </div> 4484 </div> 4485 4486 <hr class="border-p4-gray-200 border-t" /> 4487 </div> 4488 </div> 4489 </div> 4490 </div> 4491 <div class="md:w-7/12 pt-10"> 4492 <div> 4493 4494 4495
4495<script src="https://fast.wistia.com/embed/of1ge7f1oo.js" async type="module"></script>
4495 4496 4497 <style> 4498 wistia-player[media-id='of1ge7f1oo']:not(:defined) { 4499 background: center / contain no-repeat url('https://fast.wistia.com/embed/medias/of1ge7f1oo/swatch'); 4500 display: block; 4501 filter: blur(5px); 4502 } 4503 </style> 4504 4505 <div class="field field--name-field-wistia-video field--type-video-embed-field field--label-hidden field__item"> 4506 <wistia-player media-id="of1ge7f1oo" seo="false" class="wistia_embed"></wistia-player> 4507 </div> 4508 4509</div> 4510 4511 </div> 4512 </div> 4513 </div> 4514 </div> 4515 </div> 4516</div> 4517 4518 4519</div> 4520 4521 </div> 4522 </div> 4523 4524</div> 4525</div> 4526 <div> 4527 4528<div id="p-3660" class="compound-cards-with-icons"> 4529 <div class="overflow-hidden"> 4530 4531 <section x-data="cardIconCarouselData" class="max-w-container mx-auto py-12 opacity-0 transition-opacity duration-300" 4532 :class="{'opacity-0': !isReady, 'opacity-100': isReady}"> 4533 <div class="px-4"> 4534 <div> 4535 <!-- Title and Description Section --> 4536 4537 4538<h2 class="heading text-left"> 4539 Why Choose Zend for PHP Runtimes? 4540 </h2> 4541 <p class="text-left">Keeping PHP applications current and secure sounds great in theory. In practice, it means spending time and money refactoring your codebase for upgrades, and less time developing new features to drive your business. That's where PHP runtimes from Zend come in. </p> 4542 4543 </div> 4544 4545 </div> 4546 <!-- Card Grid Section --> 4547 <div class="relative" 4548 :class="isCarouselActive && visibleCards === 3 ? 'carousel-bleed' : 'carousel-clip'"> 4549 4550 <div 4551 class="flex transition-transform will-change-transform carousel-track" 4552 x-ref="carousel" 4553 @pointerdown.prevent="startDrag($event)" 4554 @pointermove.prevent="onDrag($event)" 4555 @pointerup="endDrag()" 4556 @pointercancel="endDrag()" 4557 @touchstart.prevent="startDrag($event)" 4558 @touchmove.prevent="onDrag($event)" 4559 @touchend="endDrag()" 4560 :class="{ 4561 'is-dragging': isDragging, 4562 'is-animating': isAnimating 4563 }" 4564 x-effect="$refs.carousel.style.setProperty('--tx', `${translateX}px`)" 4565 > 4566 <div 4567 class="flex-none" 4568 :class="{'w-full': visibleCards === 1, 'md:w-1/3': visibleCards === 3}" 4569 @click="onCardClick(0)" 4570 > 4571 <div id="p-3656" class="card-component w-full p-4"> 4572 <div class="card group bg-white rounded-3xl shadow-md overflow-hidden relative"> 4573 4574 <div class="card-top-section h-36 bg-zoom bg-center "> 4575 </div> 4576 <div class="card-image bg-white rounded-3xl absolute card-icon-position left-12 shadow-md flex items-center justify-center"> 4577 <img src="https://www.zend.com/sites/default/files/2025-05/icon-simple-calendar.svg" alt="Upgrade on Your Schedule icon" class="w-12 h-12 rounded-3xl object-none"> 4578 </div> 4579 4580 <div class="card-content pt-12 px-8 pb-8"> 4581 4582 4583<h3 class="heading"> 4584 Upgrade on Your Schedule 4585 </h3> 4586 <div class="card-content-text text-p4-dark text-long"> 4587 <div><div class="photoswipe-gallery"><p>Get the benefit of support even when your PHP version is no longer community supported. With ZendPHP runtimes, your team can update on your schedule and not the community release cadence. </p></div></div> 4588 </div> 4589 </div> 4590 </div> 4591</div> 4592 </div> 4593 <div 4594 class="flex-none" 4595 :class="{'w-full': visibleCards === 1, 'md:w-1/3': visibleCards === 3}" 4596 @click="onCardClick(1)" 4597 > 4598 <div id="p-3657" class="card-component w-full p-4"> 4599 <div class="card group bg-white rounded-3xl shadow-md overflow-hidden relative"> 4600 4601 <div class="card-top-section h-36 bg-zoom bg-center "> 4602 </div> 4603 <div class="card-image bg-white rounded-3xl absolute card-icon-position left-12 shadow-md flex items-center justify-center"> 4604 <img src="https://www.zend.com/sites/default/files/2025-05/icon-simple-gauge-dashboard.svg" alt="Get PHP Versions Faster icon" class="w-12 h-12 rounded-3xl object-none"> 4605 </div> 4606 4607 <div class="card-content pt-12 px-8 pb-8"> 4608 4609 4610<h3 class="heading"> 4611 Get PHP Versions Faster 4612 </h3>
4613 <div class="card-content-text text-p4-dark text-long"> 4614 <div><div class="photoswipe-gallery"><p>ZendPHP ships new major and minor versions of PHP within two weeks of community release. Get independence from OS release cadences, and the freedom to install multiple versions of PHP on the same machine. </p></div></div> 4615 </div> 4616 </div> 4617 </div> 4618</div> 4619 </div> 4620 <div 4621 class="flex-none" 4622 :class="{'w-full': visibleCards === 1, 'md:w-1/3': visibleCards === 3}" 4623 @click="onCardClick(2)" 4624 > 4625 <div id="p-3658" class="card-component w-full p-4"> 4626 <div class="card group bg-white rounded-3xl shadow-md overflow-hidden relative"> 4627 4628 <div class="card-top-section h-36 bg-zoom bg-center "> 4629 </div> 4630 <div class="card-image bg-white rounded-3xl absolute card-icon-position left-12 shadow-md flex items-center justify-center"> 4631 <img src="https://www.zend.com/sites/default/files/2025-05/icon-simple-check-badge.svg" alt="Maintain Compliance Standards icon" class="w-12 h-12 rounded-3xl object-none"> 4632 </div> 4633 4634 <div class="card-content pt-12 px-8 pb-8"> 4635 4636 4637<h3 class="heading"> 4638 Maintain Compliance Standards 4639 </h3> 4640 <div class="card-content-text text-p4-dark text-long"> 4641 <div><div class="photoswipe-gallery"><p>Keeping up with compliance standards like SOX, PCI, or HIPAA can take up a lot of time for development teams. With Zend PHP runtimes and LTS, you enjoy secure and compliant PHP runtimes without the costs. </p></div></div> 4642 </div> 4643 </div> 4644 </div> 4645</div> 4646 </div> 4647 <div 4648 class="flex-none" 4649 :class="{'w-full': visibleCards === 1, 'md:w-1/3': visibleCards === 3}" 4650 @click="onCardClick(3)" 4651 > 4652 <div id="p-3659" class="card-component w-full p-4"> 4653 <div class="card group bg-white rounded-3xl shadow-md overflow-hidden relative"> 4654 4655 <div class="card-top-section h-36 bg-zoom bg-center "> 4656 </div> 4657 <div class="card-image bg-white rounded-3xl absolute card-icon-position left-12 shadow-md flex items-center justify-center"> 4658 <img src="https://www.zend.com/sites/default/files/2025-05/icon-simple-performance-increase.svg" alt="Provision and Deploy at Scale icon" class="w-12 h-12 rounded-3xl object-none"> 4659 </div> 4660 4661 <div class="card-content pt-12 px-8 pb-8"> 4662 4663 4664<h3 class="heading"> 4665 Provision and Deploy at Scale 4666 </h3> 4667 <div class="card-content-text text-p4-dark text-long"> 4668 <div><div class="photoswipe-gallery"><p>Provision ZendPHP and consistently deploy at scale using existing processes with our ZendPHP Ansible Playbook. Our tooling makes your transition quick, easy, and stress-free. </p></div></div> 4669 </div> 4670 </div> 4671 </div> 4672</div> 4673 </div> 4674 </div> 4675 </div> 4676 <div class="flex items-end"> 4677 <!-- Navigation Arrows and Buttons for Slides --> 4678 <div x-show="isCarouselActive" class="flex justify-center items-center mr-4 mb-4 w-full"> 4679 <!-- Previous Arrow Button --> 4680 <button 4681 @click="prevSlide()" 4682 :class="activeSlide <= 0 ? 'bg-p4-teal opacity-30 pointer-events-none' : 'bg-p4-teal rounded-full hover:bg-p4-cyan'" 4683 class="mr-4 rounded-full transition p-2" 4684 aria-label="Previous" 4685 > 4686 <svg xmlns="http://www.w3.org/2000/svg" 4687 class="w-3 h-3 hover:text-p4-dark transition-colors duration-300 transform rotate-180" 4688 fill="currentColor" viewBox="0 0 100 100"> 4689 <polygon points="20,0 100,50 20,100"></polygon> 4690 </svg> 4691 </button> 4692 4693 <!-- Pagination Dots (one per original card) --> 4694 <div class="flex"> 4695 <template x-for="i in maxSlide + 1" :key="i"> 4696 <button 4697 @click="goToSlide(i - 1)" 4698 :class="currentDotIndex() === (i - 1) 4699 ? 'bg-p4-teal text-white' 4700 : 'bg-p4-dark hover:bg-p4-primary hover:text-white'" 4701 class="mx-1 w-3 h-3 rounded-full focus:outline-none transition-all duration-300" 4702 :aria-label="'Go to slide ' + i"> 4703 </button> 4704 </template> 4705 </div> 4706 4707 <!-- Next Arrow Button --> 4708 <button 4709 @click="nextSlide()" 4710 :class="activeSlide >= maxSlide ? 'bg-p4-teal opacity-30 pointer-events-none' : 'bg-p4-teal rounded-full hover:bg-p4-cyan'" 4711 class="ml-4 rounded-full transition p-2" 4712 aria-label="Next" 4713 > 4714 <svg xmlns="http://www.w3.org/2000/svg"
4715 class="w-3 h-3 hover:text-p4-dark transition-colors duration-300" fill="currentColor" 4716 viewBox="0 0 100 100"> 4717 <polygon points="20,0 100,50 20,100"></polygon> 4718 </svg> 4719 </button> 4720 </div> 4721 </div> 4722 </section> 4723</div> 4724</div> 4725</div> 4726 <div> 4727 4728<div class="gradient-radial-bottom-black-indigo text-p4-white paragraph--type--section paragraph--view-mode--default" id="p-2125"> 4729 4730<div class="layout layout--three-column-50-25-25"> 4731 <div class="grid grid-cols-1 md:grid-cols-[2fr_1fr_1fr] gap-4 max-w-container mx-auto"> 4732 <div class="layout__region layout__region--col1"> 4733 4734 4735<div id="p-2126" class="rich-text p-4"> 4736 4737 4738 <div class="text-long"><div><div class="toc-filter"><div class="photoswipe-gallery"><a href="#top" class="back-to-top">Back to top</a> 4739 4740<h2 id="try-zendphp-zendhq-free-for-21-days">Try ZendPHP + ZendHQ Free for 21 Days</h2><p>Try our PHP runtimes alongside ZendHQ observability tooling free for 21 days â no commitment required. </p><p><a class="p4-cta p4-cta--white" href="https://www.zend.com/products/zendphp-enterprise/trial">Free Trial</a></p></div><a href="#top" class="back-to-top">Back to top</a></div></div></div> 4741 4742</div> 4743 4744 </div> 4745 <div class="layout__region layout__region--col2"> 4746 4747 4748<div id="p-2127" class="rich-text p-4"> 4749 4750 4751 <div class="text-long"><div><div class="photoswipe-gallery"><h3>Get PHP Long Term Support </h3><p>Get long-term support beyond the community EOL for PHP 7.2, 7.3, 7.4, and 8.1 from Zend. </p><p><a class="p4-cta" href="https://www.zend.com/services/php-long-term-support">See LTS Options</a></p></div></div></div> 4752 4753</div> 4754 4755 </div> 4756 <div class="layout__region layout__region--col3"> 4757 4758 4759<div id="p-2128" class="rich-text p-4"> 4760 4761 4762 <div class="text-long"><div><div class="photoswipe-gallery"><h3>Have Questions?</h3><p>Talk with one of our PHP experts today about your specific infrastructure. </p><p><a class="p4-cta" href="https://www.zend.com/contact-us">Contact Us</a></p></div></div></div> 4763 4764</div> 4765 4766 </div> 4767 </div> 4768</div> 4769 4770</div> 4771</div> 4772 </div> 4773 4774 </div> 4775 4776</article> 4777 4778 4779 </div> 4780 4781 </div> 4782 4783 </main> 4784 4785 4786<footer class="footer footer-- min-h-72"> 4787 <div class="footer__inner"> 4788 <!-- Footer Menu Section --> 4789 <div class="footer__menu border-b border-p4-dark max-w-container mx-auto py-8"> 4790 <nav role="navigation" aria-labelledby="block-p4base-footer-menu" id="block-p4base-footer"> 4791 4792 <h2 class="visually-hidden" id="block-p4base-footer-menu">Footer</h2> 4793 4794 4795 4796 <div class="footer-menu"> 4797<div class="mx-auto px-4 sm:px-6 grid grid-cols-1 sm:grid-cols-3 lg:grid-cols-5 gap-6"> 4798 <div class="footer-menu__section"> 4799 <div class="footer-menu__section-title text-sm mb-4">Solutions</div> 4800 <ul class="!pl-0 space-y-2"> 4801 <li class="list-none !pl-0"><a href="/solutions/cloud" class="footer-menu__link text-p4-dark">PHP Cloud Solutions</a></li> 4802 <li class="list-none !pl-0"><a href="/solutions/containers" class="footer-menu__link text-p4-dark">PHP Container Solutions</a></li> 4803 <li class="list-none !pl-0"><a href="/solutions/php-windows" class="footer-menu__link text-p4-dark">Windows Solutions</a></li> 4804 <li class="list-none !pl-0"><a href="/php-security-center" class="footer-menu__link text-p4-dark">PHP Security Center</a></li> 4805 <li class="list-none !pl-0"><a href="/solutions/security" class="footer-menu__link text-p4-dark">PHP Security Solutions</a></li> 4806 <li class="list-none !pl-0"><a href="/solutions/php-hosting-providers" class="footer-menu__link text-p4-dark">Hosting Provider Solutions</a></li> 4807 </ul> 4808 </div> 4809 <div class="footer-menu__section"> 4810 <div class="footer-menu__section-title text-sm mb-4">Products</div> 4811 <ul class="!pl-0 space-y-2"> 4812 <li class="list-none !pl-0"><a href="/products/zendphp-enterprise" class="footer-menu__link text-p4-d
4812ark">ZendPHP</a></li> 4813 <li class="list-none !pl-0"><a href="/services/php-long-term-support" class="footer-menu__link text-p4-dark">Zend LTS</a></li> 4814 <li class="list-none !pl-0"><a href="/products/zendhq" class="footer-menu__link text-p4-dark">ZendHQ</a></li> 4815 <li class="list-none !pl-0"><a href="/products/enterprise-web-platform" class="footer-menu__link text-p4-dark">Zend Enterprise Web Platform</a></li> 4816 </ul> 4817 </div> 4818 <div class="footer-menu__section"> 4819 <div class="footer-menu__section-title text-sm mb-4">Support</div> 4820 <ul class="!pl-0 space-y-2"> 4821 <li class="list-none !pl-0"><a href="/support" class="footer-menu__link text-p4-dark">Explore Support</a></li> 4822 <li class="list-none !pl-0"><a href="https://help.zend.com/" class="footer-menu__link text-p4-dark">Documentation</a></li> 4823 <li class="list-none !pl-0"><a href="/downloads" class="footer-menu__link text-p4-dark">Download Software</a></li> 4824 <li class="list-none !pl-0"><a href="/plugins" class="footer-menu__link text-p4-dark">Download Plugins</a></li> 4825 <li class="list-none !pl-0"><a href="https://portal.perforce.com/s/topic/0TO5Y00000ByxvrWAB/zend" class="footer-menu__link text-p4-dark">Request Support</a></li> 4826 <li class="list-none !pl-0"><a href="/pricing" class="footer-menu__link text-p4-dark">Request Pricing</a></li> 4827 </ul> 4828 </div> 4829 <div class="footer-menu__section"> 4830 <div class="footer-menu__section-title text-sm mb-4">Services</div> 4831 <ul class="!pl-0 space-y-2"> 4832 <li class="list-none !pl-0"><a href="/services" class="footer-menu__link text-p4-dark">Explore Services</a></li> 4833 <li class="list-none !pl-0"><a href="/services/black-belt-php-support-services" class="footer-menu__link text-p4-dark">Black Belt Services</a></li> 4834 <li class="list-none !pl-0"><a href="/services/migration" class="footer-menu__link text-p4-dark">Migrations Services</a></li> 4835 <li class="list-none !pl-0"><a href="/services/custom-consulting" class="footer-menu__link text-p4-dark">Custom Consulting</a></li> 4836 <li class="list-none !pl-0"><a href="/services/admin-as-a-service" class="footer-menu__link text-p4-dark">Admin as a Service</a></li> 4837 <li class="list-none !pl-0"><a href="/services/php-long-term-support" class="footer-menu__link text-p4-dark">PHP Long-Term Support</a></li> 4838 <li class="list-none !pl-0"><a href="/services/performance-auditing" class="footer-menu__link text-p4-dark">Audits</a></li> 4839 <li class="list-none !pl-0"><a href="/training/php" class="footer-menu__link text-p4-dark">Trainings</a></li> 4840 <li class="list-none !pl-0"><a href="/training/php-certification-exam" class="footer-menu__link text-p4-dark">Certifications</a></li> 4841 </ul> 4842 </div> 4843 <div class="footer-menu__section"> 4844 <div class="footer-menu__section-title text-sm mb-4">Resources</div> 4845 <ul class="!pl-0 space-y-2"> 4846 <li class="list-none !pl-0"><a href="/resources/ebooks-papers" class="footer-menu__link text-p4-dark">eBooks & Papers</a></li> 4847 <li class="list-none !pl-0"><a href="/resources/webinars" class="footer-menu__link text-p4-dark">Webinars</a></li> 4848 <li class="list-none !pl-0"><a href="/resources/videos" class="footer-menu__link text-p4-dark">Videos</a></li> 4849 <li class="list-none !pl-0"><a href="/blog" class="footer-menu__link text-p4-dark">Blog</a></li> 4850 <li class="list-none !pl-0"><a href="/customers" class="footer-menu__link text-p4-dark">Customers</a></li> 4851 <li class="list-none !pl-0">
4851<a href="/resources" class="footer-menu__link text-p4-dark">All Resources</a></li> 4852 </ul> 4853 </div> 4854 </div> 4855</div> 4856 4857 4858 </nav> 4859 4860 </div> 4861 4862<!-- Branding and Social Media Section --> 4863<div class="footer__branding_social max-w-container mx-auto py-6 flex items-center justify-between lg:flex-row flex-col"> 4864 <!-- Branding Section --> 4865 <div class="footer__branding max-w-[275px] flex-shrink-0"> 4866 4867 4868 4869<div class="logo"> 4870 4871<a 4872 class="logo__link" 4873 href="/" 4874> 4875 4876 4877 4878<img 4879 class="logo__image" 4880 src="/themes/custom/p4base/assets/images/logo.svg" 4881 alt="Logo" 4882 /> 4883 </a> 4884</div> 4885 <div class="mt-4 text-xs"> 4886 © 2026 Perforce Software Inc. All Rights Reserved. 4887 </div> 4888 <div class="mt-2 text-xs text-center lg:text-left"> 4889 <a href="https://www.perforce.com/privacy-policy">Privacy Policy</a> | 4890 <a href="https://www.perforce.com/website-terms-use">Terms of Use</a> | 4891 <a href="https://www.perforce.com/legal">Legal</a><br/> 4892 <a href="https://trust.perforce.com/">Trust Center</a> | 4893 <a id="ot-sdk-btn" class="ot-sdk-show-settings"> Cookie Manager</a><br/> 4894 <a href="https://preferences.perforce.com/form/opt_out">Do Not Sell or Share My Personal Information</a> 4895 </div> 4896 </div> 4897 4898 <!-- Social Menu Section --> 4899 <div class="footer__social flex-shrink-0 lg:flex-row flex-col"> 4900 <div class="social-menu"> 4901 <ul class="social-menu__list flex !pl-0 [&>li]:!px-4 mt-4"> 4902 </ul> 4903 </div> 4904 </div> 4905</div> 4906 4907 </div> 4908</footer> 4909 </div> 4910 4911 </div> 4912 4913 4914
4914<script type="application/json" data-drupal-selector="drupal-settings-json">{"path":{"baseUrl":"\/","pathPrefix":"","currentPath":"node\/454","currentPathIsAdmin":false,"isFront":false,"currentLanguage":"en"},"pluralDelimiter":"\u0003","suppressDeprecationErrors":true,"data":{"extlink":{"extTarget":true,"extTargetAppendNewWindowDisplay":true,"extTargetAppendNewWindowLabel":"(opens in a new window)","extTargetNoOverride":true,"extNofollow":false,"extTitleNoOverride":false,"extNoreferrer":false,"extFollowNoOverride":false,"extClass":"0","extLabel":"(link is external)","extImgClass":false,"extSubdomains":true,"extExclude":"","extInclude":"\\.pdf$","extCssExclude":"","extCssInclude":"","extCssExplicit":"","extAlert":false,"extAlertText":"This link will take you to an external web site. We are not responsible for their content.","extHideIcons":false,"mailtoClass":"0","telClass":"0","mailtoLabel":"(link sends email)","telLabel":"(link is a phone number)","extUseFontAwesome":false,"extIconPlacement":"before","extPreventOrphan":true,"extFaLinkClasses":"fa fa-external-link","extFaMailtoClasses":"fa fa-envelope-o","extAdditionalLinkClasses":"","extAdditionalMailtoClasses":"","extAdditionalTelClasses":"","extFaTelClasses":"fa fa-phone","allowedDomains":[],"extExcludeNoreferrer":""}},"photoswipe":{"options":{"showHideAnimationType":"zoom","showAnimationDuration":333,"hideAnimationDuration":333,"zoomAnimationDuration":333,"maxWidthToAnimate":4000,"easing":"cubic-bezier(.4,0,.22,1)","bgOpacity":0.8,"spacing":0.1,"initialZoomLevel":"fit","secondaryZoomLevel":"2.5","maxZoomLevel":"4","allowPanToNext":true,"loop":true,"wheelToZoom":false,"pinchToClose":true,"clickToCloseNonZoomable":true,"closeOnVerticalDrag":true,"trapFocus":true,"returnFocus":true,"escKey":true,"arrowKeys":true,"imageClickAction":"zoom-or-close","tapAction":"toggle-controls","doubleTapAction":"zoom","bgClickAction":"close","closeTitle":"Close","zoomTitle":"Zoom","arrowPrevTitle":"Previous","arrowNextTitle":"Next","downloadTitle":"Download","indexIndicatorSep":" \/ ","errorMsg":"The image could not be loaded.","preload":[1,2],"preloaderDelay":2000,"mainClass":""},"selector":"a.photoswipe:not(.no-lightbox) \u003E img"},"sitewideAlert":{"refreshInterval":2592000000,"automaticRefresh":false,"showCount":false,"serverSideRender":false},"csp":{"nonce":"8UBK3HsGxXcQDrZc2FlvwA"},"ajaxTrustedUrl":{"\/search":true},"user":{"uid":0,"permissionsHash":"3da632da63915b4d5469fa45c012fa51dcbe16dc452ff1c9582070a0f159923d"}}</script>
vendor: 1 bytes, line 4914
4914
4915<script src="/core/assets/vendor/jquery/jquery.min.js?v=4.0.0"></script>
vendor: 1 bytes, line 4915
4915
4916<script src="/sites/default/files/js/js_2-SVCok8DG5Lzim9gXPWd3Nl-8fcvUTM6iDrLUKgTWc.js?scope=footer&delta=1&language=en&theme=p4base&include=eJxljEEOhDAMAz9U6GX_gwI1EFGaKg0L_H6LBFz2Ys3YkikEE0qnpxvaUSWZI_bE3RSlp-h6mEE7HFkKQjdyrFr8hAStMw6LnBYfdMsU21td_vRU4K94eCANDQ-SmkqyFcRnWUkXmLwqPUc0K9L2VFm5rI_YzPUpk9rZKL6M_e9x52JMLs9iUnbO9eHFlhObK2zYOaCjCDV_dT8FOWfH"></script>
vendor: 1 bytes, line 4916
4916
4917<script src="//resources.perforce.com/js/forms2/js/forms2.min.js" data-cfasync="false"></script>
vendor: 1 bytes, line 4917
4917
4918<script src="/sites/default/files/js/js_VBN66Zt9U9Y7Qf9o7HqwLR2y-SILz6AiiDXYzwFAlQw.js?scope=footer&delta=3&language=en&theme=p4base&include=eJxljEEOhDAMAz9U6GX_gwI1EFGaKg0L_H6LBFz2Ys3YkikEE0qnpxvaUSWZI_bE3RSlp-h6mEE7HFkKQjdyrFr8hAStMw6LnBYfdMsU21td_vRU4K94eCANDQ-SmkqyFcRnWUkXmLwqPUc0K9L2VFm5rI_YzPUpk9rZKL6M_e9x52JMLs9iUnbO9eHFlhObK2zYOaCjCDV_dT8FOWfH"></script>
vendor: 1 bytes, line 4918
4918
4919<script src="https://static.addtoany.com/menu/page.js" defer></script>
vendor: 1 bytes, line 4919
4919
4920<script src="/sites/default/files/js/js_iiCbpb5WihnrpkHRWIEIbwcwnCH2_z6xabfiSVrt03E.js?scope=footer&delta=5&language=en&theme=p4base&include=eJxljEEOhDAMAz9U6GX_gwI1EFGaKg0L_H6LBFz2Ys3YkikEE0qnpxvaUSWZI_bE3RSlp-h6mEE7HFkKQjdyrFr8hAStMw6LnBYfdMsU21td_vRU4K94eCANDQ-SmkqyFcRnWUkXmLwqPUc0K9L2VFm5rI_YzPUpk9rZKL6M_e9x52JMLs9iUnbO9eHFlhObK2zYOaCjCDV_dT8FOWfH"></script>
vendor: 1 bytes, line 4920
4920
4921<script src="https://cdn.jsdelivr.net/npm/@alpinejs/[email protected]/dist/cdn.min.js" integrity="sha384-bKXNU7o2Y3Uk/F2PB6U0bMyGZf6pLDnePM70U7sTE3cXUQ+JLgzrr/kwipEh0p23" crossorigin="anonymous"></script>
vendor: 1 bytes, line 4921
4921
4922<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/cdn.min.js" integrity="sha384-iZD2X8o1Zdq0HR5H/7oa8W30WS4No+zWCKUPD7fHRay9I1Gf+C4F8sVmw7zec1wW" crossorigin="anonymous"></script>
vendor: 1 bytes, line 4922
4922
4923<script src="/sites/default/files/js/js_sU-xLRtRHenKhYaUoDCng_76M3wntMAOlrOIK_51O5M.js?scope=footer&delta=8&language=en&theme=p4base&include=eJxljEEOhDAMAz9U6GX_gwI1EFGaKg0L_H6LBFz2Ys3YkikEE0qnpxvaUSWZI_bE3RSlp-h6mEE7HFkKQjdyrFr8hAStMw6LnBYfdMsU21td_vRU4K94eCANDQ-SmkqyFcRnWUkXmLwqPUc0K9L2VFm5rI_YzPUpk9rZKL6M_e9x52JMLs9iUnbO9eHFlhObK2zYOaCjCDV_dT8FOWfH"></script>
vendor: 1 bytes, line 4923
4923
4924<script src="https://fast.wistia.com/player.js" async></script>
vendor: 1 bytes, line 4924
4924
4925<script src="/sites/default/files/js/js_kTqeXG6U9Z-CSqrLVk_kTLdM5I4vMGkBFwp15HoT7-0.js?scope=footer&delta=10&language=en&theme=p4base&include=eJxljEEOhDAMAz9U6GX_gwI1EFGaKg0L_H6LBFz2Ys3YkikEE0qnpxvaUSWZI_bE3RSlp-h6mEE7HFkKQjdyrFr8hAStMw6LnBYfdMsU21td_vRU4K94eCANDQ-SmkqyFcRnWUkXmLwqPUc0K9L2VFm5rI_YzPUpk9rZKL6M_e9x52JMLs9iUnbO9eHFlhObK2zYOaCjCDV_dT8FOWfH"></script>
vendor: 1 bytes, line 4925
4925
4926<script src="//cdnjs.cloudflare.com/ajax/libs/photoswipe/5.4.4/umd/photoswipe-lightbox.umd.min.js"></script>
vendor: 1 bytes, line 4926
4926
4927<script src="//cdnjs.cloudflare.com/ajax/libs/photoswipe/5.4.4/umd/photoswipe.umd.min.js"></script>
vendor: 1 bytes, line 4927
4927
4928<script src="/sites/default/files/js/js_8IQ0Jp7a_hzLXJUHd8XCthALtM3TfaSSeWwf43mjzDk.js?scope=footer&delta=13&language=en&theme=p4base&include=eJxljEEOhDAMAz9U6GX_gwI1EFGaKg0L_H6LBFz2Ys3YkikEE0qnpxvaUSWZI_bE3RSlp-h6mEE7HFkKQjdyrFr8hAStMw6LnBYfdMsU21td_vRU4K94eCANDQ-SmkqyFcRnWUkXmLwqPUc0K9L2VFm5rI_YzPUpk9rZKL6M_e9x52JMLs9iUnbO9eHFlhObK2zYOaCjCDV_dT8FOWfH"></script>
4928 4929 4930 </body> 4931</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.