php pecl安装-如何指定选项?

piok6c0g  于 2023-02-28  发布在  PHP
关注(0)|答案(3)|浏览(314)

我正在尝试使用pecl安装event extension for PHP。在安装过程中,我得到了几个提示:

Enable internal debugging in Event [no] : 
Enable sockets support in Event [yes] : 
libevent installation prefix [/usr] : 
Include libevent's pthreads library and enable thread safety support in Event [no] : 
Include libevent protocol-specific functionality support including HTTP, DNS, and RPC [yes] : 
Include libevent OpenSSL support [yes] : 
PHP Namespace for all Event classes [no] : 
openssl installation prefix [no] :

但ofc只发生在交互模式。我需要这样做没有交互,例如在Dockerfile。默认值不为我工作,所以我需要改变他们的命令行选项。如何?
请记住,我需要对每个问题给出不同的答案,所以yes '' | pecl install ...根本不起作用,而且其中一个问题需要路径,而不是yes/no。

pvabu6sv

pvabu6sv1#

现在可以通过--configureoptions将配置选项传递给pecl install
你需要找到你的软件包的package.xml文件来查看哪些选项是可配置的。对于event软件包,你可以在这里找到:
https://bitbucket.org/osmanov/pecl-event/src/master/package.xml
搜索<configureoption>标记,在本例中为:

<configureoption default="no" name="enable-event-debug" prompt="Enable internal debugging in Event"/>
<configureoption default="yes" name="enable-event-sockets" prompt="Enable sockets support in Event"/>
<configureoption default="/usr" name="with-event-libevent-dir" prompt="libevent installation prefix"/>
<configureoption default="no" name="with-event-pthreads" prompt="Include libevent's pthreads library and enable thread safety support in Event"/>
<configureoption default="yes" name="with-event-extra" prompt="Include libevent protocol-specific functionality support including HTTP, DNS, and RPC"/>
<configureoption default="yes" name="with-event-openssl" prompt="Include libevent OpenSSL support"/>
<configureoption default="no" name="with-event-ns" prompt="PHP Namespace for all Event classes"/>
<configureoption default="yes" name="with-openssl-dir" prompt="openssl installation prefix"/>

然后,您可以将这些选项沿着给install命令,如下所示:

pecl install --configureoptions 'enable-event-debug="no" with-event-libevent-dir="/my/dir" with-event-ns="yes"' event
f1tvaqid

f1tvaqid2#

pecl的非交互模式还不可用。它可以用yes命令补充。命令输出肯定直到终止。
您可以将yes与管道一起使用,如下所示:yes '' | pecl install ...
编辑:如果你不需要每次迭代都输出yes,就像echo 'yes\n no\n ...' | pecl install ...一样重复你的答案
更多编辑:如果您在Docker中使用此解决方案,则在Dockerfile中可以使用命令docker-php-ext-install event,然后使用docker-php-ext-configure ...

5gfr0r5j

5gfr0r5j3#

我使用PHP workerman这些天,也遇到了这个问题,当安装event扩展在Docker.以下工人的文档,event应配置为:

  • 不包括libevent OpenSSL支持
  • 为所有事件类启用PHP名称空间

这意味着对于交互式问题Include libevent OpenSSL support [yes] :应该键入no,对于Include libevent OpenSSL support [yes] :应该键入yes,而对于其他问题则只留下enter
您可以尝试THIS解决方案(也可以将RUN放在Dockerfile的头部):

printf "\n\n\n\n\nno\nyes\n\n" | pecl install event

echo '\n\n\n\n\nno\nyes\n\n'不起作用,因为它似乎不用作交互式应答,它将整个字符串作为配置参数值发送,您可能会看到:

running: /tmp/pear/temp/event/configure --with-php-config=/usr/bin/php-config --enable-event-debug=\n\n\n\n\nno\nyes\n\n ...

相关问题