2014-02-14 75 views
0

嘗試使用PHP創建備份。爲什麼file_put_contents()給我的文件瘋狂的名字?

$filename = getcwd() . "/backup/" . $slug . date("Y-m-d-h:i:sa") . ".inc"; 
echo $filename; 
file_put_contents($filename, $content); 

預期輸出文件名:

myfile2014-02-13-4:53:04pm.inc 
myfile2014-02-13-4:54:29pm.inc 

實際輸出文件名:

T6L3PF~C.INC 
TAT6YB~L.INC 

而且,它走的是一條很長的時間來創建該文件。這真是奇怪的事情:我也在同一個腳本中創建另一個文件 - 除了不在備份目錄中。

$filename = getcwd() . "/" . $slug . ".html"; 
file_put_contents($filename, $content); 

它總是完美的工作,並始終立即創建,沒有延遲。

myfile.html 

備份文件不超過一分鐘創建的,即使它前面的腳本.html一部分!

+3

聽起來像是一個Windows問題給我。 –

+0

我使用的是OSX,不知道服務器是什麼,我認爲它是LAMP。 – brentonstrine

+0

你在做什麼備份? –

回答

1

貌似問題是在這裏:

date("Y-m-d-h:i:sa") 

應該產生:

2014-02-13-4:53:04pm 

但顯然:被搞亂一切。將其更改爲date("Y-m-d-h.i.sa"),現在一切正常。

0

smb://my/path

那麼你去。由於「:」在Windows中不是有效的文件路徑字符,因此Samba會提供一個假文件名,而不是您期望的文件名。改爲使用SSH進行安裝。

+0

安裝它的方式是否真的有所作爲?該腳本在Linux服務器(AFAICT)上運行,並將該文件寫入同一服務器上的目錄。 – brentonstrine

+0

是的,它的確如此。 Samba假設客戶端將是Windows機器,併爲其提供Windows兼容的文件名。 –

+0

但是,如果我卸載驅動器,然後嘗試在瀏覽器中查看該文件,它仍然是相同的,沒有涉及桑巴。或者我誤解了Samba的工作原理? Samba是否控制LAMP服務器上的所有文件創建? – brentonstrine