gpt4 book ai didi

php - 为什么我不应该在 php 中使用 unix 命令?

转载 作者:可可西里 更新时间:2023-11-01 13:02:27 26 4
gpt4 key购买 nike

为什么您更愿意避免在 php 中通过 exec() 使用 bash 命令?

我不考虑可移植性问题(我绝对不会将其移植到 Windows 上运行)。这只是编写脚本的好方法的问题。

一方面:

  1. 我需要在 php 中编写比在 bash 中多得多的行来完成相同的任务。例如,当我需要过滤文件中的某些行时,我无法使用某些东西而不是 cat file | 进行成像。 grep string > new_file.这将花费更多的时间和精力在 php 中完成。
  2. 我不想分析所有可能出错的情况。我只会向用户显示 bash 命令输出,这样他就会知道到底发生了什么。
  3. 我不需要围绕文件系统函数编写另一个包装器并使用它。利用操作系统进行文件搜索、操作等操作效率更高。

另一方面:

  1. 在大多数情况下,使用 exec() 调用 unix 命令可能效率低下。产生一个单独的进程是非常昂贵的。更不用说在 apache 下运行的脚本了,这比从命令行脚本生成效率更低。
  2. 有时它会变成“类似黑魔法”和类似 perl 的脚本。尽管可以通过详细评论避免这种情况。
  3. 也许我只是想在不应该的情况下同时使用两种不同的工具。每个工具都有自己的应用程序,不应混用。
  4. 尽管我确信用户不会出于恶意目的尝试运行脚本,但使用 exec() 是一个潜在的安全威胁。在大多数情况下,用户数据可以使用 escapeshellarg() 进行转义,但这仍然是一个需要考虑的问题。

最佳答案

避免这种情况的另一个原因是创建这样的安全漏洞要容易得多。例如,如果用户设法偷偷摸摸

`rm -rf /`

(使用反引号)输入,您的 bash 代码实际上可能会破坏服务器(或至少破坏某些东西)。

这主要是一种宗教信仰,大多数开发人员都试图编写始终有效的代码。依赖外部命令肯定会让您的代码在某些系统上(即使在同一操作系统上)失败。

关于php - 为什么我不应该在 php 中使用 unix 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2311714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com