Php 使用ZMQ,我可以使用CLI将套接字绑定到端点,但不使用Apache2中的相同脚本。为什么?

Php 使用ZMQ,我可以使用CLI将套接字绑定到端点,但不使用Apache2中的相同脚本。为什么?,php,Php,以下是流管理器类: class stream_manager { protected $context; public function __construct($user) { $this->context = new \ZMQContext(); } public function isPortSuitable(int $portNumber) { $socket = null; tr

以下是
流管理器
类:

class stream_manager
{

    protected $context;

    public function __construct($user)
    {
        $this->context = new \ZMQContext();
    }

    public function isPortSuitable(int $portNumber)
    {
        $socket = null;
        try
        {
            $socket = $this->context->getSocket(\ZMQ::SOCKET_REQ);
            $socket->bind('tcp://127.0.0.1:' . $portNumber);
        }
        catch(\Exception $e)
        {
            /**  */
        }
        finally
        {
            /**  */
        }
    }
}
无论端口号如何,我都会得到一个
ZMQSocketException:无法绑定已在使用的ZMQ:地址

但是,如果我从CLI执行以下脚本,我可以绑定到流管理器抛出的端口。我还成功地使用了web服务器上的以下脚本,使用了
backticks

try
    {
        $context = new ZMQContext();
        $socket = $context->getSocket(\ZMQ::SOCKET_REQ);
        $socket->bind('tcp://127.0.0.1:8080');
    }
    catch(\Exception $e)
    {
        /** */
    }
    finally
    {
        try
        {
            /** */
        }
        catch(\Throwable $e)
        {
            /** */
        }
    }

当从CLI执行的脚本(或使用
backticks
)将绑定到任何端点时,为什么我的实例方法不绑定到任何端点?

也。。。这是在Docker容器中执行的,所以。。。这是在Docker容器中执行的