PHP。コマンドラインとブラウザからshell_execを呼び出すときの異なるエンコーディング

マルコス・フェルナンデス

私はこのphpスクリプトを持っています:

<?php
  $cmd_desformat = "/usr/local/bin/process /tmp/input.txt > /tmp/output.txt";
  shell_exec($cmd_desformat);

input.txtは、以下を含むUTF-8ファイル(「file-i」でチェック)です。

Buenos días

/ usr / local / bin / processは、私が広く使用していてこの問題が発生したことのないサードパーティのバイナリ実行可能ファイルです。

問題は、これをブラウザから実行すると、次のようになることです。

http://localhost/test.php

結果のoutput.txtは、以下を含むUS-ASCIIファイルです。

Buenos d?as [][

ただし、これをコマンドラインから実行すると、次のようになります。

php test.php

結果のoutput.txtは、次のようなUTF-8ファイルです。

Buenos días [][

ユーザーwww-data一緒にコマンドラインから実行して、ブラウザーの動作を再現できるかどうかを確認しようとしましたが、結果は再び正しいものになります。exec代わりに使ってみましたshell_execが、結果は同じです。FirefoxとChromeでも試してみました。

ブラウザから呼び出されたときに機能する必要があります。何か案は?

BA_Webimax

PHPCLI環境はそれと同じではありませんshell_execコンテンツを適切な方法で返す方法には2つの可能性があります。

最も簡単な方法はenv -ishell_exec呼び出しを呼び出して環境をリセットすることです

<?php
  $cmd_desformat = "env -i /usr/local/bin/process /tmp/input.txt > /tmp/output.txt";
  shell_exec($cmd_desformat);

デフォルトの環境が正しく設定されていない場合、これは機能しない可能性があります。その場合は、を使用して明示的に設定する必要がありますputenv()

<?php
  putenv('LANG=en_US.UTF-8'); // Set this to the language you need
  $cmd_desformat = "/usr/local/bin/process /tmp/input.txt > /tmp/output.txt";
  shell_exec($cmd_desformat);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PHPのshell_execから呼び出されたときにMySQLテーブルのアウトラインが表示されない

分類Dev

cmd から powershell コマンドを呼び出すときのエラー

分類Dev

コマンドラインから呼び出すときにCMakeにインクルードディレクトリを追加する

分類Dev

C ++ 11より前のコードからC ++ 11ライブラリを呼び出すときにセマンティクスを移動する

分類Dev

VBAからWinSCPコマンドラインを呼び出すときに、「コマンドのパラメーターが多すぎます」を取得する

分類Dev

Coldfusionからの出力の文字列をGZipすると、ブラウザで「コンテンツエンコーディングエラー」が発生する

分類Dev

関数を呼び出すときとインラインコードを呼び出すときの動作が異なる

分類Dev

ユーザーから入力を取得し、Pythonのサブプロセス呼び出しによってトリガーされるインタラクティブなコマンドラインプログラムに渡す方法は?

分類Dev

c#クラスのインスタンスで呼び出すことができるクラスメソッドをコーディングする方法

分類Dev

Ghostscriptは、コマンドラインから呼び出されたときに出力ウィンドウを抑制します

分類Dev

クラウドからローカルホストにshell_execコマンドを実行する方法

分類Dev

辞書からのJSONエンコーディング['dataWithJSONObjectを呼び出すことはできません...]

分類Dev

異なるパラメータを持つ異なるコンポーネントから呼び出すことができる1つの共通の角度ng2-チャート(棒グラフ)コンポーネントを作成する方法

分類Dev

(Vimエディターで開いた)ファイルからコンテンツをコピーしてFirefoxブラウザーのアドレスバーに貼り付けるVimコマンドとは何ですか?

分類Dev

PHPコアとデフォルトのプレインストールライブラリはshell_execをどこで使用しますか?

分類Dev

名前付きパイプの入力コマンドラインが呼び出されたときにハングするのはなぜですか?

分類Dev

コマンドラインを使用してブラウザから画像をダウンロードすることはできますか?

分類Dev

フラグメントからインテントを呼び出すときにエラーが発生する(ユーザーログイン)

分類Dev

コマンドラインからcurlを実行できますが、シェルexecから呼び出すことはできません

分類Dev

MATLABコンパイラアプリケーションからPythonを呼び出すときにPythonライブラリを呼び出せない

分類Dev

コントローラからSignalRコアハブメソッドを呼び出すときの接続ID

分類Dev

アプリのフォアグラウンドに入るときに特定のコードを呼び出す

分類Dev

MVVMバインディングからコマンドを呼び出す方法

分類Dev

プライマリモニターのブラウザーが、セカンダリモニターとは異なるカラーコードで一部の色をレンダリングするのはなぜですか?

分類Dev

他のクラスからJavaスイングコントロールとコンテナを呼び出す

分類Dev

コマンドラインからSlowCheetahを呼び出すことはできますか?

分類Dev

client.request_spot_instancesメソッドを呼び出すときにスローされるAWSBoto3BASE64エンコーディングエラー

分類Dev

コントローラからコマンドを呼び出すことが機能しない

分類Dev

pg_dump: cmd から呼び出すときのコマンドライン引数が多すぎます

Related 関連記事

  1. 1

    PHPのshell_execから呼び出されたときにMySQLテーブルのアウトラインが表示されない

  2. 2

    cmd から powershell コマンドを呼び出すときのエラー

  3. 3

    コマンドラインから呼び出すときにCMakeにインクルードディレクトリを追加する

  4. 4

    C ++ 11より前のコードからC ++ 11ライブラリを呼び出すときにセマンティクスを移動する

  5. 5

    VBAからWinSCPコマンドラインを呼び出すときに、「コマンドのパラメーターが多すぎます」を取得する

  6. 6

    Coldfusionからの出力の文字列をGZipすると、ブラウザで「コンテンツエンコーディングエラー」が発生する

  7. 7

    関数を呼び出すときとインラインコードを呼び出すときの動作が異なる

  8. 8

    ユーザーから入力を取得し、Pythonのサブプロセス呼び出しによってトリガーされるインタラクティブなコマンドラインプログラムに渡す方法は?

  9. 9

    c#クラスのインスタンスで呼び出すことができるクラスメソッドをコーディングする方法

  10. 10

    Ghostscriptは、コマンドラインから呼び出されたときに出力ウィンドウを抑制します

  11. 11

    クラウドからローカルホストにshell_execコマンドを実行する方法

  12. 12

    辞書からのJSONエンコーディング['dataWithJSONObjectを呼び出すことはできません...]

  13. 13

    異なるパラメータを持つ異なるコンポーネントから呼び出すことができる1つの共通の角度ng2-チャート(棒グラフ)コンポーネントを作成する方法

  14. 14

    (Vimエディターで開いた)ファイルからコンテンツをコピーしてFirefoxブラウザーのアドレスバーに貼り付けるVimコマンドとは何ですか?

  15. 15

    PHPコアとデフォルトのプレインストールライブラリはshell_execをどこで使用しますか?

  16. 16

    名前付きパイプの入力コマンドラインが呼び出されたときにハングするのはなぜですか?

  17. 17

    コマンドラインを使用してブラウザから画像をダウンロードすることはできますか?

  18. 18

    フラグメントからインテントを呼び出すときにエラーが発生する(ユーザーログイン)

  19. 19

    コマンドラインからcurlを実行できますが、シェルexecから呼び出すことはできません

  20. 20

    MATLABコンパイラアプリケーションからPythonを呼び出すときにPythonライブラリを呼び出せない

  21. 21

    コントローラからSignalRコアハブメソッドを呼び出すときの接続ID

  22. 22

    アプリのフォアグラウンドに入るときに特定のコードを呼び出す

  23. 23

    MVVMバインディングからコマンドを呼び出す方法

  24. 24

    プライマリモニターのブラウザーが、セカンダリモニターとは異なるカラーコードで一部の色をレンダリングするのはなぜですか?

  25. 25

    他のクラスからJavaスイングコントロールとコンテナを呼び出す

  26. 26

    コマンドラインからSlowCheetahを呼び出すことはできますか?

  27. 27

    client.request_spot_instancesメソッドを呼び出すときにスローされるAWSBoto3BASE64エンコーディングエラー

  28. 28

    コントローラからコマンドを呼び出すことが機能しない

  29. 29

    pg_dump: cmd から呼び出すときのコマンドライン引数が多すぎます

ホットタグ

アーカイブ