PHP 调用 exec 执行中文命令的坑

PHP 调用并执行 Linux 命令 阅读详情
首先,我们的项目中有这么一个需求,就是需要在发送请求时,需要调用 java 写的一个加密库。所以不可避免的会使用到 php 的 exec 方法执行 shell 命令。

一切都很正常,直到,出现了中文。哎。具体的 case 如下:

样例代码:

<?php
    $cmd = 'java -jar sign-maker.jar mike messi';
    exec($cmd, $ret, $out);
    var_dump($ret);
    $cmd = 'java -jar sign-maker.jar 麦克 梅西';
    exec($cmd, $ret, $out);
    var_dump($ret);
其中,sign-maker.jar 就是我们按照第三方的加密协议的一个签名包(虽然也是我写的),执行这段代码,我们可以得到如下的结果:

php index.
php
array(1)
{
  [0]=>
  string(80) "495cc9e9269265cc0e7d58940367976571a1c4fdb90bf842ee4ba703fb1a554abf0772218e29d3d8"
}
array(2) {
  [0]=>
  string(80) "495cc9e9269265cc0e7d58940367976571a1c4fdb90bf842ee4ba703fb1a554abf0772218e29d3d8"
  [1]=>
  string(80) "e442a87d369a1a3c610bb2d18bd38fdad3b52644ab0ef86a21b57a5d0d75cb8dbf0772218e29d3d8"
}
可以看到,我们已经生成了两个 sign 值。但是,在传输过程中,对面居然报了 sign 无效的错误。觉得很奇怪,第一个 sign 是正确的,但是第二个就是败了。于是我们在终端中手动输入了这个命令:

└─[$]> java -jar sign-maker.jar 麦克 梅西
92144a18e9f75ec2e257c9bb15a05825a706064445b9492efd065dfd6c8b38d0bf0772218e29d3d8
发现 sign 果然不同。所以第一反应是字符编码的问题,尝试了 utf8encode,iconv 等等方法转换字符,但是都是无功而返。最后定为到环境变量的问题上。

解决办法
解决办法先上,在 exec 的命令前首先指定字符集:

<?php
    $set_charset = 'export LANG=en_US.UTF-8;';
    $cmd = 'java -jar sign-maker.jar mike messi';
    exec($set_charset.$cmd, $ret, $out); 
    var_dump($ret);
这样即可。
解决Windows下PHP的exec、shell_exec等函数不能正常运行的方法 在Windows平台下安装PHP后,在使用PHP的exec、shell_exec等函数时,经常会遇到报错:unable to fork...,这实际上是因为PHP对cmd.exe没有足够的权限引起的。 立即下载

相关推荐

【NLP】语言模型的发展历程 (1)

N-gram模型是一种基于统计语言模型的文本分析算法,它用于预测文本中下一个词出现的概率,基于前面出现的n-1个词的序列。这里的n代表序列中元素的数量,因此称为N-gram。Unigram:N=1,每个单词的出现概率独立计算,不考虑上下文。Bigram:N=2,基于前一个单词预测当前单词的联合概率模型。Trigram:N=3,考虑前两个单词来预测当前单词的联合概率模型,更复杂但可能更准确。

酒酿小圆子呀~ 1668

PHP中执行exec遇到的坑(linux权限的坑)

坑一 今天在使用php中的exec()命令,下载搜狗推广数据报表压缩包,解压的时候遇到一个坑,搜狗给了一个链接,在浏览器访问的时候直接下载的是.zip的压缩包,于是使用 //下载压缩包 exec("wget -O /home/www/test/filename.zip 'sougou_url'");//注意url要用单引号包含住 //解压 exec('unzip -o /home/www...

守护大白菜的博客 3510

使用ACOLITE对OLCI影像进行大气校正+批处理

使用ACOLITE对OLCI影像进行大气校正+批处理

mrzhy1的博客 7359

php exec 执行 中文_PHP 调用 exec 执行中文命令的坑

写在之前首先,我们的项目中有这么一个需求,就是需要在发送请求时,需要调用 java 写的一个加密库。所以不可避免的会使用到 php 的 exec 方法执行 shell 命令。一切都很正常,直到,出现了中文。哎。具体的 case 如下:样例代码:...

weixin_39984403的博客 347

避开内存陷阱:手把手教你用RKNN零拷贝接口正确管理输入输出Tensor

本文深入解析RKNN零拷贝接口在边缘计算中的高效内存管理策略,通过YOLOX实例演示如何避免内存对齐错误和数据错位。详细介绍了`rknn_tensor_mem`系列API的正确使用方法,包括内存创建、绑定、释放全流程,以及性能优化技巧如内存池技术和多核NPU负载均衡,帮助开发者提升推理效率并避开常见陷阱。

weixin_33686714的博客 160

