【问题标题】:PHP read command from file and run itPHP 从文件中读取命令并运行它
【发布时间】:2010-08-11 20:00:20
【问题描述】:

我有一个写在一个文件中的 unix 命令,我需要 PHP 来读取它并执行它。需要从文件中读取它的原因是因为将命令符号直接放入脚本时会弄乱脚本。到目前为止,我有这个:

<?php
$command = readfile("http://localhost/command.txt");
echo shell_exec($command);
?> 

运行此程序后,我得到的只是文本文件的值,并且命令未执行。有没有办法做到这一点?

感谢您的帮助

【问题讨论】:

  • 命令符号如何弄乱脚本?您应该能够正确地转义它们(或将它们放在单引号 (') 中。您是否在安全模式限制下运行。

标签: php system shellexecute


【解决方案1】:

readfile() 函数并没有像您认为的那样做。它将文件的内容输出到浏览器,并返回读取的字节数。

相反,你想要file_get_contents():

$command = file_get_contents('http://localhost/command.txt');
echo shell_exec($command);

但是有一个问题:为什么要从网站上提取命令文件?为什么不是本地文件系统?

【讨论】:

  • 我可以将本地文件系统做得更好(据我所知)。刚刚使用 localhost 因为它的 URL 较短。它的工作原理谢谢。
  • 本地文件系统更好。从网站拉取的唯一原因是如果您需要它在网站上(它的开销比简单的本地文件读取要高得多)......而且它的安全性要低得多,因为它需要 TCP 往返(对于localhost,但由于 DNS 中毒攻击等原因,对于任何其他域来说更是如此)...如果您要执行结果,请作为规则从本地文件中读取它...
【解决方案2】:

我认为您使用这种方法过于复杂了。尝试将字符串直接放入您的 php 脚本中,并显示问题所在。

【讨论】:

    【解决方案3】:

    您不只是使用 popen 的任何特殊原因?

    http://www.php.net/manual/en/function.popen.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 2015-03-11
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多