<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Prafful Sharma</title>
    <description>The latest articles on DEV Community by Prafful Sharma (@hashencoder).</description>
    <link>https://dev.to/hashencoder</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4202375%2F4be51ae5-8a35-4fa9-ba53-bcd25e74ba19.jpg</url>
      <title>DEV Community: Prafful Sharma</title>
      <link>https://dev.to/hashencoder</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hashencoder"/>
    <language>en</language>
    <item>
      <title>XAMPP stopped at PHP 8.2, so I built a modern replacement for Windows</title>
      <dc:creator>Prafful Sharma</dc:creator>
      <pubDate>Sat, 31 Oct 2026 17:56:33 +0000</pubDate>
      <link>https://dev.to/hashencoder/xampp-stopped-at-php-82-so-i-built-a-modern-replacement-for-windows-2a8a</link>
      <guid>https://dev.to/hashencoder/xampp-stopped-at-php-82-so-i-built-a-modern-replacement-for-windows-2a8a</guid>
      <description>&lt;p&gt;XAMPP got a lot of us started with PHP. Unzip it, click Start, open &lt;code&gt;localhost&lt;/code&gt;, done. It's still what many tutorials and colleges use.&lt;/p&gt;

&lt;p&gt;But XAMPP's last Windows release came out in &lt;a href="https://news.mynavi.jp/techplus/article/20231122-2825096/" rel="noopener noreferrer"&gt;November 2023&lt;/a&gt;, and the newest PHP it ships is 8.2. PHP 8.5 was released on &lt;a href="https://php.watch/versions/8.5/releases" rel="noopener noreferrer"&gt;20 November 2025&lt;/a&gt;, and PHP 8.2 gets security fixes only until &lt;a href="https://www.php.net/supported-versions.php" rel="noopener noreferrer"&gt;31 December 2026&lt;/a&gt;. I wanted a local stack for Windows that keeps up with PHP releases, is free for any use and doesn't need admin rights, so I built &lt;strong&gt;ServNook&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's free and open source (MIT): &lt;strong&gt;&lt;a href="https://github.com/hashencoder/servnook" rel="noopener noreferrer"&gt;github.com/hashencoder/servnook&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Femmpxz650n0o4ywngs5h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Femmpxz650n0o4ywngs5h.png" alt="The ServNook control panel" width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I wanted from a local stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Official binaries&lt;/strong&gt;, not repackaged ones, and downloads that are verified&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sites without editing the hosts file&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Several PHP versions&lt;/strong&gt; at once&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data that survives&lt;/strong&gt; a crash, a dead battery or a bad update&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nothing exposed to the network&lt;/strong&gt; unless I ask for it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free and open source&lt;/strong&gt;, including for commercial work&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How ServNook works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Install and first run
&lt;/h3&gt;

&lt;p&gt;The installer is per-user: it goes to &lt;code&gt;C:\ServNook&lt;/code&gt; and needs no admin rights. On first run, ServNook looks up and downloads the current official Windows builds of Apache (Apache Lounge), PHP 8.5, MariaDB (the 12.3 LTS series), phpMyAdmin, Node.js LTS and Composer, plus a CA bundle so PHP's HTTPS calls work. Where the publisher provides a SHA-256 checksum, the download is verified against it before anything is installed.&lt;/p&gt;

&lt;p&gt;Nothing is installed system-wide. ServNook lives in one folder, like XAMPP.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Every folder is a site&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create &lt;code&gt;www\blog&lt;/code&gt;, click &lt;strong&gt;Refresh sites&lt;/strong&gt;, and it's served at &lt;code&gt;http://blog.localhost&lt;/code&gt;. No hosts file, no admin rights. If the folder has a &lt;code&gt;public\&lt;/code&gt; directory (Laravel, Symfony), that becomes the document root. The &lt;code&gt;localhost&lt;/code&gt; dashboard lists your sites and recognises Laravel, WordPress, Symfony, CodeIgniter, Drupal and Joomla.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8govlq7gq6kyqh54t6rf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8govlq7gq6kyqh54t6rf.png" alt="Every folder in www gets its own .localhost address" width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  PHP versions and the &lt;code&gt;snook&lt;/code&gt; command
&lt;/h3&gt;

&lt;p&gt;You can keep several PHP versions side by side and switch in the app or from a terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;snook status
snook start
snook php 8.4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There's also a &lt;strong&gt;Shell&lt;/strong&gt; button that opens a console with &lt;code&gt;php&lt;/code&gt;, &lt;code&gt;node&lt;/code&gt;, &lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;composer&lt;/code&gt; and the MariaDB client on PATH.&lt;/p&gt;

&lt;h3&gt;
  
  
  Node apps
&lt;/h3&gt;

&lt;p&gt;Modern PHP projects often come with a Vite dev server or a small Node API. ServNook runs Node apps as managed processes: register the folder and command once, and the app gets its own &lt;code&gt;http://name.localhost&lt;/code&gt; address through Apache, websockets included.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part I care about most: not losing data
&lt;/h2&gt;

