0

適切にローカライズする必要があるアプリを作成するのに忙しいのですが、常にポータブル オブジェクト テンプレートを手動で作成するのは面倒です。

このコードの理由を誰か教えてください:

<?php
exec("xgettext -d templates/base -s -j -o default.pot templates/base/view.php", $output);
?>

何もしていませんが、コマンドラインでそれを実行すると、実際に default.pot ファイルに見つかったエントリが入力されますか?

4

1 に答える 1

3

このような問題は、パスが原因であることがほとんどです。マシン上で php/apache を実行しているユーザー (通常は「nobody」または「www-data」) には、おそらく PATH 環境変数が設定されていませんxgettext。その変数が設定されていない場合、そのコマンドを実行するときに (そのユーザーとして) bash はバイナリを見つけることができません。

これが問題であることを確認する最善の方法は、完全なパスを入力xgettextすることです。不明な場合はwhich xgettext、bash で実行してパスを取得し、それをハードコーディングできます。動作する場合は、そのパスをそのままにしておくか、コードを移植可能にする必要がある場合は、apache ユーザーの PATH 環境変数にパスを追加するなどの別の解決策を見つけてください。

于 2012-07-24T12:47:30.147 に答える