PHP - 发现 Debian 软件包是否存在

发布于 2024-11-16 10:13:06 字数 240 浏览 0 评论 0原文

我希望能够发现 Debian 软件包是否已安装在我们的生产服务器上,其功能应该类似于 extension_loaded()

任何人都可以建议一个方法吗?我只能假设我应该使用 exec() 并解析“找不到命令”的返回值,但我想知道是否有更安全/更好的选择。

I want to be able to discover if a Debian package has been installed on our production server, the functionality should be just like extension_loaded().

Can anyone suggest a method? I can only assume I should use exec() and parse return value for 'command not found', I'd like to know if there's a safer / better option though.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

偏闹i 2024-11-23 10:13:06

如果您有执行权限,那么您可以使用以下其中一项:

whereis packagename

apt-cache policy packagename

If you have permission to exec, then you could use one of the following:

whereis packagename

apt-cache policy packagename
草莓味的萝莉 2024-11-23 10:13:06

您可以为此编写一个简单的 API。它应该执行如下操作;

  • 让 php 将所需的包写入 xml 文件、文本文件或数据库,任何您可以使用 shell 应用程序、perl 应用程序或其他方式读取的内容。
  • 在服务器级别,读取文件、数据库,检查包是否存在并返回输出文件、数据库表或其他内容中的值。
  • 使用 php 读出输出文件并将其显示给您的用户

上述提出的解决方案的缺点是它需要一些时间,例如。您无法实时检查包裹的可用性。如果这实际上是强制性的,您可以编写一个 php 脚本,该脚本不接受任何输入,但读取应从数据库或文本文件中检查的包,其中的值已经过广泛测试,例如。使用正则表达式。通过这种方式,您可以确定恶意用户无法注入 shell 命令。

You could write a simple API for this. It should do something like the following;

  • Let php write the wanted packages to a xml file, text file, or database, anything you can read with a shell app, perl app, or whatever.
  • On the server level, read out the file, database, check if the package exists and return the value in an output file, database table or whatever.
  • read out the output file with php and show it to your user

The drawback of the above proposed solution is that it takes some time, eg. you cannot check for the availability of the package in realtime. If that is actually mandatory, you could write a php script which does not take any input, but reads out the packages that should be checked from a database or a text file, where the values have been extensively tested, eg. using a regex. On this way you're sure a malicious user cannot inject shell commands.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文