2014-10-09 60 views
0

寫入文件,而我的本地機器上測試下面的代碼,報告沒有錯誤。但是,在我們的服務器上測試它後,我得到了以下奇怪的錯誤:php不在服務器上寫文件。我使用錯誤而在PHP

代碼:

$myfile = fopen("results/co".$a[$i].".txt", "w") or die("Unable to open file!"); 
fwrite($myfile,"some text"); 
fclose($myfile); 

所以在這種情況下創建任何文件。 。 當我嘗試替換文件名 「結果/ CO」 $ A [$ I]與它的價值。 「TXT」: 「結果/ co00112test.txt」:

$myfile = fopen("results/co00112test.txt", "w") or die("Unable to open file!"); 
fwrite($myfile,"some text"); 
fclose($myfile); 

它工作得很好。

我也試過如下:

$name = "results/co".$a[$i].".txt"; 
$myfile = fopen($name, "w") or die("Unable to open file!"); 
fwrite($myfile,"some text"); 
fclose($myfile); 

又沒有希望了。

有什麼能爲這個錯誤的原因是什麼?

+0

您是否嘗試過使用「W +」書面方式模式......還什麼是您的服務器 – justrohu 2014-10-09 07:44:32

回答

0

如果當你把一些靜態文件名的代碼工作正常,很明顯,你的變量$a[$i]是錯誤的。

您可以繼續這種方式進行調試:

$name = "results/co".$a[$i].".txt"; 
var_dump($name); 

名稱應顯示一些奇怪的,並會告訴你發生了什麼文件。

0

這可能是因爲權限的所有。你的php用戶沒有文件夾的權限,你想創建文件的位置,或者沒有文件的權限,你正在嘗試編輯(如果文件已經存在)。

你可以閱讀這裏的權限(這是關於Ubuntu的,但它其實並不重要,這OS)爲文章全文:https://help.ubuntu.com/community/FilePermissions

你可以嘗試允許644,或者如果它不工作,你可以使用777 644更安全,因爲只有文件的所有者才能對其進行編輯,而不是操作系統的任何用戶。

您可以更改權限,文件夾和所有文件/文件夾中這樣說:

chmod -R 644 /path/to/folder/ 

我認爲644是標準的目錄文件和755。

您可以更改文件/文件夾的所有者是這樣的:

chown name_of_user:name_of_group /path/to/folder 
0

你的文件名與雙零字符開頭,所以它可能是一個問題。

這是行不通的:

$number = 112; 
$file_name = "results/co".$number."test.txt"; 

這應該工作:

$number = 112; 
$number_pad = str_pad($number, 5, '0', STR_PAD_LEFT); 
$file_name = "results/co".$number_pad."test.txt"; 
+0

不,它的PHP版本不,文件名以'co'開頭。 – 2014-10-09 08:16:42

+0

我的意思是你的變量$ a [$ i] – Yoric 2014-10-09 08:18:53