Open life5ign opened 1 year ago
d u have php-curl ext installed?
maybe try use pear/pecl installation https://openswoole.com/docs/get-started/installation#pecl-configuration-options-for-open-swoole
It doesn't look like php-curl
is the solution, but rather libcurl4-openssl-dev
.
According to https://openswoole.com/docs/get-started/common-install-errors#missing-libcurl-errors, that library is required if openswoole is to be compiled with --enable-hook-curl
. Adding that to the Dockerfile allowed it to build for me.
After getting the build to work, I've noticed that running the example server.php
does not end up allowing the host to connect at 127.0.0.1
. I replaced 127.0.0.1
with 0.0.0.0
in the server.php
and it solved that issue.
In summary, my working Dockerfile:
FROM php:8.2.0-cli
RUN apt-get update && apt-get install vim -y && \
apt-get install openssl -y && \
apt-get install libssl-dev -y && \
apt-get install libcurl4-openssl-dev -y && \
apt-get install wget -y && \
apt-get install git -y && \
apt-get install procps -y && \
apt-get install htop -y
RUN cd /tmp && git clone https://github.com/openswoole/ext-openswoole.git && \
cd ext-openswoole && \
git checkout v22.0.0 && \
phpize && \
./configure --enable-openssl --enable-hook-curl --enable-http2 --enable-mysqlnd && \
make && make install
RUN touch /usr/local/etc/php/conf.d/openswoole.ini && \
echo 'extension=openswoole.so' > /usr/local/etc/php/conf.d/zzz_openswoole.ini
RUN wget -O /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.2/dumb-init_1.2.2_amd64
RUN chmod +x /usr/local/bin/dumb-init
RUN apt-get autoremove -y && rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["/usr/local/bin/dumb-init", "--", "php"]
And my server.php
<?php
use OpenSwoole\Http\Server;
use OpenSwoole\Http\Request;
use OpenSwoole\Http\Response;
$server = new OpenSwoole\HTTP\Server("0.0.0.0", 9501);
$server->on("Start", function(Server $server)
{
echo "OpenSwoole http server is started at http://127.0.0.1:9501\n";
});
$server->on("Request", function(Request $request, Response $response)
{
$response->header("Content-Type", "text/plain");
$response->end("Hello World\n");
});
$server->start();
@KelseySheely , thank you, that worked for me; much appreciated. I'm going to leave this open so that the openswoole team can update their documentation.
I copied the Dockerfile and built it as instructed on https://openswoole.com/docs/get-started/try-docker
Upon build, I got the error: