0

我正在尝试创建一个文件并在名为 debug 的文件夹中写入一条消息:

 function debug($report){
   $file="/debug/debug.txt";
   file_put_contents($file,$report,FILE_APPEND | LOCK_EX);
 }

调试文件夹位于我的根目录中。但是文件无法创建..为什么?

4

3 回答 3

2

此代码将打开文件夹的所有权限。

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);
?>
于 2012-07-04T09:04:45.600 回答
1

这确实是对Lix的回答的补充。

最常见的原因是当您使用 mpd_php5 在 Apache 下运行脚本时,因为您的 php 进程将作为 apache UID(www-data或其他)运行。但是,默认情况下,您的调试目录将由您的帐户拥有,具有 755 权限。

我建议将权限设置为 777 是不好的做法,因为这将允许任何人在您的目录中创建文件,而是暂时将权限设置为 777,然后使用 Q&D 脚本创建一个debug/logs并将其权限设置为 755,之前将调试目录返回到 755。

您会发现该debug/logs目录现在由 Apache UID 拥有,并且可以由任何 Apache 进程写入。

这里的一个问题是您将需要使用脚本来删除旧的调试文件,因为您自己的帐户将无权执行此操作。

于 2012-07-04T10:05:01.707 回答
-1

该代码没有任何问题,如果未显示错误可能是 php 配置引起的。请参阅错误报告错误报告

通常它可能是由权限引起的(参见调试文件夹的权限)

于 2012-07-04T09:12:24.600 回答