我通過PHP和exec()
使用ls
命令,並且獲得與通過shell運行相同命令時不同的輸出。當通過PHP年份和日期的月份運行ls
會改成月份名稱:當通過exec使用ls輸出時發生變化()
通過shell運行命令:
$ ls -lh /path/to/file
-rw-r--r-- 1 sysadmin sysadmin 36M 2011-05-18 13:25 file
通過PHP運行命令:
<?php
exec("ls -lh /path/to/file", $output);
print_r($output);
/*
Array
(
[0] => -rw-r--r-- 1 sysadmin sysadmin 36M May 18 13:25 file
)
*/
請注意:
- 當我通過cli運行PHP腳本時,不會發生此問題(它只發生在通過apache運行時)
- 我檢查了頁面的源代碼,以確保我所看到的是我所得到的(並且我得到的是月份名稱而不是正確的日期)
- 我還通過shell運行ls
命令作爲www-data
用戶查看ls
是否根據用戶給出不同的輸出(輸出始終與shell相同,即我使用yyyy-mm-dd而不是月份名稱獲取日期)
更新與答案
alias
是給我這樣的:
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
從這些別名我無法找到是時間顯示直接負責開關:
-C list entries by columns
-F append indicator (one of */=>@|) to entries
-A do not list implied . and ..
-a do not ignore entries starting with .
-l use a long listing format
但是使用--time-style=long-iso
在PHP確實解決問題。
在shell中輸入「別名」。也許你在那裏有一個別名。 – Leif
[ls -ltr使用PHP exec()]的可能重複(http://stackoverflow.com/questions/3157092/ls-ltr-using-php-exec) –