简体   繁体   中英

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

I'm very new to the docker technology.

What i'm trying to do, is install the PHP extensions sqlsrv and pdo_sqlsrv from PECL repo. Accordingly to this tutorial:

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

Before i get data from this repo i install the following php additions:

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 \

After this part i update the apt-get:

&& apt-get update

Unfortunately I get an error when i do this:

RUN pecl install sqlsrv pdo_sqlsrv

ERROR [ 9/17] RUN pecl install sqlsrv pdo_sqlsrv

[ 9/17] RUN pecl install sqlsrv pdo_sqlsrv: #12 0.541 PHP Fatal error: Array and string offset access syntax with curly braces is no longer supported in /usr/share/php/PEAR/Config.php on line 2095 #12 0.541 PHP Stack trace: #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 ------ failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c pecl install sqlsrv pdo_sqlsrv]: exit code: 255

here is the whole dockerfile https://github.com/GregOstry/sail/blob/1.x/runtimes/8.0/Dockerfile

This is not for Docker, but if in case anyone is running to the above issue on Ubuntu, you can run this to upgrade your PEAR so that PECL would work:

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

The easiest way is using this repo

It's as easy as

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM