【问题标题】:Check if PDFTOHTML is installed on server检查服务器上是否安装了 PDFTOHTML
【发布时间】:2021-03-19 17:00:54
【问题描述】:

我正在尝试在运行 php 脚本之前检查服务器上是否安装了 pdftohtml

有没有办法从代码中检查pdftohtml 是否安装在服务器(linux 或 mac)上。

我正在寻找类似于function_exists()的东西

【问题讨论】:

  • 到目前为止你尝试过什么?你被困在哪里了?使用file_exists有什么问题吗?
  • 如何检查 file_exists 是否安装在服务器上?我不知道该怎么做.. :)
  • 我正在尝试shell_exec(phptohtml -v) 如果已安装则返回版本,如果没有则返回错误。
  • 那么,到目前为止,您尝试了什么?你的任务有什么要求?在任何地方找到那个二进制文件?为什么不让用户配置呢?为什么不使用 Composer 安装它以确保它存在?
  • 看这个链接,我想它会对你有所帮助:stackoverflow.com/questions/12424787/…

标签: php linux macos server


【解决方案1】:

也许,以下方法可以解决您的问题:

$isInstalled = (bool) shell_exec('which pdftohtml');

which 如果未找到该程序,则不返回任何内容。但它只有在全局安装时才有效(不指定绝对路径)。如果存在则返回完整路径

【讨论】:

  • 出于某种原因shell_exec 它没有返回值。我也试过shell_exec('pdftohtml -v')。如果我在终端中运行命令,那么它会返回一个值。
  • 服务器上似乎不存在pdftohtml。检查其他内容:shell_exec('which which')
  • 如果我在终端 which pdftohtml 中运行命令,那么它会返回路径 /usr/local/bin/pdftohtml
  • 如果你从另一个用户运行php,它可能与当前用户有关。从 PHP 和终端运行 whoami。但是,如果您以同一用户身份运行两者,则应该还有其他内容。例如,shell_exec 可以被禁用。你也可以运行另一个函数,比如exec('which pdftohtml', $output, $result);(很有可能它也会被禁用)
  • 实际上,如果shell_exec 被禁用,您可能也无法运行pdftohtml。检查function_exists('shell_exec')。当然,你应该看看之前运行shell_exec时它是否不存在,但也许你的脚本没有显示错误,它是你的脚本的结尾。
猜你喜欢
  • 2013-09-26
  • 2015-12-24
  • 2012-04-09
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 2014-03-13
相关资源
最近更新 更多