我創建了一個網頁,可將bash換行符[\ n]轉換爲HTML換行符[< br />]。這是通過具有網頁呼叫將bash換行符轉換爲HTML換行符;在BASH中運行良好,但不通過shell_exec
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查詢,替換換行符),而不是通過用shell_exec調用它?我在這裏錯過了什麼嗎?
* httpd的錯誤日誌指出: 須藤:對不起,你必須有一個tty運行sudo的
,當我啓用: 須藤:沒有TTY出現,也沒有askpass程序指定
莫非這是一個TTY問題,因爲它是由用戶apache調用的命令/腳本?如果是這樣,任何解決方法?
我知道這並不能解決你問的問題,但是你的bash腳本發出的電子郵件或者是'shell_exec'的輸出傳遞給PHP腳本,然後發出消息?如果是後者,那麼你可以使用['nl2br()'](http://php.net/nl2br)在PHP端執行newline->'
'標籤轉換。 – RikkusRukkus
使用'shell_exec'是在PHP中執行SQL查詢的最佳方式嗎? **提示:** [no](http://php.net/manual/en/book.mysql.php)。 – kojiro
'sudo'錯誤消息顯示問題出現在您未在此處發佈的代碼中。無論如何,你的方法似乎相當奇怪。爲什麼你不會在PHP中進行替換,如果這就是你正在使用的? – tripleee