我使用mkdir()在代码中创建新文件,但由于某种原因,它设置了一个名为“daemon”的东西作为admin。我不能删除这些文件,编辑,访问,甚至移动这些文件。如何在代码中创建文件时改变这种情况?
<?php
$dir = 'myDir3';
// owner will be the user/group the PHP script is run under
if ( !file_exists($dir) ) {
mkdir ($dir, 0777);
}
file_put_contents ($dir.'/test.txt', 'Hello File');
$file = 'template.php';
if(file_exists($file)){
echo readfile($file);
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
ini_set("display_errors", 1);
copy($file, $dir.'/fake.php');
} else {
echo 'file does not exist';
}
?>
好的,再次感谢@blueweimer,澄清了您在MacOS上使用的是XAMPP(而不是XAMPP-vm);因为多亏了那个澄清,我才找到了你问题的正确答案,可以在这里找到。
详细说明一下链接中找到的答案:默认情况下,当在MacOS中的XAMPP中创建任何类型的文件夹或文件时,它使用httpd.conf文件中找到的用户和组(d代表“daemon”,这是对Unix系统中运行的进程的命名(如Linux和Mac,Mac与Unix有较大区别,但仍保留了一些相同的术语))。因此,通过更改在该文件中找到的用户和组,您可以更改保持服务器运行的用户。Apache使用这个用户访问XAMPP中的所有内容。
需要注意的是,在httpd.conf中更改文件时,您正在更改访问用户;但这不会自动更改已经创建的文件和文件夹的所有者。根据上面的链接,这些文件位于/applications/xampp/xamppfiles/
中,您必须将文件的所有者和文件夹本身更改为您在httpd.conf中将其更改为的新用户。
不要将此用户更改为您自己的用户,因为XAMPP上发生的任何安全故障都将允许任何可以访问您的XAMPP服务器的人远程访问您的用户。
首先,如果可能,请张贴一个代码片段,以便我们可以知道这是如何被访问的。
其次,我要为将所有这些都放在一个答案中表示歉意(信誉很低,所以我现在还不能发表评论),但是从php的mkdir手册页面来看,它似乎是以运行它的用户为所有者创建目录的。鉴于它将所有者设置为“daemon”,而您无法访问它,我认为可以安全地假设您没有建立默认权限(0777),而是将该文件作为守护进程运行。
您可以选择更改创建文件夹的权限:
php prettyprint-override"><?php
mkdir("/path/to/my/dir", 0777);
?>
或者,您可以使用chown命令将所有权从“daemon”更改为您创建文件夹的同一php文件中的另一个用户:
<?php
mkdir("/path/to/my/dir", 0700);
chown("/path/to/my/dir", "username");
?>
这个答案是根据所提供的信息给出的:您没有指定使用的Web服务器(您只是指定了html),也没有指定OS,所以我的理解是它是Linux发行版(否则,文件夹访问不是PHP的问题,而是Web服务器的权限问题)。
问题内容: 我没有找到关于如何注册一个将接口实现为Windows服务的类的非常好的示例(实际上我没有找到一个示例)。 我是否必须使用procrun注册该实现?但是实现该接口似乎没有意义,因为procrun可以将任何程序注册为Windows服务。 此外,procrun页面(http://commons.apache.org/proper/commons- daemon/procrun.html )上
问题内容: 我想将配置文件名称设置为整个程序包,但我不知道如何。如果在哪里不是简单的方法,那么我必须用注释标记包和子包中的每个类。 标签不支持这样的属性,所以我不知道。 问题答案: 您可以将个人资料设置为: 文件-用于xml配置 Java配置类 在它们的每一个中,您都可以对特定的软件包使用组件扫描。
问题内容: 我想在this的文本框中设置默认文件名。我可以设置吗? 问题答案: 使用以下代码: 您必须指定完整路径
我有一些具有两列的TableView-名称和大小;此表适用于File对象; PropertyValueFactory可以为列获取对象的属性,尝试搜索somenameProrperty、getSomename、isSomename;我需要从文件中获取length()方法。 此代码查看文件名(getName()方法),但长度列为空。知道我可以用factory从文件中获取length()吗?
快速笔记。这是我的高级NEA编程项目。有两个主要部分——一个是生成迷宫,用户必须在给定的时间段内通过它,该时间段当前没有实现,第二个部分是用户必须回答教育物理问题以获得最佳分数。问题从本地存储在我的系统上的文本文件中导入。然后,用户的分数和完成日期一起导出到本地文本文件中。 到目前为止,我的程序生成迷宫,用户可以自由移动。教育方面按预期工作。 我该从哪里开始,让墙壁充当物理屏障,而不仅仅是视觉屏障
问题内容: 在使用MVC3剃须刀做样本时,我写道: 在我更改web.config中的此键之前,我的ajax调用均无效: 我在这篇文章中阅读过:http : //weblogs.asp.net/owscott/archive/2010/11/17/mvc-3-ajax-redirecting-instead- of-updating- div.aspx 但是现在我的客户端验证了不能像以前那样工作。