使用php创建txt文件失败

时间:2012-07-04 08:59:20

标签: php file-io

我正在尝试创建一个文件并在名为debug:

的文件夹中写入一条消息
 function debug($report){
   $file="/debug/debug.txt";
   file_put_contents($file,$report,FILE_APPEND | LOCK_EX);
 }

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

3 个答案:

答案 0 :(得分: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);
?>

答案 1 :(得分:1)

这对Lix的答案来说确实是个问题。

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

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

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

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

答案 2 :(得分:-1)

该代码没有错,如果错误未显示可能导致php配置。 请参阅错误报告Error Report

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