Xilinx XDMA IP核配置实战:AXI Memory Mapped vs Stream选型指南(附PCIe调试技巧)

本文深入解析Xilinx XDMA IP核配置中AXI Memory Mapped与AXI Stream两种DMA接口的核心区别与选型策略。针对PCIe高速数据传输场景,详细对比了二者在数据特性、延迟、硬件资源及软件复杂度上的差异,为FPGA工程师在数据采集、实时处理等项目中做出高效设计决策提供实战指南,并附有关键的PCIe调试技巧。

qsc901234的博客 585

windows php 执行exec 或 shell_exec 无效

目前在做一个网页导出成pdf的工作,使用的工具由 tcPDF、dompdf、html2fpdf 等 处于各种限制,最后决定使用wkhtmltopdf 貌似。只要网页去除掉js的引入能够正常显示,那么这个工具就可以满足转化为pdf。 wkhtmltopdf 安装这里有相关的安装信息,至于下载wkhtmltopdf,大家可以找找国内的资源,因为官网下载超级慢,而且总失败 言归正传哈,wkhtm...

u011713224的专栏 3791

Ubuntu终端AI编程助手配置:Claude Code接入DeepSeek模型全攻略

在软件开发领域,AI编程助手正成为提升开发效率的重要工具。其核心原理是通过大语言模型理解自然语言指令,生成、解释或调试代码。这类工具的技术价值在于将AI能力无缝集成到开发工作流中,减少上下文切换,实现更流畅的人机协作。常见的应用场景包括代码生成、错误调试、代码重构和技术问答等。本文聚焦于在Ubuntu系统中,将流行的终端AI助手Claude Code的后端模型从原版Claude替换为DeepSeek。通过配置环境变量实现API端点和模型的映射,这一过程涉及Node.js环境管理、npm包安装和关键环境变量设

weixin_42527654的博客 377

php exec乱码问题

开头在网上找了需要,有字符拿出来转utf-8的,均不行。然后发现直接这样即可,$reArr 是返回的内容。

小婷 401

避坑指南:LAMMPS做GCMC模拟时,化学势mu和压力p到底怎么设?

本文详细解析了LAMMPS中巨正则蒙特卡洛(GCMC)模拟的关键参数设置,特别是化学势(mu)与压力(p)的正确计算方法。通过理论分析、实用公式和黄金法则,帮助用户避免常见误区,提升模拟精度和效率,适用于各类复杂体系的分子模拟研究。

weixin_42525289的博客 429

疫情数据分析的“核武器”!JHU CSSE COVID-19数据集超深度解析与实战指南(附代码)

在面对这场没有硝烟的战争时,除了医护人员在前线与病毒搏斗,还有一群默默的英雄——数据科学家和分析师,他们利用手中的“数据武器”,昼夜不停地监测、分析、预测疫情走势,为政府决策、资源调配、公众科普提供了至关重要的支撑。同时,由于某些国家(如美国、加拿大、澳大利亚、中国等)的数据细化到省/州级别,为了得到国家层面的总数据,我们需要按国家和日期进行聚合。正是在这样的背景下,经过这些步骤,我们已经得到了一个包含了累计数据、每日新增数据和活跃病例数的完整数据集,可以开始进行深入的分析和可视化了!

wylee的博客 1165

怎样在php中执行exec命令

