If I have a manifest file containing the following:
$php_version = '5.6.7'
# Install a php version and set as the global default php
php::version { $php_version: }
# Install PHP extensions
php::extension::mcrypt { "mcrypt for {$php_version}":
php => $php_version
}
php::extension::memcache { "memcache for {$php_version}":
php => $php_version
}
php::extension::memcached { "memcached for {$php_version}":
php => $php_version
}
php::extension::xdebug { "xdebug for {$php_version}":
php => $php_version,
version => '2.3.2'
}
Then on the first run, all of the extensions fail to install because 5.6.7 is not installed and after this it installs 5.6.7 ok. On the second run, the extensions then install fine. Looking at the code in the extension manifests, it would appear that php_require is supposed to prevent this.