phpの質問です。

$test=`ls -l`
で変数に格納される内容が、コンソールで ls -l を実行した場合と異なります。
PHP内でバッククオートで実行した場合:
-rw-r--r-- 1 root root 595365 Jul 8 2011 foolog.dat
コンソールで実行した場合:
-rw-r--r-- 1 root root 595365 2011-07-08 08:20 foolog.dat
なぜタイムスタンプのフォーマットが違うのでしょうか。
また、コンソールでの出力と同じにする方法を教えて下さい。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:
  • 終了:2011/07/25 12:51:01
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4964ベストアンサー獲得回数2150

ポイント100pt

想像だけど、LC_TIME 環境変数の違いじゃないかな?

コマンドプロンプトで、

% echo $LC_TIME

で出力した値をメモっておいて、php のソースで、

$test=`env LC_TIME=XXX ls -l`

ってすると、どうなる?

XXX は、コマンドプロンプトで表示した LC_TIME の値ね。


LC_ALL や LANG も関係あるかも。


もし、ls が GNU のやつだったら、オプションで時刻の表示形式を変えられます。

ls -l --time-style="+%Y-%m-%d %H:%M"
id:loveinyou1989

> % echo $LC_TIME

を実行してみましたが、空で何も表示されませんでした・・・しかし、

> ls -l --time-style="+%Y-%m-%d %H:%M"

をPHP内で実行したところ、欲していた出力が得られて、目的は達成されました。

質問は終了しますが、その LC_TIME というモノについては今後のためにも別途調べます。

ありがとうございました。

2011/07/25 12:50:46

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません