人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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
なぜタイムスタンプのフォーマットが違うのでしょうか。
また、コンソールでの出力と同じにする方法を教えて下さい。

●質問者: loveinyou1989
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:DAT Ls PHP root test
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

想像だけど、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"
◎質問者からの返答

> % echo $LC_TIME

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

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

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