2013-02-06 84 views
0

我有一個簡單的PHP文件爲DIR:PHP不寫一個文件+ RW權限

<?php 
$archivo = $_POST["name"]; 
$alineamiento = $_POST["alineamiento"]; 
$fp=fopen("$archivo","w"); 
fwrite($fp,$alineamiento); 
fclose($fp); 
?> 

這工作得很好,但是當我需要寫子文件夾中的文件(sub_mat):

<?php 
$archivo = $_POST["name"]; 
$alineamiento = $_POST["alineamiento"]; 
$fp=fopen("/var/www/SChip/sub_mat/$archivo","w"); 
fwrite($fp,$alineamiento); 
fclose($fp); 
?> 

這不起作用。我也嘗試沒有絕對路徑目錄,如:

<?php 
$archivo = $_POST["name"]; 
$alineamiento = $_POST["alineamiento"]; 
$fp=fopen("sub_mat/$archivo","w"); 
fwrite($fp,$alineamiento); 
fclose($fp); 
?> 

我在sub_mat文件夾rw權限。我用Chrome,FF和Opera試試這個,但它不起作用。我知道這一定很愚蠢,但我無法弄清楚問題所在。

EDIT

我修改腳本,加入system("mv ...")和初始化的值。 如果我在控制檯運行這個它工作正常,沒有錯誤,只是:

PHP公告:未定義指數:名稱/var/www/SChip/create-matrix.php第2行
PHP的通知:未定義指數:alineamiento在/var/www/SChip/create-matrix.php上線3

但是這是顯而易見的。但是,當我在Chrome運行或FF它不工作,沒有錯誤或警告。它只是將文件保留在當前文件夾中,並且不會執行mv

<?php 
$archivo = $_POST["name"]; 
$alineamiento = $_POST["alineamiento"]; 
$archivo = "testing"; 
$alineamiento = "test2"; 
$fp=fopen("$archivo","w"); 
fwrite($fp,$alineamiento); 
fclose($fp); 
system("mv $archivo custom_matrices_temporal/$archivo"); 
?> 
+4

如果您需要幫助,您需要爲人們提供錯誤。 – thatidiotguy

+6

fyi:不允許php寫入用戶提供的文件名。你可以用一個shell腳本替換你的索引文件 –

+1

如果沒有得到一個錯誤(應該通過警告級別),確保* filename *不是一個目錄。請參閱[fopen](http://php.net/manual/en/function.fopen.php)頁面和'is_dir()'的註釋。 – ficuscr

回答

3

的目錄需要執行x)的權限,以及允許的新文件的創建。