- ベストアンサー
PHPファイルの戻り値に改行コードが含まれる理由
- 実行PHPファイルからモジュールPHPファイルを呼び出し、その戻り値に改行コードが含まれる理由について調査しています。
- 実行PHPファイルで文字列を受け取ると8バイトになり、実際には「NoError」の前に改行コード( )が挿入されています。
- どちらのPHPファイルもEUC-JP、改行コードLF、無駄な文字列や改行も含まず、改行コードも一緒に返却されてしまう場合の理由を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
実際にshell_execを叩いたのは今回が初めてなのでなんともいえませんが、 一応検証に利用したのは、WindowsXP+XAMPP(PHP5.2.2)と、Ubuntu+Apatch2(PHP5.2.4)です。 上記二つでは改行が発生されませんでした。PHPのバージョンによるという可能性、OS自体が出力をする際改行を含む可能性(どうだろう。)があるのかもしれませんね。 対症療法的ですが、shell_execで出力されたデータ全てにtrim関数で前後のスペースや改行を取り去るということで対処されてはいかがでしょうか。 <?php $Check = shell_exec($Command); $Check = trim($Check); ?> どちらにせよ、shell_exec関数自体がレンタルサーバなどで制限があったり、セキュリティの穴になりやすいので、微妙かもしれません。 ちなみに、shell_exec関数を叩かずとも、コマンドをバッククォート(Shift+@)で囲むことでも同じ動作が行えます。 <?php $Check = `$Command`; ?> こちらも念のため試してみてはいかがでしょうか。
その他の回答 (1)
- hogehoge78
- ベストアンサー率80% (433/539)
実際に、<?php echo "NoError!"?>とだけ記述したものを同様に取得してみましたが、改行コードは含まれませんでした。 一度、その取得するPHPスクリプトをブラウザ上や、シェル上で実行してみて、本当に改行コードが含まれないのか確認してみてはいかがでしょうか。
お礼
ご回答ありがとうございます。 私もまったく同じサーバでechoだけのプログラムを書いて実行してみたところ、やはり改行コードが混ざってしまいました。。。 他のサーバて試したところ、改行コードは混ざりませんでした。。 ということは、サーバの設定の問題でしょうか? もし心当たりあしましたら、ご教示いただけますでしょうか。
お礼
お返事遅くなり大変申し訳ございません。 とりあえず、そのスクリプト自体は一行の文字列しか返却しないAPIでしたので、 取り急ぎご教示いただいたtrimで対応しました。 >ちなみに、shell_exec関数を叩かずとも、コマンドをバッククォート(Shift+@)で囲むことでも同じ動作が行えます。 こちら、存じ上げておりませんでした! 試してみます。ありがとうございました