【问题标题】:Can PHP execute a terminal command [duplicate]PHP可以执行终端命令[重复]
【发布时间】:2013-01-23 08:21:12
【问题描述】:

可能重复:
Executing linux commands with PHP

我有一个 PHP 文件,它创建了一个 .xfdf 文件我想知道 PHP 是否有一种执行命令的方法,就像你在终端窗口中键入的那样?在创建.xfdf 文件以生成.pdf 文件后,我必须运行以下命令

pdftk /var/www/pdf/TimeCard.pdf fill_form /var/www/pdf/results/Brandon_01_23_13.xfdf output /var/www/pdf/results/testNew.pdf flatten

该命令需要能够接受 PHP 变量,以便为用户定制。有没有简单的方法可以做到这一点?

【问题讨论】:

  • 查看本页右下角的相关问题即可!

标签: php


【解决方案1】:

是的,您可以使用exec()pcntl_exec()system()

$command = 'pdftk /var/www/pdf/TimeCard.pdf fill_form /var/www/pdf/results/Brandon_01_23_13.xfdf output /var/www/pdf/results/testNew.pdf flatten';
exec($command);

使用这些命令时要非常小心,它们非常有用/强大,但因此,黑客可能会通过它访问您的整个服务器(取决于权限,但足以破坏您的网站)。

如果您需要发送用户上传的文件名/文本,请检查它们(例如检查文件路径是否在正确的位置,而不是 ../../../something.pdf,检查 MIME 类型和扩展名)。

【讨论】:

  • 您对如何防范这种情况有什么建议吗?
  • 我添加了更多信息,但我需要知道您从用户那里收到的数据是什么。
【解决方案2】:

是的,您可以使用:

  1. system
  2. exec
  3. passthru

【讨论】:

  • passthru 与这些有什么关系?
  • passthru — 执行外部程序并显示原始输出
  • "当 Unix 命令的输出是需要直接传回浏览器的二进制数据时,应使用此函数代替 exec() 或 system()。"
【解决方案3】:

根据您的具体要求,您可以使用exec()system()shell_exec()

【讨论】:

    【解决方案4】:

    使用system()eval() 函数。

    但要确保用户不能注入任意命令!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-05
      • 2012-05-22
      • 2015-10-10
      • 1970-01-01
      • 2016-03-15
      • 2015-05-27
      • 2017-04-08
      • 2014-12-15
      相关资源
      最近更新 更多