我正在使用 Atom 的 flatpak 版本。我想安装一个 PHP 的 linting 包,这样更容易发现代码错误。但是它需要访问 php 二进制文件。
现在,由于这是一个 Flatpak,它是沙盒化的,所以我没有机会/usr/bin
在短期内授予它对目录的正确访问权限,但我发现我可以使用名为的 PHP 7.4 的 Flatpak 运行时org.freedesktop.Sdk.Extension.php74
,它应该可以满足我的需要。
我唯一剩下的问题是如何将其传递给包?提供给我的设置是一个路径文本字段,我通常会将路径传递给它/usr/bin/php
,但我如何调用与之等效的 flatpak?
答案1
因此我找到了一些解决办法,以下就是我的发现。
事实证明php
,传递 的正确方法是将其与路径 一起添加/var/run/host/usr/bin/phpX.X
,其中X.X
是您要使用的 PHP 的特定版本。在我的情况下,它是/var/run/host/usr/bin/php8.0
。
由于 Flatpak 沙箱/usr
以有限的方式挂载目录,为了允许 flatpaks 访问他们可能需要的某些系统二进制文件,仅运行等效文件/usr/bin/php
是不够的,需要具有特定版本号的特定二进制文件。
但是,仍然存在一个问题。Flatpak 沙箱本身似乎无法正确挂载东西,我相信这是一个已知问题。PHP二进制文件找不到两个 php 库 -libargon2
和。我尝试更改以尝试正确包含它们,但无济于事。libsodium
LD_LIBRARY_PATH
该问题在 PHP 7.1 版中仍然存在。
最后我转向了 Atom 的 Debian 软件包,因为我无法解决这个问题,但是如果这个问题在 Flatpak 沙箱中得到解决,我就会回到那里,上面的解决方案已经足够了。