PHP 中命令行调用 escapeshellarg 函数中文问题

escapeshellarg 是 PHP 中的一个函数,它可以将字符串转义为安全的 shell 参数。它的中文名称可能是 “转义 shell 参数”。

在 PHP 中,你可以使用 escapeshellarg 函数来保证传递给 shell 命令的参数是安全的。这样可以避免命令注入攻击。

例如,如果你想在 PHP 中执行一个命令,你可以这样做:

$output = shell_exec('mycommand ' . escapeshellarg($input));

在这个例子中,$input 是一个用户输入的字符串,你可以使用 escapeshellarg 将它转义为安全的 shell 参数。这样,你就可以确保用户输入不会导致命令注入攻击。

在使用 escapeshellarg 函数时,你可能会发现包含中文字符的字符串被转义后变成空字符串。这是因为 escapeshellarg 函数默认使用的是 ASCII 字符集,对于非 ASCII 字符,它会将其视为无效字符,并将其过滤掉。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

有执行 Shell 命令的需求的话可以考虑使用 symfony/process 这个包。

对于 escape 的话,也可以参考一下这个包里面的 process/Process.php at 6.2 · symfony/process 实现。

3周前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!