gpt4 book ai didi

php - 字符串未通过 shell_exec 正确传递到 bash 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:34:43 24 4
gpt4 key购买 nike

在page1中输入文字:

...
<form name="myform" action="page2.php" method="post">
<input type="text" size="92" name="my_text" />
...

page2.php:

...
$our_text = ($_POST['my_text']);

到现在为止一切正常,echo $our_text 仍然给我正确的字符串。但是,当将 $subject 传递给 bash 脚本时:

...
shell_exec("./myscript.sh '$our_text'");

在 myscript.sh 中:

...
still_our_text=$1
echo $still_our_text > log.txt

log.txt 中,如果它只有标准字母和空格,我就有了完整的字符串。但是如果有撇号或带重音的字母(法语 é 或 è 或 ê),然后我只会得到奇怪的东西“我现在就做”在 log.txt 中保持完整“我现在就做”只是行不通,未创建 log.txt“L'éléphant va bien”(意思是大象感觉很好……),实际上是把“Léléphant”放在log.txt中,如果我们通过shell exec传递额外的参数,其他的词在其他论点例如,如果我将 4 个参数传递给 shell exec:

1: "L'éléphant va bien"
2: "go"
3: 4
4: "stop"

然后在 scrip.sh 中,如果我在 log.txt 中将 $1 回显到 $4,我有:

1: Léléphant
2: va
3: bien
4:

但有时它只是不起作用,log.txt 中什么也没有写入。

关于如何解决此问题并通过 shell_exec 正确传递字符串的任何想法,以便我在 bash 脚本中恢复我的完整字符串?提前致谢

最佳答案

escapeshellarg应该管用。举个例子:

ourtext.php

<?php
setlocale(LC_CTYPE, 'en_US.UTF-8');
$our_text = "L'éléphant va bien";
shell_exec('./myscript.sh ' . escapeshellarg($our_text));

我的脚本.sh

still_our_text=$1
printf '%s\n' "$still_our_text" >log.txt

(进行了一些更改以使其更健壮)

然后从命令行像这样运行它:

$ php ourtext.php; cat log.txt
L'éléphant va bien

关于php - 字符串未通过 shell_exec 正确传递到 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21408774/

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