Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-发现是否存在Debian包_Php_Linux_Unix_Package - Fatal编程技术网

PHP-发现是否存在Debian包

PHP-发现是否存在Debian包,php,linux,unix,package,Php,Linux,Unix,Package,我希望能够发现我们的生产服务器上是否安装了Debian软件包,其功能应该与之类似 有人能推荐一种方法吗?我只能假设我应该使用exec()并解析'command not found'的返回值,但我想知道是否有更安全/更好的选项。如果您有执行权限,则可以使用以下选项之一: whereis packagename apt-cache policy packagename 您可以为此编写一个简单的API。它应该执行如下操作: 让php将想要的包写入xml文件、文本文件或数据库,以及任何可以通过sh

我希望能够发现我们的生产服务器上是否安装了Debian软件包,其功能应该与之类似


有人能推荐一种方法吗?我只能假设我应该使用
exec()
并解析'command not found'的返回值,但我想知道是否有更安全/更好的选项。

如果您有执行权限,则可以使用以下选项之一:

whereis packagename

apt-cache policy packagename

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

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

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

在这种情况下,我确实可以访问
exec
,我喜欢使用
where is
来代替我的方法,如果有人以某种方式检查
是否关闭-h0
存在,服务器将死亡!谢谢非常感谢您的回答,这当然是一个有效的方法,但在这种情况下,最好立即回复+1.