&lt;p&gt;Local databases are easy to treat as disposable, until the day they aren't. If you've used XAMPP for a while, you've probably seen "MySQL shutdown unexpectedly" after Windows restarted or the laptop battery died.&lt;/p&gt;

&lt;p&gt;ServNook runs MariaDB with crash-safe settings (&lt;code&gt;innodb_flush_log_at_trx_commit=1&lt;/code&gt;, the doublewrite buffer on). It stops the database cleanly when Windows shuts down, takes a backup every two hours and before every stop, keeps the last ten, and can restore one or rebuild the data folder after a crash.&lt;/p&gt;

&lt;p&gt;Updates and configuration changes follow the same rule:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Back up first.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check with the real tool&lt;/strong&gt; (&lt;code&gt;httpd -t&lt;/code&gt;, or a scratch &lt;code&gt;mariadbd&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Roll back automatically&lt;/strong&gt; if the server doesn't come back healthy.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Security defaults
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local-only by default.&lt;/strong&gt; Apache, MariaDB and phpMyAdmin listen on &lt;code&gt;127.0.0.1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optional network access&lt;/strong&gt; for testing on your phone over Wi-Fi. It opens your sites only, never phpMyAdmin or the database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The database root password&lt;/strong&gt; is stored encrypted with Windows DPAPI in ServNook's settings. phpMyAdmin signs in as root automatically on this PC; you can turn that off on a shared PC.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Moving from XAMPP
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Database tools → Import from XAMPP&lt;/strong&gt; copies your XAMPP databases and &lt;code&gt;htdocs&lt;/code&gt; projects into ServNook, without changing XAMPP. Stop XAMPP's MySQL first. If it has crashed, there's a recovery option for that too.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it compares
&lt;/h2&gt;

&lt;p&gt;A short, fair comparison, with rows I've checked:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;ServNook&lt;/th&gt;
&lt;th&gt;XAMPP&lt;/th&gt;
&lt;th&gt;Laragon&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Licence&lt;/td&gt;
&lt;td&gt;MIT, free for any use&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free for non-commercial use; commercial use needs a &lt;a href="https://laragon.org/pricing" rel="noopener noreferrer"&gt;paid licence&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Newest PHP&lt;/td&gt;
&lt;td&gt;8.5&lt;/td&gt;
&lt;td&gt;8.2&lt;/td&gt;
&lt;td&gt;Bundled; add others yourself&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Several PHP versions&lt;/td&gt;
&lt;td&gt;Side by side&lt;/td&gt;
&lt;td&gt;One per installation&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Automatic database backups&lt;/td&gt;
&lt;td&gt;Every 2 h and on stop&lt;/td&gt;
&lt;td&gt;Manual&lt;/td&gt;
&lt;td&gt;Manual&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sites at name.localhost&lt;/td&gt;
&lt;td&gt;Automatic&lt;/td&gt;
&lt;td&gt;Edit vhosts yourself&lt;/td&gt;
&lt;td&gt;Automatic (&lt;code&gt;.test&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Laragon is a polished tool, and if it works for you, great. ServNook is for people who want the XAMPP way of working with current versions, at no cost for commercial use.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's not done yet
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Code signing.&lt;/strong&gt; The installer isn't signed yet, so Windows SmartScreen may show "Windows protected your PC" the first time. Click &lt;strong&gt;More info → Run anyway&lt;/strong&gt;. Every download has a &lt;code&gt;.sha256&lt;/code&gt; file next to it, the builds are made by GitHub Actions from the public source, and you can build it yourself. Free signing for open-source projects needs some traction first, so stars genuinely help.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linux and macOS.&lt;/strong&gt; ServNook is Windows-only for now.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next:&lt;/strong&gt; more polish from real-world feedback, which is where you come in.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Installer:&lt;/strong&gt; &lt;a href="https://github.com/hashencoder/servnook/releases/latest/download/ServNook-Setup.exe" rel="noopener noreferrer"&gt;ServNook-Setup.exe&lt;/a&gt; (always the latest version), or a portable zip from &lt;a href="https://github.com/hashencoder/servnook/releases/latest" rel="noopener noreferrer"&gt;Releases&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scoop:&lt;/strong&gt; &lt;code&gt;scoop bucket add servnook https://github.com/hashencoder/servnook&lt;/code&gt; then &lt;code&gt;scoop install servnook&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;winget:&lt;/strong&gt; &lt;code&gt;winget install ServNook.ServNook&lt;/code&gt; (in review, coming soon)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No account, no telemetry. If it's useful to you, a ⭐ on &lt;a href="https://github.com/hashencoder/servnook" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; helps more people find it.&lt;/p&gt;

&lt;p&gt;If something breaks on your machine, please open an &lt;a href="https://github.com/hashencoder/servnook/issues" rel="noopener noreferrer"&gt;issue&lt;/a&gt; or start a &lt;a href="https://github.com/hashencoder/servnook/discussions" rel="noopener noreferrer"&gt;discussion&lt;/a&gt;. I'll read every comment here too.&lt;/p&gt;

</description>
      <category>php</category>
      <category>windows</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
