25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199 
       | 
      
        # File 'manifests/globals.pp', line 25
class php::globals (
  Optional[Pattern[/^(rh-)?(php)?[578](\.)?[0-9]/]] $php_version = undef,
  Optional[Stdlib::Absolutepath] $config_root                    = undef,
  Optional[Stdlib::Absolutepath] $fpm_pid_file                   = undef,
  Optional[Enum['rhscl', 'remi']] $rhscl_mode                    = undef,
  Optional[Hash] $zend_creds                                     = undef,
  Enum['community', 'zend'] $flavor                              = 'community',
) {
  if ($php_version == undef) {
    $globals_php_version = $facts['os']['name'] ? {
      'Debian' => $facts['os']['release']['major'] ? {
        '10'    => '7.3',
        '11'    => '7.4',
        default => fail("Unsupported Debian release: ${fact('os.release.major')}"),
      },
      'Ubuntu' => $facts['os']['release']['major'] ? {
        '18.04' => '7.2',
        '20.04' => '7.4',
        '22.04' => '8.1',
        default => fail("Unsupported Ubuntu release: ${fact('os.release.major')}"),
      },
      default  => '5.x',
    }
  } else {
    $globals_php_version = $php_version
  }
  case $facts['os']['family'] {
    'Debian': {
      if $facts['os']['name'] == 'Ubuntu' {
        case $globals_php_version {
          /^[578].[0-9]/: {
            case $flavor {
              'zend': {
                $default_config_root = "/etc/php/${globals_php_version}-zend"
                $fpm_service_name = "php${globals_php_version}-zend-fpm"
                $package_prefix = "php${globals_php_version}-zend-"
              }
              default: {
                $default_config_root = "/etc/php/${globals_php_version}"
                $fpm_service_name = "php${globals_php_version}-fpm"
                $package_prefix = "php${globals_php_version}-"
              }
            }
            $default_fpm_pid_file = "/var/run/php/php${globals_php_version}-fpm.pid"
            $fpm_error_log = "/var/log/php${globals_php_version}-fpm.log"
            $ext_tool_enable = "/usr/sbin/phpenmod -v ${globals_php_version}"
            $ext_tool_query = "/usr/sbin/phpquery -v ${globals_php_version}"
          }
          default: {
            # Default php installation from Ubuntu official repository use the following paths until 16.04
            # For PPA please use the $php_version to override it.
            $default_config_root = '/etc/php5'
            $default_fpm_pid_file = '/var/run/php5-fpm.pid'
            $fpm_error_log = '/var/log/php5-fpm.log'
            $fpm_service_name = 'php5-fpm'
            $ext_tool_enable = '/usr/sbin/php5enmod'
            $ext_tool_query = '/usr/sbin/php5query'
            $package_prefix = 'php5-'
          }
        }
      } else {
        case $globals_php_version {
          /^5\.6/,
          /^7\.[0-9]/,
          /^8\.[0-9]/: {
            case $flavor {
              'zend': {
                $default_config_root = "/etc/php/${globals_php_version}-zend"
                $fpm_service_name = "php${globals_php_version}-zend-fpm"
                $package_prefix = "php${globals_php_version}-zend-"
              }
              default: {
                $default_config_root = "/etc/php/${globals_php_version}"
                $fpm_service_name = "php${globals_php_version}-fpm"
                $package_prefix = "php${globals_php_version}-"
              }
            }
            $default_fpm_pid_file = "/var/run/php/php${globals_php_version}-fpm.pid"
            $fpm_error_log        = "/var/log/php${globals_php_version}-fpm.log"
            $ext_tool_enable      = "/usr/sbin/phpenmod -v ${globals_php_version}"
            $ext_tool_query       = "/usr/sbin/phpquery -v ${globals_php_version}"
          }
          default: {
            $default_config_root = '/etc/php5'
            $default_fpm_pid_file = '/var/run/php5-fpm.pid'
            $fpm_error_log = '/var/log/php5-fpm.log'
            $fpm_service_name = 'php5-fpm'
            $ext_tool_enable = '/usr/sbin/php5enmod'
            $ext_tool_query = '/usr/sbin/php5query'
            $package_prefix = 'php5-'
          }
        }
      }
    }
    'Suse': {
      case $globals_php_version {
        /^7/: {
          $default_config_root = '/etc/php7'
          $package_prefix = 'php7-'
          $default_fpm_pid_file = '/var/run/php7-fpm.pid'
          $fpm_error_log = '/var/log/php7-fpm.log'
        }
        default: {
          $default_config_root = '/etc/php5'
          $package_prefix = 'php5-'
          $default_fpm_pid_file = '/var/run/php5-fpm.pid'
          $fpm_error_log = '/var/log/php5-fpm.log'
        }
      }
    }
    'RedHat': {
      case $flavor {
        'zend': {
          $php_version_sans_dot = $php_version.regsubst(/\./, '', 'G')
          $default_config_root    = "/etc/opt/zend/php${php_version_sans_dot}zend"
          $default_fpm_pid_file   = '/var/run/php-fpm/php-fpm.pid'
          $fpm_service_name       = "php${php_version_sans_dot}zend-php-fpm"
          $package_prefix         = "php${php_version_sans_dot}zend-php-"
        }
        default: {
          case $rhscl_mode {
            'remi': {
              $rhscl_root             = "/opt/remi/${php_version}/root"
              $default_config_root    = "/etc/opt/remi/${php_version}"
              $default_fpm_pid_file   = '/var/run/php-fpm/php-fpm.pid'
              $package_prefix         = "${php_version}-php-"
              $fpm_service_name       = "${php_version}-php-fpm"
            }
            'rhscl': {
              $rhscl_root             = "/opt/rh/${php_version}/root"
              $default_config_root    = "/etc/opt/rh/${php_version}" # rhscl registers contents by copy in /etc/opt/rh
              $default_fpm_pid_file   = "/var/opt/rh/${php_version}/run/php-fpm/php-fpm.pid"
              $package_prefix         = "${php_version}-php-"
              $fpm_service_name       = "${php_version}-php-fpm"
            }
            undef: {
              $default_config_root    = '/etc/php.d'
              $default_fpm_pid_file   = '/var/run/php-fpm/php-fpm.pid'
              $fpm_service_name       = undef
              $package_prefix         = undef
            }
            default: {
              fail("Unsupported rhscl_mode '${rhscl_mode}'")
            }
          }
        }
      }
    }
    'FreeBSD': {
      case $globals_php_version {
        /^(\d)\.(\d)$/: {
          $package_prefix = "php${1}${2}-"
        }
        default: {
          $package_prefix = 'php56-'
        }
      }
      $default_config_root  = '/usr/local/etc'
      $default_fpm_pid_file = '/var/run/php-fpm.pid'
      $fpm_service_name     = undef
    }
    'Archlinux': {
      $default_config_root  =  '/etc/php'
      $default_fpm_pid_file = '/run/php-fpm/php-fpm.pid'
    }
    default: {
      fail("Unsupported osfamily: ${facts['os']['family']}")
    }
  }
  $globals_config_root    = pick($config_root, $default_config_root)
  $globals_fpm_pid_file   = pick($fpm_pid_file, $default_fpm_pid_file)
}
       |