我很容易做到
php -m
查看PHP加载的模块列表,但其中大多数都自动包含在基本安装中。
为了使其配置与现有系统一致,我需要看到的是新系统上使用的软件包,而不是存在的软件包。
例如,date
在列表中显示了一个PHP模块,但是没有php-date
包需要安装和配置才能使用日期函数。
相反,mysql
出现在列表中,但它没有默认出现,所以我需要安装php-mysql
包。其他一些,如xml,还需要首先使用libxml。我需要PHP模块的列表,这些模块不是默认的(在任意配置的机器上)。
这只是部分相关的问题,但我试图自动化配置PHP的thias/PHP模块在Puppetforge。
是否有任何方法可以可靠、快速、理想地以编程方式确定这一点?
这是一个手动创建的列表,通过运行yum whatprovides php-$MODULENAME
在我们的配置中为每个模块,然后捕获提供模块的包…
# root@dev$ php -m
# 'bz2', # php-common
# 'calendar', # php-common
# 'Core', # php-common
# 'ctype', # php-common
# 'curl', # php-common
# 'date', # php-common
# 'dom', # php-xml
# 'ereg', # php-common
# 'exif', # php-common
# 'fileinfo', # php-common
# 'filter', # php-common
# 'ftp', # php-common
'gd', # php-gd needs install
# 'gettext', # php-common
# 'gmp', # php-common
# 'hash', # php-common
# 'iconv', # php-common
# 'json', # php-common
# 'libxml', # php-common
'memcache', # php-pecl-memcache needs install
'mysql', # php-mysql needs install
# 'mysqli', # php-mysql
# 'openssl', # php-common
# 'pcntl', # php-cli
# 'pcre', # php-common
'PDO', # says php-pdo but in common as of 5.3
# 'pdo_mysql', # php-mysql
# 'pdo_sqlite', # php-pdo
# 'Phar', # php-common
'pspell', # php-pspell needs install
# 'readline', # php-cli
# 'Reflection', # php-common
# 'session', # php-common
# 'shmop', # php-common
# 'SimpleXML', # php-common
'snmp', # php-snmp
# 'sockets', # php-common
# 'SPL', # php-common
# 'sqlite3', # php-pdo
# 'standard', # php-common
# 'tokenizer', # php-common
# 'wddx', # php-xml
'xml', # php-xml needs install
# 'xmlreader', # php-xml
'xmlrpc', # php-xmlrpc needs install
# 'xmlwriter', # php-xml
# 'xsl', # php-xml
# 'zip', # php-common
# 'zlib' # php-common
我在params。pp
中结束了这个$php_modules = ['gd','mysql','pspell','snmp','xml','xmlrpc']
和这个在我的php。pp概要文件。
package { 'php-pecl-memcached':
ensure => installed,
}
php::module { $php_modules : }
我最终没有通过编程来完成它。希望这份清单能在未来帮到一些人——我花了一段时间才整理好!