diff --git a/tasks/conf.yml b/tasks/conf.yml
index f45228f5fd8c0508c1e9e5285d6e430c2ae28164..3061ea8fe72f3acb1bc9eedc127a80d624bb7a93 100644
--- a/tasks/conf.yml
+++ b/tasks/conf.yml
@@ -193,14 +193,14 @@
         var: php_conf_files_template
         verbosity: "{% if ansible_check_mode | bool %}0{% else %}1{% endif %}"
 
-#    - name: Include PHP configuration file templated tasks
-#      ansible.builtin.include_tasks: file_templated.yml
-#      loop: "{{ php_conf_files_template }}"
-#      loop_control:
-#        loop_var: php_conf_file
-#      when:
-#        - php_conf_files_template is defined
-#        - php_conf_files_template != []
+    - name: Include PHP configuration file templated tasks
+      ansible.builtin.include_tasks: file_templated.yml
+      loop: "{{ php_conf_files_template }}"
+      loop_control:
+        loop_var: php_conf_file
+      when:
+        - php_conf_files_template is defined
+        - php_conf_files_template != []
 
   tags:
     - php
diff --git a/tasks/file_edited.yml b/tasks/file_edited.yml
index 7730eaf9172821696b6359c5bc3f2c57e6195975..6040d12556639aaa8616c3b450784672c652f5c6 100644
--- a/tasks/file_edited.yml
+++ b/tasks/file_edited.yml
@@ -33,7 +33,6 @@
     - name: Set a fact for the proposed PHP configuration file variables
       ansible.builtin.set_fact:
         php_conf_file_proposed_vars: "{{ php_config | ansible.builtin.json_query(php_conf_file_proposed_vars_json_query) }}"
-        verbosity: "{% if ansible_check_mode | bool %}0{% else %}1{% endif %}"
       vars:
         php_conf_file_proposed_vars_json_query: "[?state=='present'].files[]|[?path=='{{ php_conf_file }}'].conf|[0]"
 
@@ -47,7 +46,7 @@
         var: php_conf_file_proposed_vars.keys()
         verbosity: "{% if ansible_check_mode | bool %}1{% else %}2{% endif %}"
 
-    - name: Set fact for PHP configuration file
+    - name: Set facts for the PHP configuration file
       ansible.builtin.set_fact:
         php_conf_file_backup: "{{ php_conf_file | ansible.builtin.dirname }}/.{{ php_conf_file | ansible.builtin.basename }}.{{ ansible_date_time.iso8601_basic_short }}.bak"
         php_conf_file_changed: false
diff --git a/tasks/file_templated.yml b/tasks/file_templated.yml
index eafb2306b8f83cb58b6abeb77e1322029c0e9c89..651a56ba296e68be6f9d790d0386ad1a0e4e8859 100644
--- a/tasks/file_templated.yml
+++ b/tasks/file_templated.yml
@@ -8,11 +8,125 @@
 #
 # You should have received a copy of the GNU General Public License along with the Webarchitects PHP Ansible role. If not, see <https://www.gnu.org/licenses/>.
 ---
