[{"data":1,"prerenderedAt":373},["ShallowReactive",2],{"navigation":3,"/docs/reference/vulnerability-scanning":237,"/docs/reference/vulnerability-scanning-surround":370},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","/docs","docs",[9,12,56,85,132,153,190,207,220],{"title":10,"path":6,"stem":11},"","docs/index",{"title":13,"path":14,"stem":15,"children":16,"icon":55},"Getting Started","/docs/getting-started","docs/1.getting-started/1.index",[17,19,23,27,31,35,39,43,47,51],{"title":18,"path":14,"stem":15},"Introduction",{"title":20,"path":21,"stem":22},"Container Basics","/docs/getting-started/container-basics","docs/1.getting-started/2.container-basics",{"title":24,"path":25,"stem":26},"Installation","/docs/getting-started/installation","docs/1.getting-started/3.installation",{"title":28,"path":29,"stem":30},"These Images vs Others","/docs/getting-started/these-images-vs-others","docs/1.getting-started/4.these-images-vs-others",{"title":32,"path":33,"stem":34},"Choosing an Image","/docs/getting-started/choosing-an-image","docs/1.getting-started/5.choosing-an-image",{"title":36,"path":37,"stem":38},"Default Configurations","/docs/getting-started/default-configurations","docs/1.getting-started/6.default-configurations",{"title":40,"path":41,"stem":42},"Upgrade Guide","/docs/getting-started/upgrade-guide","docs/1.getting-started/7.upgrade-guide",{"title":44,"path":45,"stem":46},"Changelog","/docs/getting-started/changelog","docs/1.getting-started/8.changelog",{"title":48,"path":49,"stem":50},"About","/docs/getting-started/about","docs/1.getting-started/9.about",{"title":52,"path":53,"stem":54},"Contributing","/docs/getting-started/contributing","docs/1.getting-started/99.contributing",false,{"title":57,"path":58,"stem":59,"children":60,"page":55},"Image Variations","/docs/image-variations","docs/2.image-variations",[61,65,69,73,77,81],{"title":62,"path":63,"stem":64},"CLI","/docs/image-variations/cli","docs/2.image-variations/cli",{"title":66,"path":67,"stem":68},"FPM","/docs/image-variations/fpm","docs/2.image-variations/fpm",{"title":70,"path":71,"stem":72},"FPM-Apache","/docs/image-variations/fpm-apache","docs/2.image-variations/fpm-apache",{"title":74,"path":75,"stem":76},"FPM-NGINX","/docs/image-variations/fpm-nginx","docs/2.image-variations/fpm-nginx",{"title":78,"path":79,"stem":80},"FrankenPHP","/docs/image-variations/frankenphp","docs/2.image-variations/frankenphp",{"title":82,"path":83,"stem":84},"Unit (Deprecated)","/docs/image-variations/unit","docs/2.image-variations/unit",{"title":86,"path":87,"stem":88,"children":89,"page":55},"Framework Guides","/docs/framework-guides","docs/3.framework-guides",[90,123],{"title":91,"icon":55,"defaultOpen":55,"path":92,"stem":93,"children":94,"page":55},"Laravel","/docs/framework-guides/laravel","docs/3.framework-guides/1.laravel",[95,99,103,107,111,115,119],{"title":96,"path":97,"stem":98},"Automations","/docs/framework-guides/laravel/automations","docs/3.framework-guides/1.laravel/1.automations",{"title":100,"path":101,"stem":102},"Task Scheduler","/docs/framework-guides/laravel/task-scheduler","docs/3.framework-guides/1.laravel/2.task-scheduler",{"title":104,"path":105,"stem":106},"Queue","/docs/framework-guides/laravel/queue","docs/3.framework-guides/1.laravel/3.queue",{"title":108,"path":109,"stem":110},"Horizon","/docs/framework-guides/laravel/horizon","docs/3.framework-guides/1.laravel/4.horizon",{"title":112,"path":113,"stem":114},"Reverb","/docs/framework-guides/laravel/reverb","docs/3.framework-guides/1.laravel/4.reverb",{"title":116,"path":117,"stem":118},"Nightwatch","/docs/framework-guides/laravel/nightwatch","docs/3.framework-guides/1.laravel/5.nightwatch",{"title":120,"path":121,"stem":122},"Octane","/docs/framework-guides/laravel/octane","docs/3.framework-guides/1.laravel/octane",{"title":124,"icon":55,"defaultOpen":55,"path":125,"stem":126,"children":127,"page":55},"WordPress","/docs/framework-guides/wordpress","docs/3.framework-guides/2.wordpress",[128],{"title":129,"path":130,"stem":131},"Using Docker with WordPress","/docs/framework-guides/wordpress/using-wordpress-with-docker","docs/3.framework-guides/2.wordpress/4.using-wordpress-with-docker",{"title":133,"path":134,"stem":135,"children":136,"page":55},"Deployment And Production","/docs/deployment-and-production","docs/4.deployment-and-production",[137,141,145,149],{"title":138,"path":139,"stem":140},"Development to Production","/docs/deployment-and-production/development-to-production","docs/4.deployment-and-production/2.development-to-production",{"title":142,"path":143,"stem":144},"Packaging Your App for Deployment","/docs/deployment-and-production/packaging-your-app-for-deployment","docs/4.deployment-and-production/3.packaging-your-app-for-deployment",{"title":146,"path":147,"stem":148},"Configuring SSL","/docs/deployment-and-production/configuring-ssl","docs/4.deployment-and-production/4.configuring-ssl",{"title":150,"path":151,"stem":152},"Choosing a Host","/docs/deployment-and-production/choosing-a-host","docs/4.deployment-and-production/5.choosing-a-host",{"title":154,"icon":55,"defaultOpen":55,"path":155,"stem":156,"children":157,"page":55},"Advanced Guides","/docs/guide","docs/5.guide",[158,162,166,170,174,178,182,186],{"title":159,"path":160,"stem":161},"Migrating from official PHP images","/docs/guide/migrating-from-official-php-images","docs/5.guide/1.migrating-from-official-php-images",{"title":163,"path":164,"stem":165},"Using Healthchecks With Laravel","/docs/guide/using-healthchecks-with-laravel","docs/5.guide/2.using-healthchecks-with-laravel",{"title":167,"path":168,"stem":169},"Using S6 Overlay","/docs/guide/using-s6-overlay","docs/5.guide/2.using-s6-overlay",{"title":171,"path":172,"stem":173},"Understanding File Permissions","/docs/guide/understanding-file-permissions","docs/5.guide/3.understanding-file-permissions",{"title":175,"path":176,"stem":177},"Configuring Trusted Proxies","/docs/guide/configuring-trusted-proxies","docs/5.guide/4.configuring-trusted-proxies",{"title":179,"path":180,"stem":181},"Major version migrations","/docs/guide/major-version-migrations","docs/5.guide/5.major-version-migrations",{"title":183,"path":184,"stem":185},"Production performance tuning","/docs/guide/production-performance-tuning","docs/5.guide/6.production-performance-tuning",{"title":187,"path":188,"stem":189},"Verifying images","/docs/guide/verifying-images","docs/5.guide/7.verifying-images",{"title":191,"icon":55,"defaultOpen":55,"path":192,"stem":193,"children":194,"page":55},"Customization","/docs/customizing-the-image","docs/6.customizing-the-image",[195,199,203],{"title":196,"path":197,"stem":198},"Changing php.ini settings","/docs/customizing-the-image/changing-common-php-settings","docs/6.customizing-the-image/1.changing-common-php-settings",{"title":200,"path":201,"stem":202},"Installing PHP extensions","/docs/customizing-the-image/installing-additional-php-extensions","docs/6.customizing-the-image/2.installing-additional-php-extensions",{"title":204,"path":205,"stem":206},"Adding Start Up Scripts","/docs/customizing-the-image/adding-your-own-start-up-scripts","docs/6.customizing-the-image/3.adding-your-own-start-up-scripts",{"title":208,"path":209,"stem":210,"children":211,"page":55},"Troubleshooting","/docs/troubleshooting","docs/7.troubleshooting",[212,216],{"title":213,"path":214,"stem":215},"Common Issues","/docs/troubleshooting/common-issues","docs/7.troubleshooting/1.common-issues",{"title":217,"path":218,"stem":219},"Getting Help","/docs/troubleshooting/getting-help","docs/7.troubleshooting/2.getting-help",{"title":221,"path":222,"stem":223,"children":224,"page":55},"Reference","/docs/reference","docs/8.reference",[225,229,233],{"title":226,"path":227,"stem":228},"Environment Variable Specification","/docs/reference/environment-variable-specification","docs/8.reference/1.environment-variable-specification",{"title":230,"path":231,"stem":232},"Command Reference","/docs/reference/command-reference","docs/8.reference/2.command-reference",{"title":234,"path":235,"stem":236},"Vulnerability scanning","/docs/reference/vulnerability-scanning","docs/8.reference/3.vulnerability-scanning",{"id":238,"title":234,"body":239,"description":361,"extension":362,"links":363,"meta":364,"navigation":367,"path":235,"redirect":363,"seo":368,"stem":236,"__hash__":369},"docs/docs/8.reference/3.vulnerability-scanning.md",{"type":240,"value":241,"toc":354},"minimark",[242,249,254,270,273,277,286,289,293,300,308,312,315,341,350],[243,244,245],"lead-p",{},[246,247,248],"p",{},"Every image we publish is scanned for known vulnerabilities after each production build. The results are public, and the numbers to watch are the fixable ones.",[250,251,253],"h2",{"id":252},"when-and-how-images-are-scanned","When and how images are scanned",[246,255,256,257,264,265,269],{},"A scan runs after every production publish. That covers each release, the Tuesday 08:00 UTC weekly rebuild, and the runs that ship new PHP patches. ",[258,259,263],"a",{"href":260,"rel":261},"https://github.com/anchore/grype",[262],"nofollow","Grype"," scans the ",[266,267,268],"code",{},"linux/amd64"," image of every published tag, pulled from GitHub Packages.",[246,271,272],{},"The scan job has no access token and no registry credentials, and Grype runs in its own container. A compromised scanner would have nothing to steal and nothing it could publish.",[250,274,276],{"id":275},"see-the-latest-results","See the latest results",[246,278,279,280,285],{},"Open the ",[258,281,284],{"href":282,"rel":283},"https://github.com/serversideup/docker-php/actions/workflows/action_publish-images-production.yml?query=is%3Asuccess",[262],"latest successful production run",". Its summary page has a table for each variation with every image's critical, high, and medium counts, and how many findings have a fix.",[246,287,288],{},"Findings that have a fix also become code scanning alerts for the maintainers. Each one closes once a scan no longer finds it.",[250,290,292],{"id":291},"most-findings-have-no-fix-yet","Most findings have no fix yet",[246,294,295,296,299],{},"A scanner matches every package in the image against public CVE databases. Many of the CVEs it reports are ones the distribution has marked \"not fixed\" or \"won't fix\", so there is no newer package to install. A scan of ",[266,297,298],{},"8.5-cli-bookworm"," found 18 critical and 144 high CVEs, and none of them had a fix.",[246,301,302,303],{},"No rebuild can change an unfixed finding. The fixable count is the meaningful number. The docker-library project explains this in more depth in ",[258,304,307],{"href":305,"rel":306},"https://github.com/docker-library/faq#why-does-my-security-scanner-show-that-an-image-has-cves",[262],"Why does my security scanner show that an image has CVEs?",[250,309,311],{"id":310},"scan-it-yourself","Scan it yourself",[246,313,314],{},"You don't have to rely on our scan. The images are public and work with any scanner:",[316,317,322],"pre",{"className":318,"code":319,"filename":320,"language":321,"meta":10,"style":10},"language-bash shiki shiki-themes github-dark","grype serversideup/php:8.5-cli --only-fixed\n","Terminal","bash",[266,323,324],{"__ignoreMap":10},[325,326,329,333,337],"span",{"class":327,"line":328},"line",1,[325,330,332],{"class":331},"svObZ","grype",[325,334,336],{"class":335},"sU2Wk"," serversideup/php:8.5-cli",[325,338,340],{"class":339},"sDLfK"," --only-fixed\n",[246,342,343,344,349],{},"To report a problem in our own scripts, configs, or workflows, use ",[258,345,348],{"href":346,"rel":347},"https://github.com/serversideup/docker-php/security/policy",[262],"private vulnerability reporting"," instead.",[351,352,353],"style",{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":10,"searchDepth":355,"depth":355,"links":356},2,[357,358,359,360],{"id":252,"depth":355,"text":253},{"id":275,"depth":355,"text":276},{"id":291,"depth":355,"text":292},{"id":310,"depth":355,"text":311},"How every published serversideup/php image is scanned for known vulnerabilities, and where to see the results.","md",null,{"head":365,"layout":7},{"title":366},"Vulnerability Scanning - Docker PHP - Server Side Up",true,{"title":234,"description":361},"Jh1YQ0b-Nxjvi8EhZlU4fqEw-xqwdMM40vfgzh2PohI",[371,363],{"title":230,"path":231,"stem":232,"description":372,"children":-1},"Learn about all the commands available within the serversideup/php image to improve your developer experience.",1793396140250]