如何在 PHP7.4 中使用 inotify

Posted

技术标签:

【中文标题】如何在 PHP7.4 中使用 inotify【英文标题】:How to use inotify with PHP7.4 【发布时间】:2019-12-19 14:03:20 【问题描述】:

我在 php 7.3.x 中使用 PECL 扩展 inotify 没有任何问题。我更新到 PHP 7.4 但我没有成功获得为构建 20190902 编译的 inotify 扩展,因为 PECL 命令 sudo pecl upgrade inotify 说有

无需升级

那么我怎样才能获得这个扩展呢?

【问题讨论】:

【参考方案1】:

我通过从源代码编译它来工作。可以下载最新版here(应该是>=2.0.0我相信)。

解压下载的.tgz,进入解压后的文件夹,然后继续执行以下命令:

phpize7.4  # this is the important command
./configure
make clean
make
make install

这将使用20190902 编译库并将其安装到/usr/lib/php/20190902

$ ls /usr/lib/php/20190902/ | grep inotify
inotify.so

我相信你知道如何启用扩展;但如果您不这样做,首先您需要在/etc/php/7.4/mods-available 中创建一个名为inotify.ini 的文件,其内容如下:extension=inotify.so 以引用该模组。所以它看起来像这样:

$ cat /etc/php/7.4/mods-available/inotify.ini 
extension=inotify.so

然后您可以在 7.4 版中为每个 SAPI 启用该 mod:phpenmod -v 7.4 -s ALL inotify。可能然后重置php7.4-fpm等。

【讨论】:

谢谢,如果.... 是否可以轻松卸载,或者我必须记住我复制该库的位置,我可能会尝试一下?因为我想我无法通过aptapt-get 删除它... 幸运的是,他们添加了make uninstall 规则,尽管我不认为他们那么慷慨。您可以使用make -n install 检查将要安装的内容,并逐步详细说明它将做什么但不执行任何操作。可能是为了卸载,虽然你可以从/usr/lib/php/20190902/inotify.so中删除编译的库,这应该足够了。【参考方案2】:

Inotify 的最后一个稳定版本(2020-12-18)似乎可以毫无问题地安装 :D 我刚刚成功安装了 3.0.0 版! https://pecl.php.net/package/inotify

【讨论】:

以上是关于如何在 PHP7.4 中使用 inotify的主要内容,如果未能解决你的问题,请参考以下文章

如何在功能测试中模拟 INotify 失败?

如何监视文件并在终端中打印出更改(使用 inotify)?

如何使用 Inotify 和 libev 在文件夹中获取新添加的文件?

如何在c中使用inotify查看具有多个文件更改的目录

如何在终端中使用 inotify-tools 获取递归目录路径

如何在 scrutinizer-ci 配置中为 php7.4 安装 ext-gd?