将Symfony应用程序部署到另一台服务器时,我经常需要等待composer install
或cache:clear
才能知道是否已安装必需的 PHP模块。>
例如
// Clearing the cache for the prod environment with debug false
In Imagine.php line 172:
Gd not installed
因此,我必须运行(或要求系统工程师运行)sudo apt-get install php-gd
。
是否可以在部署应用程序之前知道此列表?
类似的东西:
php bin/console debug:php-modules
P.S。我想在不使用Docker的情况下了解解决方案。
答案 0 :(得分:2)
您可以在composer install
之后运行composer check-platform-reqs
,它会告诉您扩展名是否丢失。
check-platform-reqs命令检查您的PHP和扩展版本是否符合已安装软件包的平台要求。例如,这可以用于验证生产服务器是否具有运行项目后所需的所有扩展。
尽管,从您的问题来看,我认为您正在使用Imagine库,通过查看it's composer.json 不需要任何PHP扩展,它们实际上被列为建议,您必须手动安装。
"suggest": {
"ext-gd": "to use the GD implementation",
"ext-imagick": "to use the Imagick implementation",
"ext-gmagick": "to use the Gmagick implementation"
}
答案 1 :(得分:0)
如果您的应用程序需要PHP扩展名,则应将其放在composer.json
中:
{
…
"require": {
"php": "^7.1",
"ext-gd": "*",
"ext-json": "*",
…
它将:
答案 2 :(得分:-1)
我建议您一次安装所有模块,这是列表:
php7.2 php7.2-enchant php7.2-mbstring php7.2-snmp
php7.2-bcmath php7.2-fpm php7.2-mysql php7.2-soap
php7.2-bz2 php7.2-gd php7.2-odbc php7.2-sqlite3
php7.2-cgi php7.2-gmp php7.2-opcache php7.2-sybase
php7.2-cli php7.2-imap php7.2-pgsql php7.2-tidy
php7.2-common php7.2-interbase php7.2-phpdbg php7.2-xml
php7.2-curl php7.2-intl php7.2-pspell php7.2-xmlrpc
php7.2-dba php7.2-json php7.2-readline php7.2-xsl
php7.2-dev php7.2-ldap php7.2-recode php7.2-zip