<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>PHP on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/php/</link>
        <description>Recent content in PHP on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Sun, 13 Jul 2025 15:30:11 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/php/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>wordpress-develop</title>
        <link>https://producthunt.programnotes.cn/en/p/wordpress-develop/</link>
        <pubDate>Sun, 13 Jul 2025 15:30:11 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/wordpress-develop/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1582575633518-b2b7d205a386?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTIzOTE3NDd8&amp;ixlib=rb-4.1.0" alt="Featured image of post wordpress-develop" /&gt;&lt;h1 id=&#34;wordpresswordpress-develop&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/WordPress/wordpress-develop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WordPress/wordpress-develop&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;wordpress&#34;&gt;WordPress
&lt;/h1&gt;&lt;p&gt;Welcome to the WordPress development repository! Please check out the &lt;a class=&#34;link&#34; href=&#34;https://make.wordpress.org/core/handbook/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;contributor handbook&lt;/a&gt; for information about how to open bug reports, contribute patches, test changes, write documentation, or get involved in any way you can.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#getting-started&#34; &gt;Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#credentials&#34; &gt;Credentials&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;getting-started&#34;&gt;Getting Started
&lt;/h2&gt;&lt;p&gt;WordPress is a PHP, MySQL, and JavaScript based project, and uses Node for its JavaScript dependencies. A local development environment is available to quickly get up and running.&lt;/p&gt;
&lt;p&gt;You will need a basic understanding of how to use the command line on your computer. This will allow you to set up the local development environment, to start it and stop it when necessary, and to run the tests.&lt;/p&gt;
&lt;p&gt;You will need Node and npm installed on your computer. Node is a JavaScript runtime used for developer tooling, and npm is the package manager included with Node. If you have a package manager installed for your operating system, setup can be as straightforward as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;macOS: &lt;code&gt;brew install node&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Windows: &lt;code&gt;choco install nodejs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ubuntu: &lt;code&gt;apt install nodejs npm&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are not using a package manager, see the &lt;a class=&#34;link&#34; href=&#34;https://nodejs.org/en/download/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Node.js download page&lt;/a&gt; for installers and binaries.&lt;/p&gt;
&lt;p&gt;You will also need &lt;a class=&#34;link&#34; href=&#34;https://www.docker.com/products/docker-desktop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker&lt;/a&gt; installed and running on your computer. Docker is the virtualization software that powers the local development environment. Docker can be installed just like any other regular application.&lt;/p&gt;
&lt;h3 id=&#34;development-environment-commands&#34;&gt;Development Environment Commands
&lt;/h3&gt;&lt;p&gt;Ensure &lt;a class=&#34;link&#34; href=&#34;https://www.docker.com/products/docker-desktop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker&lt;/a&gt; is running before using these commands.&lt;/p&gt;
&lt;h4 id=&#34;to-start-the-development-environment-for-the-first-time&#34;&gt;To start the development environment for the first time
&lt;/h4&gt;&lt;p&gt;Clone the current repository using &lt;code&gt;git clone https://github.com/WordPress/wordpress-develop.git&lt;/code&gt;. Then in your terminal move to the repository folder &lt;code&gt;cd wordpress-develop&lt;/code&gt; and run the following commands:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run build:dev
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run env:start
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run env:install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Your WordPress site will accessible at http://localhost:8889. You can see or change configurations in the &lt;code&gt;.env&lt;/code&gt; file located at the root of the project directory.&lt;/p&gt;
&lt;h4 id=&#34;to-watch-for-changes&#34;&gt;To watch for changes
&lt;/h4&gt;&lt;p&gt;If you&amp;rsquo;re making changes to WordPress core files, you should start the file watcher in order to build or copy the files as necessary:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To stop the watcher, press &lt;code&gt;ctrl+c&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&#34;to-run-a-wp-cli-command&#34;&gt;To run a &lt;a class=&#34;link&#34; href=&#34;https://make.wordpress.org/cli/handbook/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WP-CLI&lt;/a&gt; command
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run env:cli &amp;lt;command&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;WP-CLI has a lot of &lt;a class=&#34;link&#34; href=&#34;https://developer.wordpress.org/cli/commands/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;useful commands&lt;/a&gt; you can use to work on your WordPress site. Where the documentation mentions running &lt;code&gt;wp&lt;/code&gt;, run &lt;code&gt;npm run env:cli&lt;/code&gt; instead. For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run env:cli help
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;to-run-the-tests&#34;&gt;To run the tests
&lt;/h4&gt;&lt;p&gt;These commands run the PHP and end-to-end test suites, respectively:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run test:php
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run test:e2e
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;to-restart-the-development-environment&#34;&gt;To restart the development environment
&lt;/h4&gt;&lt;p&gt;You may want to restart the environment if you&amp;rsquo;ve made changes to the configuration in the &lt;code&gt;docker-compose.yml&lt;/code&gt; or &lt;code&gt;.env&lt;/code&gt; files. Restart the environment with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run env:restart
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;to-stop-the-development-environment&#34;&gt;To stop the development environment
&lt;/h4&gt;&lt;p&gt;You can stop the environment when you&amp;rsquo;re not using it to preserve your computer&amp;rsquo;s power and resources:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run env:stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;to-start-the-development-environment-again&#34;&gt;To start the development environment again
&lt;/h4&gt;&lt;p&gt;Starting the environment again is a single command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run env:start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;credentials&#34;&gt;Credentials
&lt;/h2&gt;&lt;p&gt;These are the default environment credentials:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Database Name: &lt;code&gt;wordpress_develop&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Username: &lt;code&gt;root&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Password: &lt;code&gt;password&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To login to the site, navigate to http://localhost:8889/wp-admin.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Username: &lt;code&gt;admin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Password: &lt;code&gt;password&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To generate a new password (recommended):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to the Dashboard&lt;/li&gt;
&lt;li&gt;Click the Users menu on the left&lt;/li&gt;
&lt;li&gt;Click the Edit link below the admin user&lt;/li&gt;
&lt;li&gt;Scroll down and click &amp;lsquo;Generate password&amp;rsquo;. Either use this password (recommended) or change it, then click &amp;lsquo;Update User&amp;rsquo;. If you use the generated password be sure to save it somewhere (password manager, etc).&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>frankenphp</title>
        <link>https://producthunt.programnotes.cn/en/p/frankenphp/</link>
        <pubDate>Sat, 21 Jun 2025 15:27:20 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/frankenphp/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1669330230237-a828c49281df?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTA0OTA4MDd8&amp;ixlib=rb-4.1.0" alt="Featured image of post frankenphp" /&gt;&lt;h1 id=&#34;phpfrankenphp&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/php/frankenphp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;php/frankenphp&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;frankenphp-modern-app-server-for-php&#34;&gt;FrankenPHP: Modern App Server for PHP
