【问题标题】:Issue with ext-sockets in DockerDocker 中的 ext-sockets 问题
【发布时间】:2022-01-31 10:18:11
【问题描述】:

我有这个 Dockerfile:

FROM php:8.0

RUN apt update && apt install -y nano supervisor cron curl && docker-php-ext-install sockets && docker-php-ext-enable sockets 

COPY docker/crontab /etc/cron.d/crontab
COPY docker/supervisord.conf /etc/supervisor/supervisord.conf
COPY docker/supervisord-programs.conf /etc/supervisor/conf.d/app.conf
COPY . /home/mysignature/app

RUN chmod 0644 /etc/cron.d/crontab

RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
    && php composer-setup.php \
    && php -r "unlink('composer-setup.php');" \
    && mv composer.phar /usr/local/bin/composer

WORKDIR /home/mysignature/app

RUN composer install

RUN crontab /etc/cron.d/crontab

CMD ["supervisord", "-c", "/etc/supervisor/supervisord.conf"]

我有一个错误:

/usr/src/php/ext/sockets/sendrecvmsg.c:在函数“init_ancillary_registry”中: /usr/src/php/ext/sockets/sendrecvmsg.c:128:19:错误:“sizeof”对不完整类型“struct cmsgcred”的无效应用 128 | PUT_ENTRY(sizeof(struct cmsgcred), 0, 0, from_zval_write_ucred, | ^~~~~~ /usr/src/php/ext/sockets/sendrecvmsg.c:99:17:注意:在宏“PUT_ENTRY”的定义中 99 | entry.size = sizev;
| ^~~~~ /usr/src/php/ext/sockets/sendrecvmsg.c:129:36: 错误: 'SCM_CREDS' 未声明(在此函数中首次使用) 129 | to_zval_read_ucred,SOL_SOCKET,SCM_CREDS); | ^~~~~~~~~ /usr/src/php/ext/sockets/sendrecvmsg.c:105:19:注意:在宏“PUT_ENTRY”的定义中 105 | key.cmsg_type = 类型;
| ^~~~ /usr/src/php/ext/sockets/sendrecvmsg.c:129:36:注意:每个未声明的标识符对于它出现的每个函数只报告一次 129 | to_zval_read_ucred,SOL_SOCKET,SCM_CREDS); | ^~~~~~~~~ /usr/src/php/ext/sockets/sendrecvmsg.c:105:19:注意:在宏“PUT_ENTRY”的定义中 105 | key.cmsg_type = 类型;
| ^~~~ make: *** [Makefile:216: sendrecvmsg.lo] 错误 1

【问题讨论】:

    标签: docker php-8


    【解决方案1】:

    使用这个 php 图像是一种不好的方式,因为它没有最后更新?所以我只是使用ubuntu图像并手动安装了php

    FROM ubuntu
    
    RUN apt-get update && apt install -y software-properties-common \
        && add-apt-repository ppa:ondrej/php \
        && apt-get update \
        && apt install -y nano supervisor cron curl php8.0 php8.0-common php8.0-xml php8.0-dom
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      • 1970-01-01
      相关资源
      最近更新 更多