我正在尝试创建一个文件并在名为debug的文件夹中写入一条消息:
function debug($report){
$file="/debug/debug.txt";
file_put_contents($file,$report,FILE_APPEND | LOCK_EX);
}
调试文件夹在我的根目录中。但是无法创建文件。.为什么?
此代码将打开该文件夹的所有权限。
chmod('PATH_TO_FOLDER',0777);
根据您要对该文件夹执行的操作,您可以考虑授予它稍微有限的权限,仅允许特定用户读取/写入该文件夹。
以下是从 PHP 手册中获取的其他一些示例 - http://php.net/manual/en/function.chmod.php
<?php
// Read and write for owner, nothing for everybody else
chmod("/somedir/somefile", 0600);
// Read and write for owner, read for everybody else
chmod("/somedir/somefile", 0644);
// Everything for owner, read and execute for others
chmod("/somedir/somefile", 0755);
// Everything for owner, read and execute for owner's group
chmod("/somedir/somefile", 0750);
?>
这实际上是对Lix答案的抄本。
最常见的原因是当你使用mpd_php5在Apache下运行脚本时,因为你的php进程将作为apache UID(www-data
或其他什么)运行。 但是,默认情况下,您的调试目录将由具有 755 权限的帐户拥有。
是一种不好的做法,因为这将允许任何人在您的目录中创建文件,但暂时将权限设置为 777,然后使用 Q&D 脚本创建一个debug/logs
并将其权限设置为 755,然后再将调试目录返回到 755。
你会发现debug/logs
目录现在归 Apache UID 所有,并且可以由任何 Apache 进程写入。
这里的一个问题是,您将需要使用脚本来删除旧的调试文件,因为您自己的帐户没有执行此操作的权限。
该代码没有任何问题,如果未显示错误可能是 php 配置引起的。请参阅错误报告错误报告。
一般可能是权限引起的(见调试文件夹的权限)