Closed dmanbu closed 3 years ago
你看下是否改动了workerman的代码,/opt/imserver/vendor/workerman/workerman/Timer.php
117行 self::$_event
不可能是integer。
你看下是否改动了workerman的代码,
/opt/imserver/vendor/workerman/workerman/Timer.php
117行self::$_event
不可能是integer。
我并未改动workerman的代码,而是直接使用 http://www.workerman.net/download/GatewayWorker.zip 这个压缩包里面的demo
libevent扩展不支持php7,不要使用libevent扩展,请使用event扩展。
libevent扩展不支持php7,不要使用libevent扩展,请使用event扩展。
为什么我在虚拟机下不会报这个错?我虚拟机与容器同样使用的 php7 加 event 扩展,而且版本一致 只有在容器下才会报这个错?
你docker下使用的并不是event扩展,而是libevent扩展。
你docker下使用的并不是event扩展,而是libevent扩展。
刚才我描述错了,我虚拟机与容器同样使用的 php7 加 event 扩展和 libevent 扩展
虚拟机安装环境
yum -y install epel-release wget \
&& yum -y install https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm \
&& yum -y install https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm \
&& mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup \
&& wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo \
&& sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo \
&& mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup \
&& mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup \
&& wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo \
&& sed -i 's#rpms.remirepo.net#mirrors.aliyun.com/remi#g' /etc/yum.repos.d/remi*.repo \
&& sed -i 's#cdn.remirepo.net#mirrors.aliyun.com/remi#g' /etc/yum.repos.d/remi*.repo \
&& sed -i 's/^mirrorlist/#mirrorlist/g' /etc/yum.repos.d/remi*.repo \
&& sed -i 's/^#baseurl/baseurl/g' /etc/yum.repos.d/remi*.repo \
&& yum clean all \
&& yum makecache \
&& yum -y install gcc gcc-c++ make libevent libevent-devel net-tools iproute php72 php72-php-cli php72-php-fpm php72-php-devel php72-php-pear php72-php-process php72-php-mysqlnd php72-php-bcmath php72-php-pecl-event php72-php-gd php72-php-intl php72-php-mbstring php72-php-pecl-redis4 php72-php-soap php72-php-xmlrpc php72-php-pecl-zip file \
&& source /opt/remi/php72/enable \
&& cd /opt/imserver/pecl-event-libevent-master/ \
&& phpize \
&& ./configure \
&& make \
&& make install \
&& cp 30-libevent.ini /etc/opt/remi/php72/php.d/ \
容器Dockerfile
cat > Dockerfile <<EOF
FROM centos:7.8.2003
RUN yum -y install epel-release wget \
&& yum -y install https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm \
&& yum -y install https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm \
&& mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup \
&& wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo \
&& sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo \
&& mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup \
&& mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup \
&& wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo \
&& sed -i 's#rpms.remirepo.net#mirrors.aliyun.com/remi#g' /etc/yum.repos.d/remi*.repo \
&& sed -i 's#cdn.remirepo.net#mirrors.aliyun.com/remi#g' /etc/yum.repos.d/remi*.repo \
&& sed -i 's/^mirrorlist/#mirrorlist/g' /etc/yum.repos.d/remi*.repo \
&& sed -i 's/^#baseurl/baseurl/g' /etc/yum.repos.d/remi*.repo \
&& yum clean all \
&& yum makecache \
&& yum -y install gcc gcc-c++ make libevent libevent-devel net-tools iproute php72 php72-php-cli php72-php-fpm php72-php-devel php72-php-pear php72-php-process php72-php-mysqlnd php72-php-bcmath php72-php-pecl-event php72-php-gd php72-php-intl php72-php-mbstring php72-php-pecl-redis4 php72-php-soap php72-php-xmlrpc php72-php-pecl-zip file \
&& source /opt/remi/php72/enable \
&& cd /opt/imserver/pecl-event-libevent-master/ \
&& phpize \
&& ./configure \
&& make \
&& make install \
&& cp 30-libevent.ini /etc/opt/remi/php72/php.d/ \
&& cd .. \
&& rm -rf pecl-event-libevent-master \
&& yum clean all \
&& rm -rf /var/tmp/yum*
ENV PATH=/opt/remi/php72/root/usr/bin:/opt/remi/php72/root/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV LD_LIBRARY_PATH=/opt/remi/php72/root/usr/lib64
ENV MANPATH=/opt/remi/php72/root/usr/share/man
EOF
用event扩展就行了。它和libevent扩展效果一样。 不要在php7下使用libevnet扩展,libevent扩展作者没有发布过php7版本的扩展。应该是你用了哪个非官方libevent扩展导致的。 具体为什么docker下不能使用,需要你问下这个非官方libevent扩展作者。
我在虚拟机环境下,启动gatewayworker的demo,没问题 但在docker下,启动 start_businessworker.php 时,却会报错,docker和虚拟机环境安装的依赖是一模一样的,错误如下: