2013-10-08 3 views
0

У меня есть этот diretorio.php файл, который захватывает идентификатор пользователя в Joomla и создает каталог с этим идентификатором (если он не существует до сих пор):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 File System Docs] (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

Смежные вопросы