我创建了一个将 bash 换行符 [\n] 转换为 HTML 换行符 [< br />] 的网页。这可以通过网页调用来实现
shell_exec("bash /xxx/xxx/script.sh");
在 bash script.sh 中,它运行一系列 SQL 查询以将 bash 换行符替换为 html 换行符,从而允许我将 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: no tty present and no askpass program specified
这可能是 TTY 问题,因为它是用户 apache 调用的命令/脚本吗?如果是这样,任何解决方法?