2013-10-08 152 views
0

我有抓住的Joomla中的用戶ID並創建一個具有ID的目錄(如果它不存在尚未)這diretorio.php文件:PHP:保存文件到指定目錄

/* Get the current user id */ 
$user = JFactory::getUser(); 
$usr_id = $user->get('id'); 

/*Define the path to this user's directory */ 
$diretorio=$_SERVER['DOCUMENT_ROOT']."/Apps/files/".$usr_id; 

/*Create the user's directory if it doesn't exist */ 
if (!file_exists($diretorio) and !is_dir($diretorio)) { 
    mkdir($diretorio, 0755); 
}; 

現在,我想保存數據的文件中的對象,使用Ajax的觸發另一個PHP文件上面創建的目錄:

$myFile = $diretorio."/dados.json"; 
$fh = fopen($myFile, 'w') or die("não é possível abrir o ficheiro"); 
$stringData = $_POST['data']; 
$stringData='{ "data":'.json_encode($stringData).'}'; 
fwrite($fh, $stringData); 
fclose($fh); 

但是,不創建的文件。如果我將第一行替換爲:

$myFile = "dados.json"; 

它將在存儲此PHP腳本的同一目錄中創建文件。

+0

我會電子書籍採取看看[的Joomla文件系統文件(HTTP:/ /docs.joomla.org/How_to_use_the_filesystem_package) – Lodder

+0

您是否配置了PHP來顯示/記錄所有類型的錯誤消息?什麼'fwrite()'返回? –

+0

它不會返回任何錯誤。即使報告標準設置爲最大值 –

回答

0

我會建議使用Joomla編碼,像這樣的標準:

$user = JFactory::getUser(); 
$usr_id = $user->get('id'); 

$diretorio = JPATH_SITE . "/Apps/files/" . $usr_id; 

if (!JFolder::exists($diretorio)) { 
    JFolder::create($diretorio, 0775); 
} 

$myFile = $diretorio."/dados.json"; 

$stringData = $_POST['data']; 
$stringData = '{ "data":'.json_encode($stringData).'}'; 
JFile::write($myFile, $stringData); 

JPATH_SITE是你的Joomla站點的根目錄

+0

儘管我的推薦做法是讓您的默認文件** dados.json **爲空,並在添加內容並將其保存之前將其移至新創建的文件夾 – Lodder

+0

謝謝,我改變了編碼標準,它創建了目錄,但不包含其中的文件dados.json。該文件必須位於此特定目錄中,因爲多個用戶可能同時使用它。 –

+0

嗯,這是奇怪的。我剛剛在我的網站上測試了代碼,它運行良好 – Lodder