&lt;/h1&gt;&lt;h1 align=&#34;center&#34;&gt;&lt;a href=&#34;https://frankenphp.dev&#34;&gt;&lt;img src=&#34;frankenphp.png&#34; alt=&#34;FrankenPHP&#34; width=&#34;600&#34;&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;FrankenPHP is a modern application server for PHP built on top of the &lt;a class=&#34;link&#34; href=&#34;https://caddyserver.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Caddy&lt;/a&gt; web server.&lt;/p&gt;
&lt;p&gt;FrankenPHP gives superpowers to your PHP apps thanks to its stunning features: &lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/early-hints/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;em&gt;Early Hints&lt;/em&gt;&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/worker/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;worker mode&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/mercure/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;real-time capabilities&lt;/a&gt;, automatic HTTPS, HTTP/2, and HTTP/3 support&amp;hellip;&lt;/p&gt;
&lt;p&gt;FrankenPHP works with any PHP app and makes your Laravel and Symfony projects faster than ever thanks to their official integrations with the worker mode.&lt;/p&gt;
&lt;p&gt;FrankenPHP can also be used as a standalone Go library to embed PHP in any app using &lt;code&gt;net/http&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Learn more&lt;/strong&gt; on &lt;em&gt;frankenphp.dev&lt;/em&gt;&lt;/a&gt; and in this slide deck:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://dunglas.dev/2022/10/frankenphp-the-modern-php-app-server-written-in-go/&#34;&gt;&lt;img src=&#34;https://dunglas.dev/wp-content/uploads/2022/10/frankenphp.png&#34; alt=&#34;Slides&#34; width=&#34;600&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;getting-started&#34;&gt;Getting Started
&lt;/h2&gt;&lt;h3 id=&#34;standalone-binary&#34;&gt;Standalone Binary
&lt;/h3&gt;&lt;p&gt;We provide static FrankenPHP binaries for Linux and macOS
containing &lt;a class=&#34;link&#34; href=&#34;https://www.php.net/releases/8.4/en.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PHP 8.4&lt;/a&gt; and most popular PHP extensions.&lt;/p&gt;
&lt;p&gt;On Windows, use &lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/windows/wsl/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WSL&lt;/a&gt; to run FrankenPHP.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/dunglas/frankenphp/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Download FrankenPHP&lt;/a&gt; or copy this line into your
terminal to automatically install the version appropriate for your platform:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;curl https://frankenphp.dev/install.sh | sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;mv frankenphp /usr/local/bin/
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To serve the content of the current directory, run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;frankenphp php-server
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;You can also run command-line scripts with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;frankenphp php-cli /path/to/your/script.php
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;docker&#34;&gt;Docker
&lt;/h3&gt;&lt;p&gt;Alternatively, &lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/docker/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker images&lt;/a&gt; are available:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;docker run -v .:/app/public \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    -p 80:80 -p 443:443 -p 443:443/udp \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    dunglas/frankenphp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Go to &lt;code&gt;https://localhost&lt;/code&gt;, and enjoy!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]&lt;/p&gt;
&lt;p&gt;Do not attempt to use &lt;code&gt;https://127.0.0.1&lt;/code&gt;. Use &lt;code&gt;https://localhost&lt;/code&gt; and accept the self-signed certificate.
Use the &lt;a class=&#34;link&#34; href=&#34;docs/config.md#environment-variables&#34; &gt;&lt;code&gt;SERVER_NAME&lt;/code&gt; environment variable&lt;/a&gt; to change the domain to use.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;homebrew&#34;&gt;Homebrew
&lt;/h3&gt;&lt;p&gt;FrankenPHP is also available as a &lt;a class=&#34;link&#34; href=&#34;https://brew.sh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Homebrew&lt;/a&gt; package for macOS and Linux.&lt;/p&gt;
&lt;p&gt;To install it:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;brew install dunglas/frankenphp/frankenphp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To serve the content of the current directory, run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;frankenphp php-server
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;docs&#34;&gt;Docs
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/classic/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Classic mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/worker/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Worker mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/early-hints/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Early Hints support (103 HTTP status code)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/mercure/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Real-time&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/x-sendfile/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Efficiently Serving Large Static Files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/config/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/docker/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker images&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/production/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Deploy in production&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/performance/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Performance optimization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/embed/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Create &lt;strong&gt;standalone&lt;/strong&gt;, self-executable PHP apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/static/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Create static binaries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/compile/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Compile from sources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/metrics/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Monitoring FrankenPHP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/laravel/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Laravel integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/known-issues/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Known issues&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/dunglas/frankenphp-demo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Demo app (Symfony) and benchmarks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://pkg.go.dev/github.com/dunglas/frankenphp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Go library documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/contributing/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Contributing and debugging&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;examples-and-skeletons&#34;&gt;Examples and Skeletons
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/dunglas/symfony-docker&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Symfony&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://api-platform.com/docs/symfony&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;API Platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://frankenphp.dev/docs/laravel/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Laravel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://sulu.io/blog/running-sulu-with-frankenphp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sulu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/StephenMiracle/frankenwp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WordPress&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/dunglas/frankenphp-drupal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Drupal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/alexandreelise/frankenphp-joomla&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Joomla&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ochorocho/franken-typo3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TYPO3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ekino/frankenphp-magento2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Magento2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
