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

时间:2013-01-10 14:11:53

标签: php html sql bash sudo

我创建了一个将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调用的命令/脚本吗?如果是这样,任何解决方法?

1 个答案:

答案 0 :(得分:0)

我认为当你想要转义'\'char AND'n'char时,目前它正在替换'\ n'字符。尝试更改您的请求:

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