我如何知道我必须将哪些外部模块安装到PHP才能在另一台机器上复制配置?


How can I tell which external modules I have to install to PHP to replicate the configuration on another machine?

我很容易做到

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 : }

我最终没有通过编程来完成它。希望这份清单能在未来帮到一些人——我花了一段时间才整理好!