无法在 php:fpm-alpine 中加载 mysqlnd 扩展
Can't load mysqlnd extension in php:fpm-alpine
我正在尝试设置一个基于 php:fpm-alpine 的 php 图像。
我想让 php 使用 mysqlnd 扩展。更确切地说:我希望文件 mysqlnd.so 位于扩展文件夹 /usr/local/lib/php/extensions/no-debug-non-zts-20190902
中。不知何故,这似乎是存储 .so
个文件的文件夹。
我在 php conf.d 文件夹中有一个用于启用扩展的 .ini 文件:
; configuration for php mysql module
; priority=10
extension=mysqlnd
我的 Dockerfile 如下所示:
FROM php:fpm-alpine
RUN apk update --no-cache \
&& apk add --no-cache $PHPIZE_DEPS \
&& apk add --no-cache php-mysqlnd \
&& docker-php-ext-install mysqlnd \
&& docker-php-ext-enable mysqlnd
当我尝试构建图像时,它停止并输出以下内容(仅相关部分):
#5 7.687 fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
#5 7.820 fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
#5 7.980 (1/3) Installing php7-common (7.3.24-r0)
#5 8.000 (2/3) Installing php7-openssl (7.3.24-r0)
#5 8.021 (3/3) Installing php7-mysqlnd (7.3.24-r0)
#5 8.048 OK: 255 MiB in 59 packages
#5 9.541 fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
#5 9.819 fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
#5 10.15 (1/1) Installing .phpize-deps (20201122.190848)
#5 10.16 OK: 255 MiB in 60 packages
#5 10.22 Cannot find config.m4.
#5 10.22 Make sure that you run '/usr/local/bin/phpize' in the top level source directory of the module
#5 10.22
------
错误基本上是:
#5 10.22 Cannot find config.m4.
Make sure that you run '/usr/local/bin/phpize' in the top level source directory of the module
我还创建了一个没有 mysqlnd 的功能图像,并尝试从 cointainer 的 cli 手动安装它。也没用。
非常感谢您的帮助,因为我似乎无法让它正常工作。
发生这种情况是因为您不必安装它,it is there already
运行 这个命令
docker run -ti php:fpm-alpine php -i | grep mysqlnd
产生此输出:
Configure Command => './configure' '--build=x86_64-linux-musl' '--with-config-file-path=/usr/local/etc/php' '--with-config-file-scan-dir=/usr/local/etc/php/conf.d' '--enable-option-checking=fatal' '--with-mhash' '--with-pic' '--enable-ftp' '--enable-mbstring' '--enable-mysqlnd' '--with-password-argon2' '--with-sodium=shared' '--with-pdo-sqlite=/usr' '--with-sqlite3=/usr' '--with-curl' '--with-libedit' '--with-openssl' '--with-zlib' '--with-pear' '--enable-fpm' '--with-fpm-user=www-data' '--with-fpm-group=www-data' '--disable-cgi' 'build_alias=x86_64-linux-musl'
mysqlnd
mysqlnd => enabled
Version => mysqlnd 7.4.12
Loaded plugins => mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_caching_sha2_password,auth_plugin_sha256_password
重要的部分是:
mysqlnd => enabled
Version => mysqlnd 7.4.12
我正在尝试设置一个基于 php:fpm-alpine 的 php 图像。
我想让 php 使用 mysqlnd 扩展。更确切地说:我希望文件 mysqlnd.so 位于扩展文件夹 /usr/local/lib/php/extensions/no-debug-non-zts-20190902
中。不知何故,这似乎是存储 .so
个文件的文件夹。
我在 php conf.d 文件夹中有一个用于启用扩展的 .ini 文件:
; configuration for php mysql module
; priority=10
extension=mysqlnd
我的 Dockerfile 如下所示:
FROM php:fpm-alpine
RUN apk update --no-cache \
&& apk add --no-cache $PHPIZE_DEPS \
&& apk add --no-cache php-mysqlnd \
&& docker-php-ext-install mysqlnd \
&& docker-php-ext-enable mysqlnd
当我尝试构建图像时,它停止并输出以下内容(仅相关部分):
#5 7.687 fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
#5 7.820 fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
#5 7.980 (1/3) Installing php7-common (7.3.24-r0)
#5 8.000 (2/3) Installing php7-openssl (7.3.24-r0)
#5 8.021 (3/3) Installing php7-mysqlnd (7.3.24-r0)
#5 8.048 OK: 255 MiB in 59 packages
#5 9.541 fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
#5 9.819 fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
#5 10.15 (1/1) Installing .phpize-deps (20201122.190848)
#5 10.16 OK: 255 MiB in 60 packages
#5 10.22 Cannot find config.m4.
#5 10.22 Make sure that you run '/usr/local/bin/phpize' in the top level source directory of the module
#5 10.22
------
错误基本上是:
#5 10.22 Cannot find config.m4.
Make sure that you run '/usr/local/bin/phpize' in the top level source directory of the module
我还创建了一个没有 mysqlnd 的功能图像,并尝试从 cointainer 的 cli 手动安装它。也没用。
非常感谢您的帮助,因为我似乎无法让它正常工作。
发生这种情况是因为您不必安装它,it is there already
运行 这个命令
docker run -ti php:fpm-alpine php -i | grep mysqlnd
产生此输出:
Configure Command => './configure' '--build=x86_64-linux-musl' '--with-config-file-path=/usr/local/etc/php' '--with-config-file-scan-dir=/usr/local/etc/php/conf.d' '--enable-option-checking=fatal' '--with-mhash' '--with-pic' '--enable-ftp' '--enable-mbstring' '--enable-mysqlnd' '--with-password-argon2' '--with-sodium=shared' '--with-pdo-sqlite=/usr' '--with-sqlite3=/usr' '--with-curl' '--with-libedit' '--with-openssl' '--with-zlib' '--with-pear' '--enable-fpm' '--with-fpm-user=www-data' '--with-fpm-group=www-data' '--disable-cgi' 'build_alias=x86_64-linux-musl' mysqlnd mysqlnd => enabled Version => mysqlnd 7.4.12 Loaded plugins => mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_caching_sha2_password,auth_plugin_sha256_password
重要的部分是:
mysqlnd => enabled Version => mysqlnd 7.4.12