2

わかりました、これが私のシナリオです。

私はfile.phpそれが次のものを含んでいます:

<?php
$output = shell_exec("php output.php");
echo $output;   
?>

そして、output.phpには次のものが含まれています。

<?php
echo "This is my output!";
?>

Webブラウザーから実行するとfile.php、次の出力が得られます。

‹ ÉÈ,V¢ÜJ…üÒ’‚ÒEÿÿp³*š

ただし、php output.phpシェルから直接同じものを実行すると、正しい出力が得られます。

This is my output!

これがエンコードの問題の一種であることはよく知っていますが、一生の間、それを解決する方法を理解することはできません。を使用して言語を設定してみましたputenv('LANG=en_US.UTF-8');。また、を使用して、を使用header('Content-Type: text/html; charset=UTF-8');して出力されているエンコードタイプを判別しようとしましmb_detect_encoding($out, 'UTF-8', true);た。結果なし。

exec()同じ、不正な形式の出力を生成します。

誰かがこれに光を当てて、shell_execとファイルの出力の間で何が起こっているのかについての洞察を提供して、出力の形式を正しくすることができれば、本当にありがたいです。

4

1 に答える 1

0

問題は、出力圧縮が有効になっているため、PHP 出力が 2 回圧縮されていたことです。

zlib.output_compression解決策は、ファイルにエントリを追加するか.htaccess、.php ファイルの先頭に次を含めることで無効にすることです。

ini_set('zlib.output_compression', 'Off');
于 2013-01-11T00:46:17.003 に答える