{
  "id": 19408512,
  "title": "How do you verify a deploy when you have no shell access?",
  "url": "https://urgent.news/2026/11/10/how-do-you-verify-a-deploy-when-you-have-no-shell-access",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-11-10T22:42:00.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/bryanhamiltondev/how-do-you-verify-a-deploy-when-you-have-no-shell-access-3di7"
  },
  "original_language": "en",
  "account": "In a shared cPanel hosting environment without SSH or terminal access, one reporter relies on a self-verifying deployment process for their PHP sites. This approach involves uploading a single PHP file through the cPanel file manager and triggering the deployment by hitting the file in a web browser. The deployment file incorporates several key features to ensure a reliable and safe deployment process.\n\nFirstly, a token gate is embedded within the URL, which restricts access to authorized users only. This prevents unauthorized triggers of the deployment process. Secondly, a needle matching mechanism is employed, wherein the patch only gets applied if an exact marker string is present in the source code. This ensures that the deployment only occurs when intended and avoids accidental changes. Thirdly, a lint check, similar to the \"php -l\" command, is performed on the patched result before committing the changes. If the lint check fails, the deployment automatically rolls back to the previous state, preventing any potential issues.\n\nAfter the lint check, a dry-run mode is employed, which reports the count of needle matches in the HTML output before making any changes. This step allows the reporter to verify the number of matches and ensure that the patch will land cleanly without any conflicts. Finally, a cache-buster query string is added to the live page URL to force a refresh of the cached content. The reporter then manually checks the served HTML for the presence of the patch marker to confirm the successful deployment.\n\nWhile this self-verifying deployment process has been effective and saved the reporter from numerous headaches, the reporter acknowledges that it may appear overengineered due to the lack of shell access. They wonder if others in similar situations trust their host's staging tools, push changes from Git repositories elsewhere, or have developed their own unique deployment mechanisms. The reporter invites others to share their war stories, especially those that ended badly, as a way to learn from each other's experiences in this challenging environment.",
  "summary": "Genuine question, because I have a weird constraint and I'm curious how everyone else handles it. I run two PHP sites on shared cPanel hosting. No SSH, no shell, no CI runner, nothing touches the server except the cPanel file manager and FTP. For years my deploys were: edit file, upload, refresh the page, squint, hope. That got old fast, so I built something I call self-verifying worker files. A…",
  "key_points": [
    "Self-verifying deployment process used in cPanel without SSH access",
    "Token gate, needle matching, and lint check ensure safe deployment",
    "Dry-run mode and cache-buster verify successful patch deployment"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}