具体我也没搞清楚,在网上找到一片文章,在我执行命令时返回值为1,可是明明存在的.exe文件怎么就不能运行呢?==========================================================================exec函数的作用是执行系统命令行命令,其语法为:string exec ( string command [, array &outp

realduke2000的专栏 3404

YOLOv8改进,MobileNetV3轻量化架构改进特征提取网络,助力涨点

MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。本文开始探讨了自动化搜索算法与网络设计如何协同工作,以利用互补方法来提升整体技术水平。通过这一过程,创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用场景。这些模型随后被适配并应用于目标检测和语义分割任务。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3835

php执行exec外部程序失败,php在服务器执行exec命令失败的解决方法

php在服务器执行exec命令失败的解决方法前言:本文针对windows php环境,linux系统不在讨论范畴。出于安全的原因,服务器是不允许php或者其他语言执行exec命令的,当你有特殊需要php在服务器执行exec命令时,你需要设置两个地方,不然就无法执行成功。1、修改php.ini找到php配置文件php.ini,如果是用星外php自动安装程序配置php环境,这个文件就在C:\WINDO...

weixin_32532145的博客 1795

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()

php提供4种方法执行系统外部命令:exec()、passthru()、system()、 shell_exec()。在开始介绍前,先检查下php配置文件php.ini中是有禁止这是个函数。找到 disable_functions,配置如下: disable_functions = 如果“disable_functions=”后面有接上面四个函数,将其删除。默认php.ini配置...

lxw1844912514的博客 2789

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

shell脚本执行exec_如何使用PHP Exec和示例执行Shell命令

shell脚本执行execPhp provides web-based functionalities to develop web applications. But it also provides system related scripting and execution features. exec() function is used to execute an external bi...

cunjiu9486的博客 1328

php exec运行php命令不行

由于php是0以上的版本,取消了安全模式,所以考虑PHP.ini文件配置。但是要被触发,比如,当你把文件上传到服务器上以后,打开这个页面,就会直接读取数据库,比如某些博客程序,别人给你的,他直接多放了一个文件,里面有获取config.php的,然后直接显示这个文件的密码配置,这个就是后门。如果是命令行使用的话,直接运行即可,如果是apache使用的话,需要重启apache,如果是nginx配合使用的话,需要重启php-fpm,exec函数执行命令并不需要安全目录,只要有执行权限就可以执行。

aoxiangchina的博客 720

PHP中exec()函数执行系统命令失败

0.说明 在php中,我们可以使用exec()来执行系统命令,但有时我们会遇到exec()命令执行不成功,或者无返回的情况,下面来说明一下: 1.函数 exec ( string $command [, array &amp;$output [, int &amp;$return_var ]] ) : string 参数说明: ...

weixin_34034670的博客 1627

php执行外部命令函数:exec()、passthru()、system()、shell_exec()对比

PHP提供了4种方法执行系统外部命令:exec()、passthru()、system()、shell_exec(),下面分别介绍: 1、exec 原型:string exec ( string $command [, array &$output [, int &$return_var ]] ) exec执行command命令,但是不会输出全部结果,而是返回结果的最后一行,如果你想得到全部

Eliot 6838

php exec多条命令怎么拼接_php执行系统外部命令

提供4种方法:- exec()、passthru()、system()、 shell_exec()。在开始介绍前,先检查下php配置文件php.ini中是有禁止这是个函数。找到 disable_functions,配置如下:disable_functions =如果"disable_functions="后面有接上面四个函数,将其删除。默认php.ini配置文件中是不禁止你调用执行外部命...

weixin_39955829的博客 805

exec 执行结果_php执行系统外部命令的4种方法

提供4种方法:- exec()、passthru()、system()、 shell_exec()。在开始介绍前,先检查下php配置文件php.ini中是有禁止这是个函数。找到 disable_functions,配置如下:disable_functions =如果"disable_functions="后面有接上面四个函数,将其删除。默认php.ini配置文件中是不禁止你调用执行外部命令的函数的...

weixin_35598854的博客 500

PHP使用exec执行ping命令,php模拟ping命令(php exec函数的使用方法)

使用php模拟我们常用的DOS命令ping命令的方法,这里主要用到的是php的内置函数exec来调用系统的ping命令,从而实现ping命令功能的。复制代码代码如下:$to_ping='www.phpernote.com';$count=2;$psize=66;echo"正在执行phpping命令,请等待...\n";flush();while(1){echo"";exec("ping-c$cou...

weixin_39947314的博客 893

PHP执行Linux命令的两个有用的函数exec和shell_exec

php中的exec和shell_exec两个函数都可以用来执行linux命令,但它们在使用方式以及结果的返回上,差别还是比较大的。 exec 调用方式: exec($cmd.' 2>&1',$output,$status); $cmd:shell脚本 2>&1:表示shell脚本执行过程中的错误信息会被输出 $output:数组格式,用于存储2>&1输出的错误信息

时光清浅处,一步一安然 6012

php exec 执行 中文_exec php 执行不了怎么办

exec php执行不了的解决办法:1、修改yii文件首行,直接指明php解释器;2、修改exec调用方法,直接指明php解释器。本文操作环境:Windows7系统、PHP7.1版、Dell G3电脑。php exec 为何执行不了?缘起有一个定时任务,想在 OSS 后台管理页面可以点击启动,可是试了几种方法都不行;无论 system 还是 exec(手工在 shell command line ...

weixin_39831242的博客 290

linux PHP调用exec,PHP exec 函数 执行Linux命令

................................................................................................................................................................................................依然难以入睡,a...

weixin_42236938的博客 291

php 开启 exec,php怎么开启exec()函数?

exec()函数用来执行一个外部程序,我们再用这函数基本是在linux。开启exec()函数:exec()函数是被禁用的,要使用这个函数必须先开启。步骤:1、修改php.ini文件关掉安全模式 safe_mode = off然后在看看 禁用函数列表disable_functions = proc_open, popen, exec, system, shell_exec, passthru这里要把...

weixin_34401851的博客 2268
上一篇: 让Autodesk的Print Studio切片软件支持国产3D打印机
下一篇: 反编译apk出现Exception in thread "main" brut.androlib.err.UndefinedResObject: resource spec错误
坚果-大发
博客等级 码龄20年 90粉丝 38原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值