提问人:Geoff Oliver 提问时间:6/9/2023 最后编辑:Nico HaaseGeoff Oliver 更新时间:6/25/2023 访问量:228
错误 pecl install oci8-2.2.0 - 尝试使用芯片硅 (M2) 在苹果上构建容器
Error pecl install oci8-2.2.0 - Try to build container on apple with chip silicon (M2)
问:
我在这个问题上度过了一天,docker文件在Windows上完美运行。 当我启动docker-compose时,出现以下错误:
'=> 错误 [web 11/54] RUN echo 'instantclient,/usr/lib/oracle/21.1/client64/lib' |pecl 安装 oci8-2.2.0 7.0s
[网页 11/54]运行 echo 'instantclient,/usr/lib/oracle/21.1/client64/lib' |pecl 安装 oci8-2.2.0: #0 0.201 #0 0.201 注意:尝试访问第 187 行 PEAR/REST.php 中 bool 类型值的数组偏移量
#0 0.201 PHP 注意:
尝试在第 187 行的 /usr/share/php/PEAR/REST.php 中访问类型 bool 值的数组偏移量 #0 0.201 PHP 堆栈跟踪: #0 0.201 菲律宾比索 1.{主要}() /usr/share/php/peclcmd.php:0 #0 0.201 菲律宾比索 2.require_once() /usr/share/php/peclcmd.php:31 #0 0.201 菲律宾比索 3.PEAR_Command_Install->运行() /usr/share/php/pearcmd.php:316 #0 0.201 菲律宾比索 4.PEAR_Command_Install->doInstall() /usr/share/php/PEAR/Command/Common.php:270 #0 0.201 菲律宾比索 5.PEAR_Downloader->download() /usr/share/php/PEAR/Command/Install.php:666 #0 0.201 菲律宾比索 6.PEAR_Downloader_Package->initialize() /usr/share/php/PEAR/Downloader.php:296 #0 0.201 菲律宾比索 7.PEAR_Downloader_Package->_fromString() /usr/share/php/PEAR/Downloader/Package.php:189 #0 0.201 菲律宾比索 8.PEAR_Downloader->_getPackageDownloadUrl() /usr/share/php/PEAR/Downloader/Package.php:1706 #0 0.201 菲律宾比索 9.PEAR_REST_10->getDownloadURL() /usr/share/php/PEAR/Downloader.php:870 #0 0.201 菲律宾比索 10.PEAR_REST->retrieveData() /usr/share/php/PEAR/REST/10.php:74 #0 0.201 菲律宾比索 11.PEAR_REST->useLocalCache() /usr/share/php/PEAR/REST.php:80'
'错误结束:#0 6.963 /usr/bin/ld:
搜索 -lclntsh 时跳过不兼容的 /usr/lib/oracle/21.1/client64/lib/libclntsh.so
#0 6.963 /usr/bin/ld:找不到 -lclntsh
#0 6.963 collect2:错误:ld 返回 1 退出状态
#0 6.964 make: *** [Makefile:209: oci8.la] 错误 1
#0 6.969 错误:“make”失败
------
无法解决:进程“/bin/sh -c echo 'instantclient,/usr/lib/oracle/21.1/client64/lib' |pecl install oci8-2.2.0“未成功完成:退出代码:1
我的 Dockerfile 的一部分
`
RUN apt-get update && apt-get upgrade -y && \
apt-get install -y \
curl \
git \
nano \
apache2 \
php \
php-cli php-curl php-gd php-iconv php-imap php-mbstring php-pgsql php-xsl php-zip php-xdebug php-imagick\
php-dev php-pear build-essential libaio1 php-mailparse php-bcmath\
libapache2-mod-php \
postgresql-client \
unzip \
zip \
xsltproc \
libxml2-utils\
libmcrypt-dev\
unixodbc-dev
# Oracle instantclient
ADD docker/conf/oracle/instantclient-basic-linux.x64-21.4.0.0.0dbru.zip /tmp/
ADD docker/conf/oracle/instantclient-sdk-linux.x64-21.4.0.0.0dbru.zip /tmp/
RUN mkdir -p /usr/lib/oracle/21.1/client64
RUN unzip -qq /tmp/instantclient-basic-linux.x64-21.4.0.0.0dbru.zip -d /usr/lib/oracle/21.1/client64
RUN unzip -qq /tmp/instantclient-sdk-linux.x64-21.4.0.0.0dbru.zip -d /usr/lib/oracle/21.1/client64
RUN mv /usr/lib/oracle/21.1/client64/instantclient_21_4 /usr/lib/oracle/21.1/client64/lib
RUN echo /usr/lib/oracle/21.1/client64/lib > /etc/ld.so.conf.d/oracle.conf
RUN pecl channel-update pecl.php.net
RUN echo 'instantclient,/usr/lib/oracle/21.1/client64/lib' | pecl install oci8-2.2.0
RUN echo "extension = oci8.so" >> /etc/php/7.4/cli/php.ini
RUN echo "extension = oci8.so" >> /etc/php/7.4/apache2/php.ini
RUN echo "LD_LIBRARY_PATH=\"/usr/lib/oracle/21.1/client64/lib\"" >> /etc/environment
RUN echo "ORACLE_HOME=\"/usr/lib/oracle/21.1/client64/lib\"" >> /etc/environment
RUN echo "ServerTokens Prod" >> /etc/apache2/apache2.conf
RUN echo "ServerSignature Off" >> /etc/apache2/apache2.conf
RUN echo "export LD_LIBRARY_PATH=\"/usr/lib/oracle/21.1/client64/lib\"" >> /etc/apache2/envvars
RUN echo "export ORACLE_HOME=\"/usr/lib/oracle/21.1/client64/lib\"" >> /etc/apache2/envvars
RUN ldconfig
ADD docker/conf/oracle/php-7.4.3.tar.gz /tmp/
RUN cp -r /tmp/php-7.4.3/ext/pdo_oci /tmp
RUN cd /tmp/pdo_oci && \
phpize && \
./configure --with-pdo-oci=instantclient,/usr/lib/oracle/21.1/client64/lib && \
make install
- 我试图删除所有,然后重新安装。
- 选中桌面 docker 上的框以使用 rosetta。
- 启动此cmd:softwareupdate --install-rosetta
- 全部删除,然后使用 Colima 重试
我一直都遇到同样的问题。
答:
解决
我不确定我的同事是如何解决这个问题的,但是该映像是在服务器上构建的,我使用 .docker-compose pull
因此,构建不再有问题,因为它是预构建的
评论
echo 'instantclient,/usr/lib/oracle/21.1/client64/lib' | pecl install oci8-2.2.0
LD_LIBRARY_PATH
ORACLE_HOME
pecl install oci8