bash の改行 [\n] を HTML の改行 [< br />] に変換する Web ページを作成しました。これは、Webページを呼び出すことで機能します
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
SELECT MAX(id) [適切な行とデータ フィールドを取得する] など、他の SQL クエリが機能することはわかっています。同じスクリプトが Linux bash で完全に正常に実行される理由 (SQL クエリを実行し、改行を置き換える) についてのアイデアはありますが、PHP shell_exec で呼び出すことはできませんか? ここで何か不足していますか?
* httpd エラー ログの状態: sudo: 申し訳ありませんが、sudo を実行するには tty が必要です
sudo: tty が存在せず、askpass プログラムが指定されていない
ユーザーapacheによって呼び出されているコマンド/スクリプトであるため、これはTTYの問題でしょうか? もしそうなら、回避策はありますか?