How to install from PECL repo in Docker (Fatal error: Array and string offset access syntax with curly braces is no longer supported)

How to install from PECL repo in Docker (Fatal error: Array and string offset access syntax with curly braces is no longer supported)

我对 docker 技术还很陌生。

我想做的是从 PECL 存储库安装 PHP 扩展 sqlsrv 和 pdo_sqlsrv。 根据本教程:

https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15

在我从这个 repo 获取数据之前,我安装了以下 php 添加项:

RUN apt-get install -y php8.0-cli php8.0-dev \ php8.0-pgsql php8.0-sqlite3
php8.0-gd \ php8.0-curl php8.0-memcached \ php8.0-imap php8.0-mysql
php8.0-mbstring \ php8.0-xml php8.0-zip php8.0-bcmath php8.0-soap \
php8.0-intl php8.0-readline php8.0-pcov \ php8.0-msgpack
php8.0-igbinary php8.0-ldap \ php8.0-redis php8.0-swoole php8.0-xdebug
php-pear \

在这部分之后我更新了 apt-get:

&& apt-get update

不幸的是,我在执行此操作时遇到错误:

RUN pecl install sqlsrv pdo_sqlsrv

错误 [9/17] 运行 pecl 安装 sqlsrv pdo_sqlsrv

[ 9/17] 运行 pecl 安装 sqlsrv pdo_sqlsrv: #12 0.541 PHP 致命错误:带花括号的数组和字符串偏移访问语法不是 在 /usr/share/php/PEAR/Config.php 中不再受支持 在线 2095 #12 0.541 PHP 堆栈跟踪: #12 0.541 PHP 1. {main}() /usr/share/php/peclcmd.php:0 #12 0.541 PHP 2. require_once() /usr/share/php/peclcmd.php:31 ------ 解决失败:rpc error: code = Unknown desc = executor failed 运行 [/bin/sh -c pecl install sqlsrv pdo_sqlsrv]: exit code: 255

这里是整个 docker文件 https://github.com/GregOstry/sail/blob/1.x/runtimes/8.0/Dockerfile

最简单的方法是使用 this repo

就像

一样简单
FROM php:8.0

ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/

RUN chmod +x /usr/local/bin/install-php-extensions && \
    install-php-extensions pgsql sqlite3

这不适用于 Docker,但如果有人 运行 在 Ubuntu 上遇到上述问题,您可以 运行 升级您的 PEAR,以便PECL 可以工作:

wget http://pear.php.net/go-pear.phar && php go-pear.phar && pecl channel-update pecl.php.net