diff --git a/meta/main.yml b/meta/main.yml
index 120d6017adfcf9d9214f86774c137f8a0d0f1f5b..61c5d01e1d0e73a61810413a7857fa20b5e5513f 100644
--- a/meta/main.yml
+++ b/meta/main.yml
@@ -3,17 +3,15 @@ galaxy_info:
   role_name: php
   author: Chris Croome
   namespace: chriscroome
-  description: Ansible role for installing and configuring PHP on Debian
+  description: Ansible role for installing and configuring PHP on Debian Bullseye and Buster
   company: Webarchitects Co-operative
   license: GNU General Public License v3.0 (GPLv3)
   min_ansible_version: 2.11
   platforms:
     - name: Debian
       versions:
-        - bookworm
         - bullseye
         - buster
-        - stretch
   galaxy_tags:
     - debian
     - php
diff --git a/tasks/checks.yml b/tasks/checks.yml
index 195b5c92011a99c893823cb254c98b0ac0c36de6..80f604d1291925d3fcaa39d14dac5a61538ba9ab 100644
--- a/tasks/checks.yml
+++ b/tasks/checks.yml
@@ -19,11 +19,11 @@
           - php_opcache_validate_root | type_debug == "bool"
         quiet: "{% if ansible_verbosity == 0 %}true{% else %}false{% endif %}"
 
-    - name: Check that the distro is Debian Bookworm, Bullseye, Buster or Stretch or Ubuntu Jammy, Focal or Bionic
+    - name: Check that the distro is Debian Bullseye or Buster
       ansible.builtin.assert:
         that:
           - ansible_distribution_release is defined
-          - ansible_distribution_release is regex("^stretch|buster|bullseye|bookworm|focal|bionic|jammy$")
+          - ansible_distribution_release is regex("^buster|bullseye$")
         quiet: "{% if ansible_verbosity == 0 %}true{% else %}false{% endif %}"
         fail_msg: "The Linux distro {{ ansible_distribution }} {{ ansible_distribution_release }} is not supported by this role"
 
diff --git a/tasks/local_facts.yml b/tasks/local_facts.yml
index 2170cf9f0862c0d00d138dd15bd912f4fe220dbc..0381b9616e1ac4538246337015c16b19d23bb27f 100644
--- a/tasks/local_facts.yml
+++ b/tasks/local_facts.yml
@@ -5,6 +5,7 @@
     - name: Required packages present
       ansible.builtin.apt:
         pkg:
+          - aptitude
           - jo
         state: present
 
diff --git a/tasks/main.yml b/tasks/main.yml
index 544e60f3501858ffdfbb798c2e897093641bbc6c..ca5a20daab1a5f11bc059ed7c7bfbedd8ce228e3 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -10,6 +10,7 @@
 
     - name: Include apt repo config for Sury PHP packages
       ansible.builtin.include_tasks: apt.yml
+      when: php_sury | bool
 
     - name: PHP versions absent
       block:
diff --git a/templates/php.fact.j2 b/templates/php.fact.j2
index 5b7dddfd12703f37bd0704a20f542c1e3f2d61a5..48974e8b2e4556b39ab5c58565f1c83e927ce70b 100644
--- a/templates/php.fact.j2
+++ b/templates/php.fact.j2
@@ -2,43 +2,54 @@
 # {{ ansible_managed }}
 
 set -euo pipefail
+APTITUDE="{{ php_aptitude }}"
 PHPQUERY="{{ php_phpquery }}"
 
-if [[ -f "${PHPQUERY}" ]] && [[ -f "/usr/lib/php/php-helper" ]]
+if [[ -f "${APTITUDE}" ]]
 then
-  declare -a versions=()
-  readarray -t versions < <("${PHPQUERY}" -V | sort -V)
-  jo state=present versions=$(
-    jo $(
-      for v in "${versions[@]}"
-      do
-        declare -a mods_available=()
-        readarray -t mods_available < <("${PHPQUERY}" -v "${v}" -M | sort)
-        declare -a sapis=()
-        readarray -t sapis < <("${PHPQUERY}" -v "${v}" -S | sort)
-        echo ${v}=$(
-          jo state=present mods_available=$(jo -a "${mods_available[@]}") $(
-            for s in "${sapis[@]}"
-            do
-              declare -a mods_enabled=()
-              for m in "${mods_available[@]}"
-              do
-                if "${PHPQUERY}" -v "${v}" -s "${s}" -m "${m}" -q
-                then
-                  mods_enabled=(${mods_enabled[@]} ${m})
-                fi
-              done
-              echo sapis["${s}"]=$(
-                jo state=present mods_enabled=$(
-                  jo -e -a "${mods_enabled[@]}"
-                )
+  declare -a packages=()
+  readarray -t packages < <(aptitude -q=99 search '~i!~M php' -F '%p')
+  if [[ "${#packages[@]}" == 0 ]]
+  then
+    jo state=absent
+  else
+    if [[ -f "${PHPQUERY}" ]]
+    then
+      declare -a versions=()
+      readarray -t versions < <("${PHPQUERY}" -V | sort -V)
+      jo state=present packages=$(jo -e -a "${packages[@]}") versions=$(i
+        jo $(
+          for v in "${versions[@]}"
+          do
+            declare -a mods_available=()
+            readarray -t mods_available < <("${PHPQUERY}" -v "${v}" -M | sort)
+            declare -a sapis=()
+            readarray -t sapis < <("${PHPQUERY}" -v "${v}" -S | sort)
+            echo ${v}=$(
+              jo state=present mods_available=$(jo -a "${mods_available[@]}") $(
+                for s in "${sapis[@]}"
+                do
+                  declare -a mods_enabled=()
+                  for m in "${mods_available[@]}"
+                  do
+                    if "${PHPQUERY}" -v "${v}" -s "${s}" -m "${m}" -q
+                    then
+                      mods_enabled=(${mods_enabled[@]} ${m})
+                    fi
+                  done
+                  echo sapis["${s}"]=$(
+                    jo state=present mods_enabled=$(
+                      jo -e -a "${mods_enabled[@]}"
+                    )
+                  )
+                done
               )
-            done
             )
-          )
-      done
-    )
-  )
-else
-  jo state=absent
-fi
+          done
+        )
+      )
+    else
+      jo state=absent
+    fi
+  fi
+fi  
diff --git a/templates/php.pref.j2 b/templates/php.pref.j2
index 5b07c99d3b0eaa7d3ce0e919904c9289e838cf6c..aa11ce27b7b07e97df2333a390f81063d927e455 100644
--- a/templates/php.pref.j2
+++ b/templates/php.pref.j2
@@ -15,5 +15,4 @@ Pin-Priority: 100
 
 {% endfor %}
 {% endif %}
-
 # vim: ft=debsources