gpt4 book ai didi

php - 将 bash 换行符转换为 HTML 换行符;在 BASH 中运行良好,但不能通过 shell_exec

转载 作者:行者123 更新时间:2023-11-28 03:36:03 30 4
gpt4 key购买 nike

我创建了一个将 bash 换行符 [\n] 转换为 HTML 换行符 [< br/>] 的网页。这通过让网页调用

shell_exec("bash /xxx/xxx/script.sh");

在 bash script.sh 中,它运行一系列 SQL 查询以用 html 换行符替换 bash 换行符,允许我将 SQL 数据格式化为基于 HTML 的电子邮件。

`mysql -uXXX -pXXX -e "UPDATE tbl SET var = REPLACE(var, '\n', '<br />')" db`

当我通过 Linux cli 运行这个 bash 脚本时,它运行完美,它发送的电子邮件使用 HTML 换行符。但是当我通过 shell_exec 运行脚本时,它只以纯文本形式显示 bash 换行符代码 [\n]。

这是使用 PHP shell_exec 运行 bash 脚本时的电子邮件输出示例。

[ var1 ]
test test test\ntest test test\n test some more
[ var2 ]
test test\ntest\ntest

还有我从 linux 运行 bash 脚本时的示例。

[ var1 ]
test test test
test test test
test some more
[ var2 ]
test test
test
test

我知道我的其他 SQL 查询有效,例如 SELECT MAX(id) [获取适当的行和数据字段]。知道为什么同一个脚本在 linux bash 下运行得很好(运行 SQL 查询,替换换行符),而不是通过 PHP shell_exec 调用它吗?我在这里遗漏了什么吗?

* httpd 错误日志指出: sudo: 抱歉,你必须有 tty 才能运行 sudo

当我启用时: sudo: 不存在 tty 且未指定 askpass 程序

这可能是 TTY 问题,因为它是由用户 apache 调用的命令/脚本吗?如果是这样,有什么变通办法吗?

最佳答案

我认为当您想转义“\”字符和“n”字符时,当前它正在替换“\n”字符。尝试像这样更改您的请求:

`mysql -uXXX -pXXX -e "UPDATE tbl SET var = REPLACE(var, '\\n', '<br />')" db`

关于php - 将 bash 换行符转换为 HTML 换行符;在 BASH 中运行良好,但不能通过 shell_exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14259854/

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