<?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 Lukas Manera</title><link>https://blog.xarc.dev/tags/php/</link><description>Recent content in Php on Lukas Manera</description><generator>Hugo</generator><language>en-us</language><copyright>&lt;a href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank" rel="noopener"&gt;CC BY-NC 4.0&lt;/a&gt;</copyright><lastBuildDate>Tue, 07 Apr 2026 01:12:41 +0200</lastBuildDate><atom:link href="https://blog.xarc.dev/tags/php/index.xml" rel="self" type="application/rss+xml"/><item><title>Playbook for Hardening Legacy PHP</title><link>https://blog.xarc.dev/posts/2026/04/playbook-for-hardening-legacy-php/</link><pubDate>Mon, 06 Apr 2026 12:00:00 +0200</pubDate><guid>https://blog.xarc.dev/posts/2026/04/playbook-for-hardening-legacy-php/</guid><description>&lt;p&gt;This is my practical follow-up to my post on &lt;a href="https://blog.xarc.dev/posts/2026/04/hardening-legacy-php-in-constrained-environments/"&gt;threat modeling legacy PHP in constrained environments&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That post is more about mindset, prioritization, and how to think about risk when the system is messy but the business relies on it.&lt;/p&gt;
&lt;p&gt;This one is the hands-on version. It is the kind of outline I come back to at the start of a new project where the codebase is fragile, the DevOps story is rudimentary at best, and nobody is getting six months to clean things up before security work starts.&lt;/p&gt;</description></item><item><title>tracepack</title><link>https://blog.xarc.dev/showcase/tracepack/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.xarc.dev/showcase/tracepack/</guid><description>&lt;p&gt;&lt;strong&gt;tracepack&lt;/strong&gt; is a small Go CLI that quickly scans codebases for patterns and saves the results as Markdown, designed to stay simple, fast, and flexible through YAML profiles.&lt;/p&gt;
&lt;div class="showcase-overview"&gt;
 &lt;div class="showcase-overview__grid"&gt;&lt;section class="showcase-overview__card showcase-overview__card--stack"&gt;
 &lt;h3&gt;Stack&lt;/h3&gt;
 &lt;div class="showcase-overview__tags"&gt;&lt;a class="showcase-overview__badge-wrap" href="https://go.dev/" target="_blank" rel="noopener" title="Go"&gt;
 &lt;img
 class="showcase-overview__badge"
 src="https://img.shields.io/badge/Go-00ADD8?style=flat-square&amp;amp;logo=go&amp;amp;logoColor=white"
 alt="Go badge"
 loading="lazy"&gt;
 &lt;/a&gt;&lt;/div&gt;
 &lt;/section&gt;&lt;section class="showcase-overview__card"&gt;
 &lt;h3&gt;Why I built it&lt;/h3&gt;
 &lt;div class="showcase-overview__copy"&gt;When you inherit a large, old, or unfamiliar codebase, the first problem is usually not deep semantic analysis. It is getting a fast, reusable overview of what is there: size, structure, hotspots, and recurring patterns worth reviewing first.&lt;/div&gt;
 &lt;/section&gt;&lt;section class="showcase-overview__card"&gt;
 &lt;h3&gt;Tradeoffs&lt;/h3&gt;
 &lt;div class="showcase-overview__copy"&gt;The tool is intentionally lightweight and pattern-driven. That keeps it flexible and easy to adapt with YAML profiles, but it also means it is not a replacement for deeper static analysis, framework-aware tooling, or manual review.&lt;/div&gt;
 &lt;/section&gt;&lt;section class="showcase-overview__card"&gt;
 &lt;h3&gt;Notes&lt;/h3&gt;
 &lt;div class="showcase-overview__copy"&gt;The most useful output is often a compact footprint plus a saved Markdown bundle of searches and command output. That makes triage, migration planning, legacy reviews, and sharing findings with others much easier.&lt;/div&gt;
 &lt;/section&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;It supports two modes:&lt;/p&gt;</description></item><item><title>Hardening Legacy PHP in Constrained Environments</title><link>https://blog.xarc.dev/posts/2026/04/hardening-legacy-php-in-constrained-environments/</link><pubDate>Sun, 05 Apr 2026 12:00:00 +0200</pubDate><guid>https://blog.xarc.dev/posts/2026/04/hardening-legacy-php-in-constrained-environments/</guid><description>&lt;p&gt;The moment you realize that the roughest codebase you’ve seen is also one of the most valuable systems you’ve touched, things start to look a little different.&lt;/p&gt;
&lt;p&gt;“Just modernize it” is not a security strategy if the main thing that matters is keeping core business processes running in a system that drives major revenue.&lt;/p&gt;
&lt;p&gt;If you get called into an old PHP application, it can feel a bit like arriving at a crash site. After the initial shock, instead of judging, you start to think like an emergency responder: assess the scene, stabilize what matters most, and reduce the risk without making the situation worse.&lt;/p&gt;</description></item><item><title>MATA: Monitoring Legacy PHP Applications</title><link>https://blog.xarc.dev/posts/2025/06/mata-monitoring-legacy-php-applications/</link><pubDate>Tue, 10 Jun 2025 10:00:00 +0200</pubDate><guid>https://blog.xarc.dev/posts/2025/06/mata-monitoring-legacy-php-applications/</guid><description>&lt;p&gt;Most monitoring platforms assume you control the environment.&lt;/p&gt;
&lt;p&gt;They assume you can install agents, open ports, run background services, provision a database, and standardize deployment across every machine you touch.&lt;/p&gt;
&lt;p&gt;That is not the reality I run into most often.&lt;/p&gt;
&lt;p&gt;A lot of the PHP systems I work with are older revenue-generating applications running on shared hosting, constrained VPS setups, or managed servers where &amp;ldquo;just install another service&amp;rdquo; is not a serious option. They are often business-critical, rarely refactored, and maintained with a pragmatic mindset: keep them running, keep them secure, and avoid unnecessary moving parts.&lt;/p&gt;</description></item></channel></rss>