-# - name: PHP configuration file templated
-#   block:
-#
-#   tags:
-#     - php
-#     - php_cfg
-#     - php_conf
+- name: PHP configuration file templated
+  block:
+
+    - name: Set facts for the PHP configuration file
+      ansible.builtin.set_fact:
+        php_conf_file_backup: "{{ php_conf_file | ansible.builtin.dirname }}/.{{ php_conf_file | ansible.builtin.basename }}.{{ ansible_date_time.iso8601_basic_short }}.bak"
+        php_conf_file_proposed_vars: "{{ php_config | ansible.builtin.json_query(php_conf_file_proposed_vars_json_query) }}"
+        php_conf_file_sapi: "{{ php_conf_file | ansible.builtin.split(php_file_path_separator) | ansible.builtin.json_query('[4]') }}"
+        php_conf_file_version: "{{ php_conf_file | ansible.builtin.split(php_file_path_separator) | ansible.builtin.json_query('[3]') }}"
+      vars:
+        php_conf_file_proposed_vars_json_query: "[?state=='present'].files[]|[?path=='{{ php_conf_file }}'].conf|[0]"
+
+    - name: Debug the PHP configuration file backup path
+      ansible.builtin.debug:
+        var: php_conf_file_backup
+        verbosity: "{% if ansible_check_mode | bool %}1{% else %}2{% endif %}"
+
+    - name: Debug the PHP configuration file PHP SAPI
+      ansible.builtin.debug:
+        var: php_conf_file_sapi
+        verbosity: "{% if ansible_check_mode | bool %}1{% else %}2{% endif %}"
+
+    - name: Debug the PHP configuration file PHP version
+      ansible.builtin.debug:
+        var: php_conf_file_version
+        verbosity: "{% if ansible_check_mode | bool %}1{% else %}2{% endif %}"
+
+    - name: Debug the proposed PHP configuration file variables
+      ansible.builtin.debug:
+        var: php_conf_file_proposed_vars
+        verbosity: "{% if ansible_check_mode | bool %}1{% else %}2{% endif %}"
+
+    - name: Debug the proposed PHP configuration file sections
+      ansible.builtin.debug:
+        var: php_conf_file_proposed_vars.keys()
+        verbosity: "{% if ansible_check_mode | bool %}1{% else %}2{% endif %}"
+
+    - name: File backup present
+      ansible.builtin.copy:
+        src: "{{ php_conf_file }}"
+        dest: "{{ php_conf_file_backup }}"
+        remote_src: true
+        mode: 0644
+        owner: root
+        group: root
+      when: php_conf_file in php_conf_files_existing
+
+    - name: File templated
+      ansible.builtin.template:
+        src: php.j2
+        dest: "{{ php_conf_file }}"
+        mode: 0644
+        owner: root
+        group: root
+      register: php_conf_file_templated
+
+    - name: Test and reload PHP configuration file when file is in a FPM directory
+      block:
+
+        - name: Test PHP configuration
+          block:
+
+            - name: PHP FPM configtest
+              ansible.builtin.command: "php-fpm{{ php_conf_file_version }} --test"
+              check_mode: false
+              changed_when: false
+              register: php_fpm_test
+              failed_when: >-
+                ( php_fpm_test.rc != 0 ) or
+                ( "Failed" in php_fpm_test.stderr )
+
+          rescue:
+
+            - name: Copy broken PHP configuration file
+              ansible.builtin.copy:
+                src: "{{ php_conf_file }}"
+                dest: "{{ php_conf_file_backup }}.broken"
+                remote_src: true
+                mode: 0644
+                owner: root
+                group: root
+
+            - name: Copy backup file over edited file as the configuration test failed
+              ansible.builtin.copy:
+                src: "{{ php_conf_file_backup }}"
+                dest: "{{ php_conf_file }}"
+                remote_src: true
+                mode: 0644
+                owner: root
+                group: root
+
+            - name: Debug PHP configuration file test failure
+              ansible.builtin.debug:
+                var: php_fpm_test.stderr_lines
+
+            - name: Fail as there was a problem with the updated configuration file
+              ansible.builtin.fail:
+                msg: "The original configuration has been restored and the broken file is available at {{ php_conf_file_backup }}.broken"
+
+        - name: PHP FPM reloaded
+          ansible.builtin.service:
+            name: "php{{ php_conf_file_version }}-fpm"
+            state: reloaded
+
+      when:
+        - php_conf_file_version in php_ver_installed
+        - php_conf_file_templated.changed | bool
+        - php_conf_file_sapi is defined
+        - php_conf_file_sapi == "fpm"
+
+    - name: File backup absent when the PHP configuration file is unchanged
+      ansible.builtin.file:
+        path: "{{ php_conf_file_backup }}"
+        state: absent
+      changed_when: false
+      when: not php_conf_file_templated.changed | bool
+
+  tags:
+    - php
+    - php_cfg
+    - php_conf
 ...
diff --git a/templates/php.j2 b/templates/php.j2
new file mode 100644
index 0000000000000000000000000000000000000000..97836bfa75ae90aec0fd65b40b2950ec9716e506
--- /dev/null
+++ b/templates/php.j2
@@ -0,0 +1,12 @@
+# {{ systemd_ansible_managed }}
+
+{% for php_section in | dict2items %}
+
+[{{ php_section.key }}]
+{% for php_variable_pair in php_section.value | dict2items %}
+{{ php_variable_pair.key }} = {{ php_variable_pair.value }}
+
+{% endfor %}
+{% endfor %}
+
+# vim: ft=systemd: