Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:将文件保存到特定目录_Php_Joomla - Fatal编程技术网

PHP:将文件保存到特定目录

PHP:将文件保存到特定目录,php,joomla,Php,Joomla,我有一个diretorio.php文件,它在Joomla中获取用户id并创建一个具有该id的目录(如果它还不存在的话): 现在,我想在对象中保存一个包含数据的文件,使用Ajax将另一个PHP文件触发到上面创建的同一目录: $myFile = $diretorio."/dados.json"; $fh = fopen($myFile, 'w') or die("não é possível abrir o ficheiro"); $stringData = $_POST['data']; $str

我有一个diretorio.php文件,它在Joomla中获取用户id并创建一个具有该id的目录(如果它还不存在的话):

现在,我想在对象中保存一个包含数据的文件,使用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脚本的同一目录中创建文件。

我建议使用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站点的根目录

我建议您查看一下您是否配置了PHP来显示/记录所有类型的错误消息?
fwrite()
返回什么?它不返回任何错误。即使将报告标准设置为Maximum,但我建议您使用默认文件dados.json(该文件为空)并将其移动到新创建的文件夹中,然后再添加内容并保存它,我更改了编码标准,它创建了目录,但没有创建其中的文件dados.json。文件必须在这个特定的目录中,因为可能有几个用户同时使用它。嗯,这很奇怪。我刚刚在我的站点上测试了代码,如果$myFile=“dados.json”它在第二个php脚本所在的同一目录中创建了该文件,那么代码就工作得很好。如果$myFile=$diretorio.“/dados.json”那么什么都不会发生。代码在两个单独的php文件中?将所有文件移到同一个文件中,它就会工作
$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);