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

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

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

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

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

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

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

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

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

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

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
文章
107
粉丝
44
喜欢
147
收藏
183
排名:299
访问:3.2 万
私信
所有博文
社区赞助商