--- # file: roles/php/tasks/php.yml - name: Apt Repository apt_repository: repo: '{{ item }}' state: present mode: 0644 with_items: '{{ php_repositories }}' - name: Install required packages. apt: pkg: '{{ php_packages }}' state: present force: yes notify: - Restart Apache - name: Hold em all shell: dpkg --get-selections | grep ^sed s/install/hold/g | sudo dpkg --set-selections when: php_hold_version - name: Install PECL packages shell: pecl install --soft imagick-3.3.0 when: php_version_main|default(7) != 7 ignore_errors: yes # NOTE: If oauth is already installed and we install a new PHP 7 version then this fails and we need --force as well - name: Install PECL packages shell: pecl install --soft --force oauth when: php_version_main|default(7) == 7 ignore_errors: yes - name: Ensure Apache config directory file: dest: /etc/{{ php_base_dir }}/apache2 state: directory owner: root group: root mode: 0755 - name: Configuration file, php.ini template: src: etc-php5-apache2-php.ini dest: /etc/{{ php_base_dir }}/apache2/php.ini owner: root group: root mode: 0644 notify: - Restart Apache - name: Import php53 import_tasks: php53.yml when: php_version|default('5.5') == '5.3' - name: Configuration file, fcgid.conf template: src: fcgid.conf dest: /etc/apache2/mods-available/fcgid.conf owner: root group: root mode: 0644 notify: - Restart Apache - name: Configuration files template: src: etc-php5-conf-d-{{ item }}.ini dest: /etc/{{ php_base_dir }}/{{ php_conf_dir }}/{{ item }}.ini owner: root group: root mode: 0644 with_items: - opcache notify: - Restart Apache - name: Create extra directory for browscap file: dest: /etc/{{ php_base_dir }}/apache2/extra state: directory owner: root group: root when: php_browscap - name: browscap.ini copy: src: browscap.ini dest: /etc/{{ php_base_dir }}/apache2/extra/browscap.ini owner: root group: root when: php_browscap notify: - Restart Apache - name: Create htdocs directory for apc status file: dest: /var/www/apc state: directory owner: www-data group: www-data - name: Copy APC status php script copy: src: apc.php dest: /var/www/apc owner: www-data group: www-data - name: Include oci version include_tasks: oci-{{ php_version|default('5.5') }}.yml when: repository is defined and php_needs_oci8 - name: Include mcrypt include_tasks: mcrypt-7.2.yml when: php_version|default('5.5') == '7.2' and php_needs_mcrypt - name: Import msodbc import_tasks: msodbc.yml when: php_needs_msodbc - name: Ensure ImageMagick config directory file: dest: '{{ php_imagick_config_dir }}' state: directory owner: root group: root mode: 0755 - name: ImageMagick Policy File template: src: etc-imagemagick-policy.xml dest: '{{ php_imagick_config_dir }}/policy.xml' owner: root group: root mode: 0644 - block: - name: Apache FPM Socket Configuration template: src: etc-apache2-conf-available-php-fpm dest: /etc/apache2/{{ apache_conf_dir }}/php{{ php_version_main }}-fpm.conf owner: root group: root mode: 0644 notify: - Restart Apache - name: Enable Apache PHP FPM Configuration command: a2enconf php{{ php_version_main }}-fpm args: creates: /etc/apache2/conf-enabled/php{{ php_version_main }}-fpm{{ apache_conf_ext }} notify: - Restart Apache when: php_fpm_socket - name: FPM Default Pool Configuration template: src: php_pool.conf dest: /etc/{{ php_base_dir }}/fpm/pool.d/www.conf owner: root group: root mode: 0644 when: (php_version_main|default(7) == 7) and php_fpm - block: - name: Set facts for PHP 7 set_fact: phpLogRotatePrefix: '{{php_version|default("7.0")}}' phpLibPrefix: '' when: php_version_main|default(7) == 7 - name: Set facts for PHP 5 set_fact: phpLogRotatePrefix: '5' phpLibPrefix: '5' when: php_version_main|default(7) != 7 - name: Install logrotate script template: src: etc-logrotate-php dest: /etc/logrotate.d/php{{ phpLogRotatePrefix }}-fpm owner: root group: root mode: 0644 when: php_fpm tags: - logrotate - name: Explicitly set PHP version for CLI alternatives: name: php path: /usr/bin/php{{ php_version }}