我创建了一个将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调用的命令/脚本吗?如果是这样,任何解决方法?
答案 0 :(得分:0)
我认为当你想要转义'\'char AND'n'char时,目前它正在替换'\ n'字符。尝试更改您的请求:
`mysql -uXXX -pXXX -e "UPDATE tbl SET var = REPLACE(var, '\\n', '<br />')" db`